全国计算机等级考试二级教程课后习题及答案.doc_第1页
全国计算机等级考试二级教程课后习题及答案.doc_第2页
全国计算机等级考试二级教程课后习题及答案.doc_第3页
全国计算机等级考试二级教程课后习题及答案.doc_第4页
全国计算机等级考试二级教程课后习题及答案.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机等级考试二级教程C语言程序设计课后题及参考答案第一章 程序设计基本概念1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是_。答案:.exe 1.2 C语言源程序文件的后缀是_,经过编译后,生成文件的后缀是_,经过连接后,生成文件的后缀是_。答案:.c .obj .exe 1.3 结构化程序由_、_、_三种基本结构组成。答案:顺序、选择、循环第二章 C程序设计的初步知识一、选择题 2.1 以下选项中正确的整型常量是 A)12. B)-20 C)1,000 D)4 5 6 答案:B2.2 以下选项中正确的实型常量是 A)0 B)3. 1415 C)0.32910(2)(10的2次方) D).871 答案:D 2.3 以下选项中不正确的实型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下选项中不合法的用户标识符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下选项中不合法的用户标识符是 A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C语言中运算对象必需是整型的运算符是 A)% B)/ C)! D)* 答案:A 2.7 可在C程序中用作用户标识符的一组标识符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a+ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下叙述中正确的是 A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。 B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。 C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。 D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。 答案:B 2.10 以下叙述中正确的是 A)在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B)C程序由主函数组成。 C)C程序由函数组成。 D)C程序由函数和过程组成。 答案:C 2.11 TURBO C中int类型变量所占字节数是 A)1 B)2 C)3 D)4 答案:B 2.12 不合法的八进制数是 A)0 B)028 C)077 D)01 答案:B 2.13 不合法的十六进制数是 A)oxff B)0Xabc C)0x11 D)0x19 答案:A二、填空题 2.14 若k为int整型变量且赋值11。请写出运算k+后表达式的值A)_和变量的值B)_。 答案:11、12 2.15 若x为double型变量,请写出运算x=3.2,+x后表达式的值A)_和变量的值B)_。 答案:4.2、4.2 2.16 函数体由符号_开始,用符号_结束。函数体的前面是_部分,其后是_部分。 答案:、定义、执行 2.17 C语言中的标识符可分为_、_、和预定义标识符三类。 答案:关键字、用户标识符 2.18 在C语言程序中,用关键字_定义基本整型量,用关键字_定义单精度实型变量,用关键字_定义双精度实型变量。 答案:int、float、double 2.19 把a1、a2定义成单精度实型变量,并赋初值1的定义语句是_。 答案:float a1=1.0,a2=1.0; 2.20 C程序中定义的变量,代表内存中的一个_。 答案:存储单元 2.21 表达式3.5+1/2的计算结果是_。 答案:3.5 2.22 对以下数学式,写出三个等价的C语言表达式_、_、_。 ab c 答案:a*b/c、a/c*b、b/c*a 2.23 表达式s=10应当读做“_”。 答案:将10赋给变量s 2.24 计算机中内存储器的最小存储单位称_,其中能容纳的数是_。 答案:位、0或1 2.25 通常一个字节包含_个二进制位。在一个字节中能存放的最大(十进制)整数是_,它的二进制数的形式是_;最小(十进制)整数是_,它的二进制数的形式是_。 答案:8、255、1111 1111、-128、1000 00002.26 当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是_、最小(十进制)整数是_,它的二进制数的形式是_。 答案:65535、-32768、1000 0000 0000 0000 2.27 在C语言中整数可用_进制数、_进制数和_进制数三种数制表示。 答案:十、八、十六第三章、顺序结构一、选择题3.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是 A) a=b=c=100; B) d+; C) c+b; D) d=(c=22)-(b+); 答案:C 3.2 以下选项中不是C语句的是 A) int i; i+; printf(%dn, i); B) ; C) a=5,c=10 D) ; 答案:C 3.3 以下合法的C语言赋值语句是 A) A=B=58 B) k=int(a+b); C) a=58,b=58 D) -i; 答案:D 3.4 以下程序的输出结果是 A) 0 B) 1 C) 3 D)不确定的值 main() int x=10,y=3; printf(%dn, y=x/y); 答案:C 3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是 A) read(a,b,c); B) scanf(%d%d%d,a,b,c); C) scanf(%D%D%D,&a,&b,&c); D) scanf(%d%d%d,&a,&b,&c); 答案:D 3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是 A) 10 22 33 B) 10.0,22.0,33.0 C) 10.0 22.0 33.0 D) 10 22 33 scanf(%f %f %f, &a, &b, &c); 答案:B 3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是 A) a=a+b,b=a-b,a=a-b; B) t=a,a=b,b=t; C) a=t; t=b; b=a; D) t=b; b=a; a=t; 答案:C3.8 若变量已正确定义,以下程序段的输出结果是 A) 输出格式说明与输出项不匹配,输出无定值 B) 5.17000 C) 5.168000 D) 5.169000x=5.16894; printf(%fn,(int)(x*1000+0.5)/(float)1000);答案:D3.9 若有以下程序段,c3中的值是 A) 0 B) 1/2 C) 0.5 D) 1int c1=1,c2=2,c3; c3=c1/c2;答案:A 3.10 若有以下程序段,其输出结果是 A) 0,0,-10 B) 0,0,5 C) -10,3,-10 D) 3,3,-10int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(%d,%d,%dn,a,b,c);答案:B 3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是 A) a=98,b=765,c=4321 B) a=10,b=432,c=8765 C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765,c=4321.0main() int a; float b,c; scanf(%2d%3f%4f,&a,&b,&c); printf(na=%d,b=%f,c=%fn,a,b,c); 答案:C 3.12 以下程序的输出结果是 A) a=%2,b=%5 B) a=2,b=5 C) a=%d,b=%d D) a=%d,b=%dmain() int a=2,b=5; printf(a=%d,b=%dn,a,b); 答案:D3.13 若int类型占两个字节,则以下程序段的输出是 A) -1,-1 B) -1,32767 C) -1,32768 D) -1,65535int a=-1; printf(%d,%un,a,a);答案:D 3.14 以下程序段的输出是 A) *496 * B) * 496* C) *000496* D)输出格式符不合法int x=496; printf(*%-06d*n,x);答案:A 3.15 以下程序段的输出是 A) |3.1415| B) | 3.0| C) | 3| D) | 3.|float a=3.1415; printf(|%6.0f|n,a);答案:C 3.16 以下程序段的输出是 A) |2345.67800| B) |12345.6780| C) |12345.67800| D) |12345.678| printf(|%10.5f|n,12345.678);答案:C 3.17 以下程序段的输出是 A) *0000057.66* B) * 57.66* C) *0000057.67* D) * 57.67* float a=57.666; printf(*%010.2f*n,a);答案:C 3.18 若从终端输入以下数据,要给变量C赋以283.19,则正确的输入语句是 A) scanf(%f,c); B) scanf(%8.4f,&c); C) scanf(%6.2f,&c); D) scanf(%8,&c); 283.1900 表示Enter键答案:由于印刷错误,本题没有正确答案。改正意见: 把选项A改为:scanf(%f,&c);或者把选项D改为:scanf(%8f,&c);则可分别选择A或者D为正确答案。 3.19 若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(代表空格) A) 3.129.0 B) a=3.12b=9 C) a=3.12,b=9 D) a=3.12,b=9 scanf(a=%f,b=%f,&a,&b); 表示Enter键 答案:C 3.20 以下程序的输出结果是 A) 9 8 B) 8 9 C) 6 6 D) 以上三个都不对#include math.h main() double a=-3.0, b=2; printf(%3.0f %3.0fn,pow(b,fabs(a),pow(fabs(a),b); 答案:B二、填空题3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。 (1)_(2)_(3)_ int i=-200,j=2500; printf(1) %d %d,i,j); printf(2) i=%d, j=%dn,i,j); printf(3) i=%dn j=%dn,i,j);答案: -200 2500 i=-200, j=2500 i=-200 j=2500 3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时 scanf(%d,&i); scanf(%d,&j); scanf(%d,&k); 当执行第一个输入语句,从键盘输入: 12.3 表示Enter键则变量i、j、k的值分别是_、_、_。答案:12、0、0 3.23 复合语句在语法上被认为是_。空语句的形式是_。 答案:一条语句、 ; 3.24 C语句的最后用_结束。 答案:; 3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式_、_、_。 int k; float a; double x; scanf(%d%f%lf,&k,&a,&x); printf(k=%d,a=%f,x=%fn,k,a,x);答案: (1) 100 25.81 1.89234 (2) 100 25.811.89234 (3) 100 25.81 1.89234 3.26 以下程序段的输出结果是_。 int x=0177; printf(x=%3d,x=%6d,x=$%6o,x=%6x,x=%6un,x,x,x,x,x);答案:x=127,x= 127,x= 177,x= 7f,x= 127 3.27 以下程序段的输出结果是_。 int x=0177; printf(x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%06dn,x,x,x,x,x);答案:27、x=127,x=127 ,x=$127 ,x=$000127,x=%06d3.28 以下程序段的输出结果是_。 double a=513.789215; printf(a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lfn,a,a,a,a);答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500第四章、选择结构一、 选择题 4.1 下列运算符中优先级最高的运算符是 A) ! B) % C) -= D) & 答案:A 4.2 下列运算符中优先级最低的运算符是 A) | B) != C) =y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(y=z) 答案:A 4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 A) a&b B) a=b C) a|b+c&b-c D) !(ab)&!c|1) 答案:D 4.5 以下程序的输出结果是 A) 0 B) 1 C) 2 D) 3main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(%dn,c); 答案:C4.6 以下程序的输出结果是 A)1 B) 2 C) 3 D) 4main() int w=4,x=3,y=2,z=1; printf(%dn,(wx?w:zy?z:x); 答案:A 4.7 若执行以下程序时从键盘上输入3和4,则输出结果是 A) 14 B) 16 C) 18 D) 20main() int a,b,s; scanf(%d%d,&a,&b); s=a; if(ab) s=b; s*=s; printf(%dn,s); 答案:B4.8 下面的程序片段所表示的数学函数关系是 -1(x0)1(x0)0(x0)-1(x0)y=-1; if(x!=0) y=1; if(x0) y=1; else y=0;答案:本题没有正确答案。程序片段所表示的数学函数关系应该是 0(x0) 4.9 运行以下程序后,输出 A) * B) & C) #& D) 有语法错误不能通过编译main() int k=-3; if(k、=、=、=、!= 4.13 C语言中的逻辑运算符按优先级别是_、_、_。 答案:!、&、| 4.14 C语言中的关系运算符和逻辑运算符的优先级别是_、_、_、_、_、_、_。 答案:!、=、!=、&、| 4.15 C语言中逻辑运算符_的优先级高于算术运算符。 答案:! 4.16 将下列数学式改写成C语言的关系表达式或逻辑表达式A)_B)_。 A)a=b或a4 答案:A)a=b|a4|x100) printf(%dn,a100); else printf(%dn,a0) B) !0 答案:A) xc) b=a; a=c; c=b;答案:3、2、2 4.20 若变量已正确定义,以下语句段的输出结果是_。 x=0; y=2; z=3; switch(x) case 0: switch(y=2) case 1: printf(*); break; case 2: printf(%); break; case 1: switch(z) case 1: printf($); case 2: printf(*); break; default : printf(#); 答案:*#第五章、循环结构一、 选择题5.1 以下程序段的输出结果是 A) 9 B) 1 C) 11 D) 10int k,j,s; for(k=2; k6; k+,k+) s=1; for(j=k; j6; j+) s+=j; printf(%dn, s);答案:D 5.2 以下程序段的输出结果是 A) 12 B) 15 C) 20 D) 25int i,j,m=0; for(i=1; i=15; i+=4) for(j=3; j7) n-; printf(%dn, n); 答案:B 5.4 以下程序段的输出结果是 A) 1 B) 3 0 C) 1 -2 D) 死循环int x=3; do printf(%3d,x-=2); while(!(-x);答案:C 5.5 以下程序段的输出结果是 A) 15 B) 14 C) 不确定 D) 0main() int i,sum; for(i=1; i0; y-) if(y%3=0) printf(%d, -y); continue; 答案:B 5.7 若x是int型变量,以下程序段的输出结果是 A) *3 #4 *5 B) #3 *4 #5 C) #3 *4#5 D) *3#4 *5for(x=3; x6; x+) printf(x%2)?(*%d)#%dn),x);答案:D 5.8 以下程序的输出结果是 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$main() int i; for(i=1; i=5; i+) if(i%2) printf(*); else contionue; printf(#); printf($n); 答案:A 5.9 以下叙述正确的是 A) do_while语句构成的循环不能用其它语句构成的循环来代替。 B) do_while语句构成的循环只能用break语句退出。 C) 用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。 D) 用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 答案:D 5.10 以下程序的输出结果是 A) 39 81 B) 42 84 C) 26 68 D) 28 70main() int x,i; for(i=1; ib; +b) i+; while(a+c) j+; do k+; while(ad+);答案:5、4、65.12 以下程序段的输出结果是_。int k,n,m; n=10; m=1; k=1; while(k=n) m*=2; printf(%dn,m);答案:死循环 5.13 以下程序的输出结果是_。main() int x=2; while(x-); printf(%dn,x); 答案:-1 5.14 以下程序段的输出结果是_。int i=0,sum=1; do sum+=i+; while(i5); printf(%dn,sum);答案:11 5.15 有以下程序段: s=1.0; for(k=1; k=n; k+) s=s+1.0/(k*(k+1); printf(%fn,s); 请填空,使下面的程序段的功能完全与之等同。 s=0.0; _; k=0; do s=s+d; _; d=1.0/(k*(k+1); while(_); printf(%fn,s);答案:d=1.0、k+、kamax) amax=x; if(_) amin=x; scanf(%f,&x); printf(namax=%fnamin=%fn,amax,amin); 答案:x=0、xamin第六章、字符型数据一、选择题 6.1 C语言中的简单数据类型有 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 答案:B 6.2 C语言中,字符(char)型数据在微机内存中的存储形式是 A) 反码 B) 补码 C) EBCDIC码 D) ASCII码 答案:D 6.3 设有语句char a=72;,则变量a A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法 答案:A 6.4 C语言中不合法的字符常量是 A) 0xff B) 65 C) & D) 028 答案:本题A)和D)选项都是不合法的字符常量。若A)选项改为xff,则正确。 6.5 C语言中不合法的字符串常量是 A) 121 B) y= C) nn D) ABCDx6d 答案:B 6.6 判断char型变量c是否为大写字母的最简单且正确的表达式是 A) A=c=A)&(c=Z) C) (A=c) D) (c=A)&(c=A&x=Z)?(x+32):x; printf(%cn,x); 答案:B 6.9 以下程序的输出结果是 A) 67,C B) B,C C) C,D D) 不确定的值main() char ch1,ch2; ch1=A+5-3; ch2=A+5-3; printf(%d,%cn,ch1,ch2); 答案:A 6.10 对以下程序,从第一列开始输入数据:2473,代表Enter。程序的输出结果是 A) 668977 B) 668966 C) 66778777 D) 6688766#include stdio.h main() int c; while(c=getchar()!=n) switch(c-2) case 0 : case 1 : putchar(c+4); case 2 : putchar(c+4); break; case 3 : putchar(c+3); default : putchar(c+2); break; printf(n); 答案:A 6.11 若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是(代表空格) A) 2.0%4.0# B) 2.0%4.0# C) 2%4# D) 2%4 scanf(%f%c%f%c,&a,&c1,&b,&c2); (代表Enter键) 答案:B二、填空题6.12 EOF的十进制值是_。 答案:-16.13 C语言中,字符占内存_个字节。 答案:1 6.14 调用C语言对字符处理的库函数时,在#include命令行中应包括的头文件是_。 答案:string.h 6.15 若输入字符A,在以下while语句执行后ch的值是_。 while(ch=getchar()=A); 答案:1 6.16 若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是_,请用代表Enter键。 scanf(%d%c%d%c%d%c%d%c,&w,&a,&x,&b,&y,&c,&z,&d); 答案:10A20B30C40D 6.17 若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是_。 char c1,c2; float a1,a2; scanf(%f%f,&a1,&a2); scanf(%c%c,&c1,&c2);答案:7.29101.298AB 6.18 若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是_。 char c1,c2; float a1,a2; scanf(%c%f%c%f,&c1,&a1,&c2,&a2);答案:A7.29B101.298 6.19 若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出各种从键盘正确输入数据的形式。 char c1,c2,c; scanf(%4c,&c1); scanf(%4c,&c2); scanf(%4c,&c3);答案:ABC第七章、函数一、选择题 7.1 以下说法中正确的是 A) C语言程序总是从第一个定义的函数开始执行 B) 在C语言程序中,要调用的函数必须在main函数中定义 C) C语言程序总是从main函数开始执行 D) C语言程序中的main函数必须放在程序的开始部分 答案:C 7.2 以下函数的类型是 A) 与参数x的类型相同 B) void类型 C) int类型 D) 无法确定fff(float x) printf(%dn,x*x); 答案:C 7.3 以下函数调用语句中,含有的实参个数是 A) 1 B) 2 C) 4 D) 5func( (exp1,exp2),(exp3,exp4,exp5);答案:B 7.4 以下程序的输出结果是 A) 11 B) 20 C) 21 D) 31fun(int a,int b) int c; c=a+b; return c; main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(%dn,r); 答案:C 7.5 以下程序的输出结果是 A) -1 B) 0 C) 1 D) 2main() int i=2,p; p=f(i,i+1); printf(%d,p); int f(int a, int b) int c; c=a; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c); 答案:A 7.6 以下程序的输出结果是 A) 0 B) 1 C) 6 D) 无定值fun(int a,int b,int c) c=a*b; main() int c; fun(2,3,c); printf(%dn,c); 答案:D 7.7 以下程序的输出结果是 A) 5.500000 B) 3.000000 C) 4.000000 D) 8.25double f(int n) int i; double s; s=1.0; for(i=1; i=n; i+) s+=1.0/i; return s; main() int i,m=3; float a=0.0; for(i=0; ieps; n+) s+=t; t=n*t/(2*n+1); return (2.0*_); 答案:n=1、s 7.12 以下函数用以求x的y次方。请填空。double fun(double x, int y) int i; double z; for(i=1; i_; i+) z=_; return z; 答案:=y、z*x 7.13 以下程序的功能是计算s=0!+1!+2!+3!+.+n!。请填空。long f(int n) int i; long s; s=_; for(i=1; i=n; i+) s=_; return s; main() long s; int k,n; scanf(%d,&n); s=_; for(k=0; k=n; k+) s=s+_; printf(%ldn, s); 答案:1L、s*i、0、f(k)第八章 指针 一、 选择题 8.1 若有定义:int x,*pb; 则以下正确的赋值表达式是 A) pb=&x B) pb=x C) *pb=&x D) *pb=*x 答案: A 8.2 以下程序的输出结果是 A) 因变量无定义输出不定值 B) 0 C) -1 D) 1#include main() printf(%dn,NULL); 答案: B 8.3 以下程序的输出结果是 A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7void sub(int x,int y,int *z) *z=y-x; main() int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(%d,%d,%dn,a,b,c); 答案: B 8.4 以下程序的输出结果是 A) 4 B) 6 C) 8 D) 10 main() int k=2,m=4,n=6; int *pb=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(%dn,n); 答案: C 8.5 已知指针p的指向如图8.5所示,则执行语句*p+; 后,*p的值是 A) 20 B) 30 C) 21 D) 31 答案: B 8.6 已知指针p的指向如图8.5所示,则表达式*+p的值是 A) 20 B) 30 C) 21 D) 31答案: B8.7 已知指针p的指向如图8.5所示,则表达式+*p的值是 A) 20 B) 30 C) 21 D) 31 答案: C 8.8 以下程序的输出结果是 A) 23 B) 24 C) 25 D) 26 void prtv(int *x) printf(%dn,+*x); main() int a=25; prtv(&a); 答案: D 8.9 以下程序的输出结果是 A) 运行出错 B) 100 C) a的地址 D) b的地址 main() int *k, *a b=100; a=&b; k=&a; printf(%dn,*k); 答案: B 8.10 以下程序的输出结果是 A) 4,3 B) 2,3 C) 3,4 D) 3,2 void fun(float *a,float *b) float w; *a=*a+*a; w=*a; *a=*b; *b=w; main() float x=2.0,y=3.0; float *px=&x,*py=&y; fun(px,py); printf(%2.0f,%2.0fn,x,y); 答案: C 8.11 以下程序的输出结果是 A) 9.000000 B) 1.500000 C) 8.000000 D) 10.500000 void sub(float x,float *y,float *z) *y=*y-1.0; *z=*z+x; main() float a=2.5,b=9.0,*pa,*pb; pa=&a,pb=&b; sub(b-a,pa,pa); printf(%fn,a); 答案: C 8.12 以下四个程序中不能对两个整形值进行交换的是 A) main() int a=10,b=20; swap(&a,&b); printf(%d%dn,a,b); swap(int *p, int *q) int *t,a; t=&a; *t=*p; *p=*q; *q=*t; B) main() int a=10,b=20; swap(&a,&b); printf(%d%dn,a,b); swap(int *p, int *q) int t; t=*p; *p=*q; *q=t; C) main() int *a,*b; *a=10,*b=20;swap(a,b); printf(%d%dn,*a,*b); swap(int *p, int *q) int t; t=*p; *p=*q; *q=t; D) main() int a=10,b=20; int *x=&a,*y=&b; swap(x,y); printf(%d%dn,a,b); swap(int *p, int *q) int t; t=*p; *p=*q; *q=st; 答案:C 二、 填空题 8.13 以下程序段的输出结果是_。 int *var,ab; ab=100; var=&ab; ab=*var+10; printf(%dn,*var);答案:100 8.14 以下程序的输出结果是_。 int ast(int x,int y,int *cp,int *dp) *cp=x+y; *dp=x-y; main() int a,b,c,d; a=4; b=3; ast(a,b,&c,&d); printf(%d %dn,c,d); 答案:7 1 8.15 若有定义:char ch; (1) 使指针p可以指向变量ch的定义语句是_。 答案:char *p=&ch; (2) 使指针p可以指向变量ch的赋值语句是_。 答案:p=&ch; (3) 通过指针p给变量ch读入字符scanf函数调用语句是_。 答案:scanf(%c,*p); (4) 通过指针p给变量ch的赋字符的语句是_。 答案:ch=*p; 5) 通过指针p输出ch中字符的语句是_。 答案: printf(%c,*p); 8.16 若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a1。 (1) 通过指针p,给s赋值,使其指向最后一个存储单元a4的语句是_。 答案: s=p+3; (2) 用以移动指针s,使之指向中间的存储单元a2的表达式是_。 答案: s=s-2; (3) 已知k=2,指针s已指向存储单元a2,表达式*(s+k)的值是_。 答案: 50 (4) 指针s已指向存储单元a2,不移动指针s,通过s引用存储单元a3的表达式是_。 答案: *(a+1) 5) 指针s已指向存储单元a2,p指向存储单元a0,表达式s-p的值是_。 答案: 2 6) 若p指向存储单元a0,则以下语句的输出结果是_。 for(i=0; i5;i+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论