智慧树知到《C语言程序设计(刘添华)》章节测试答案
智慧树知到《C语言程序设计(刘添华)》章节测试答案
第一章单元测试
1、C 语言中 double 类型数据占字节数为()
A.16
B.12
C.8
D.4
正确答案:8
2、表达式:(int)((double)9/2)-9%2 的值是()
A.0
B.3
C.4
D.5
正确答案:3
3、以下选项中关于 C 语言常量的叙述错误的是()
A.经常被使用的变量可以定义成常量
B.常量可分为数值型常量和非数值型常量
C.所谓常量,是指在程序运行过程中,其值不能被改变的量
D.常量分为整型常量、实型常量、字符常量和字符串常量
正确答案:经常被使用的变量可以定义成常量
4、C 源程序中不能表示的数制是()
A.二进制
B.八进制
C.十进制
D.十六进制
正确答案:二进制
5、以下选项中,能用作用户标识符的是()
A.()0()
B.8()8
C.void
D.unsigned
正确答案:()0()
6、以下选项中能表示合法常量的是——
A.‘ ’
B.1.5E2.0
C.“”
D.1, 200
正确答案:‘ ’
7、按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.连接符
B.大写字母
C.下划线
D.数字字符
正确答案:连接符
8、以下选项中正确的定义语句是————
A.double a=7,b=7
B.double a=b=7
C.double,a,b
D.double a;b
正确答案:double a=7,b=7
9、设有定义int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是
A.k++
B.k+=1
C.++k
D.k+1
正确答案:k++
10、以下叙述中正确的是
A.字符变量在定义时不能赋初值
B.转义字符用@符号开头
C.字符常量可以参与任何整数运算
D.同一英文字符的大写和小写形式代表的是同一字符常量
正确答案:字符常量可以参与任何整数运算
第二章单元测试
1、以下不属于结构化程序设计中基本结构的是()。
A.跳转结构
B.选择结构
C.顺序结构
D.循环结构
正确答案:跳转结构
2、以下类型的C语句中,不属于简单语句的是()。
A.空语句
B.条件语句
C.表达式语句
D.复合语句
正确答案:条件语句
3、若int类型数据占2个字节,则下列语句的输出结果为()。 int k= -1;printf(“%d,%u,%o ”,k,k,k)。
A.-1,32767,-177777
B.-1,32768,177777
C.-1,65535,177777
D.-1,-1,-1
正确答案:-1,65535,177777
4、下列程序的输出是()。#include<;stdio.h>;main(){printf(“%d”,null);}
A.-1
B.0
C.变量无定义
D.1
正确答案:变量无定义
5、以下关于结构化程序设计中的三种基本结构,叙述不正确的是()。
A.循环结构中,需先对循环条件进行判断,条件成立才执行循环体。
B.顺序结构是最简单的一种基本结构。
C.选择结构也叫做分支结构,在该结构下只能选择程序的一条分支来执行,同时该分支可以为空。
D.每种基本结构均有唯一的一个入口和唯一的一个出口。
正确答案:循环结构中,需先对循环条件进行判断,条件成立才执行循环体。
6、在scanf函数中,附加格式字符h表示输入短整型数据,不能与其共同使用的格式字符是()。
A.d
B.x
C.f
D.o
正确答案:f
7、printf(“%5.3s,%-5.3s,%2.3s”, “China”, “China”, “China”); 以上语句的运行结果是()。
A.□□ina, ina□□,ina
B.□□Chi, Chi□□,Ch
C.Chi□□, □□Chi, Chi
D.□□Chi, Chi□□,Chi
正确答案:□□Chi, Chi□□,Chi
8、float a=1234.56; printf(“%e,%9e,%9.1e”,a,a, a); 以上语句的运行结果是()。
A.1.234560e+3,1.234560e+3,□□□1.2e+3
B.1.234560e+003,1.234560e+003,□1.2e+003
C.1.23456e+003,1.23456e+003,□1.2e+003
D.1.234560e+003,1.234560e+003,□□1.2e+003
正确答案:1.234560e+003,1.234560e+003,□1.2e+003
9、scanf(“%3d%*3d%3d”,&;x,&;y);当输入数据3456789012时,x,y的取值分别为()。
A.x=345,y=678
B.x=789,y=012
C.x=456,y=012
D.x=345,y=901
正确答案:x=345,y=901
10、以下字符输入输出函数中,用于输入单个字符的函数是()。
A.puts()
B.putchar()
C.gets()
D.getchar()
正确答案:getchar()
第三章单元测试
1、已知语句“if(w) … ;else … ;”,与表达式w的等价表示是:()
A.w != 1
B.w = = 1
C.w != 0
D.w = = 0
正确答案:w != 0
2、设 x,y,z 为 int 型变量,且 x=3,y=4,z=5 ,则下面表达式中值为 0 的是()
A.x||y+z&;&;y-z
B.!((x<;y)&;&;!z||1)
C.x<;=y
D.';x';&;&;';y'
正确答案:!((x<;y)&;&;!z||1)
3、表示算术关系12<;=x<;=y的C语言表达式为()
A.(12 <;= x ) &; (x <;= y )
B.(12 <;= x) | (x <;= y )
C.(12 <;= x ) || (x <;= y )
D.(12 <;= x ) &;&; (x <;= y )
正确答案:(12 <;= x ) &;&; (x <;= y )
4、逻辑运算符两侧运算对象的数据类型()
A.只能是0和1
B.只能是0或非0正数
C.可以是任何类型的数据
D.只能是整型或字符型数据
正确答案:可以是任何类型的数据
5、判断char型变量ch是否为大写字母的正确表达式是()
A.A’<;=ch<;=‘Z’
B.(‘A’<;= ch)AND(‘Z’>;= ch)
C.(ch>;=‘A’)&;(ch<;=‘Z’)
D.(ch>;=‘A’)&;&;(ch<;=‘Z’)
正确答案:(ch>;=‘A’)&;&;(ch<;=‘Z’)
6、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A.A%2==1
B.!(A%2==0)
C.!(A%2)
D.A%2
正确答案:!(A%2)
7、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>;b)&;&;(n=c>;d)后n的值为()
A.3
B.2
C.1
D.4
正确答案:2
8、以下程序的运行结果是()main(){; int m=5; if(m++>;5);printf(“%d ”,m); else; printf(“%d ”,m--);}。
A.6
B.7
C.4
D.5
正确答案:6
9、若运行时给变量x输入12,则以下程序的运行结果是 ()main(){; int x,y; scanf(“%d”,&;x); y=x>;12 ? x+10 :x-12;printf(“%d ”,y);}。
A.4
B.2
C.0
D.3
正确答案:0
10、main(){int i=1,j=1,k=2;if((j++||k++)&;&;i++)printf(";%d,%d,%d ";,i,j,k);}执行后输出结果是()
A.2,2,3
B.2,2,1
C.2,2,2
D.1,1,2
正确答案:2,2,2
第四章单元测试
1、C 语言的if 语句嵌套时,if 与else 的配对关系是()
A.每个else 与if 总是与最外层的if 配对
B.每个else 总是与它上面的最近的if 配对
C.每个else 总是与它上面的if 配对
D.每个else 与if 的配对是任意的
正确答案:每个else 总是与它上面的最近的if 配对
2、以下程序的运行结果是()main(){int a=2,b=-1,c=2;if(a<;b)if(b<;0) c=0;else c+=1;printf(";%d ";,c);}
A.2
B.0
C.13
D.3
正确答案:2
3、main(){int x=1,a=0,b=0;switch(x){case 0:b++;case 1:a++;case 2:a++;b++;}printf(";a=%d,b=%d";,a,b);}运行改程序后a和b的值分别为()
A.2,1
B.1,0
C.2,2
D.1,1
正确答案:2,1
4、有以下程序#include <;stdio.h>;main(){int a=1,b=0;if(!a) b++;else if(a==0); if(a) b+=2;else b+=3;printf(“%d ”,b);}程序运行后的输出结果是()
A.2
B.1
C.0
D.3
正确答案:0
5、若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什么?switch(x/10); {case6:case7:printf(";Pass ";);break;; case8:printf(";Good ";);break;;case9:; case10:printf(";VeryGood ";);break; default:printf(";Fail ";); }1.x等于95时,程序段运行后屏幕上显示()2.x等于87时,程序段运行后屏幕上显示()3.x等于100时,程序段运行后屏幕上显示()4.x等于43时,程序段运行后屏幕上显示()5.x等于66时,程序段运行后屏幕上显示()6.x等于79时,程序段运行后屏幕上显示()A.Pass; B.Good; C.VeryGood; D.Fail
A.BCDCDA
B.DCCDAC
C.ABCDAA
D.CBCDAA
正确答案:CBCDAA
6、分析以下程序,下列说法正确的是()main(){intx=5,a=0,b=0;; if(x=a+b); printf(";**** ";);; else; printf(";#### ";);; }
A.通过编译,但不能连接
B.输出****
C.输出####
D.有语法错,不能通过编译
正确答案:输出****
7、有如下程序main(){float x=2.0,y;if (x<;0.0)y=0.0;else if(x<;10.0)y=1.0/x;else y=1.0;printf(";%f ";,y);}该程序的输出结果是()
A.0.000000
B.1.000000
C.0.250000
D.0.500000
正确答案:0.500000
8、以下不正确的if 语句形式是()
A.if(x<;y) {x++;y++;}
B.if(x!=y) scanf(";%d";,&;x) else scanf(";%d";,&;y)
C.if(x==y)x+=y
D.if(x>;y&;&;x!=y)
正确答案:if(x!=y) scanf(";%d";,&;x) else scanf(";%d";,&;y)
9、int a=3,b=2,c=1; if(a>;b>;c)a=b; else a=c;则a 的值是()
A.1
B.2
C.3
D.0
正确答案:1
10、有以下程序main(){int a=5,b=4,c=3,d=2;if(a>;b>;c)printf(";%d ";,d);else if((c-1>;=d)==1)printf(";%d ";,d+1);else printf(";%d ";,d+2);}执行后输出结果是()
A.编译时出错
B.4
C.3
D.2
正确答案:3
第五章单元测试
1、以下叙述中正确的是
A.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能换成while
B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2 的值,以便决定下一步执行什么
C.如果根据算法需要使用无限循环(即通常说的“死循环”),则只能使用while 语句
D.适当地修改代码,do-while 与while 可以相互转换
正确答案:适当地修改代码,do-while 与while 可以相互转换
2、以下叙述中正确的是
A.continue 语句的作用是:在执行完本次循环体中剩余语句后,终止循环
B.只能在循环体内和switch 语句体内使用break 语句
C.在while 语句和do-while 语句中无法使用continue 语句
D.当break 出现在循环体中的switch 语句体内时,其作用是跳出该switch 语句体,并终止循环
正确答案:只能在循环体内和switch 语句体内使用break 语句
3、以下不构成无限循环的语句或者语句组是()
A.n=0;do{++n;}while(n<;=0)
B.n=0;while(1){n++;}
C.for(n=0,i=1;i++) n+=i
D.n=10; while(n);{n--;}
正确答案:n=0;do{++n;}while(n<;=0)
4、下列语句中,错误的是
A.do 2; while (a == b)
B.do x++ while (x == 10)
C.while (0)
D.while (x = y) 5
正确答案:do x++ while (x == 10)
5、以下程序段中,while循环执行的次数是int k =0;while (k = 1){;k++;}
A.无限次
B.执行一次
C.一次也不执行
D.有语法错误,不能执行
正确答案:无限次
6、以下程序段执行后,输出结果是int i, sum=0;for (i=1; i<;6; i++){;sum += i;}printf(";%d";, sum)。
A.0
B.14
C.不确定
D.15
正确答案:15
7、循环语句“for (x=0, y=0; (y!=123)) || (x<;4); x++) ;”的循环次数为
A.3次
B.4次
C.无限次
D.不确定
正确答案:无限次
8、在C语言中,下列说法中正确的是
A.“do ;语句 while (条件);”的循环中,当条件为非0时结束循环
B.“do ;语句 while (条件);”的循环中,当条件为0时结束循环
C.“do ;语句 while (条件);”的循环必须使用break语句退出循环
D.不能使用“do ;语句 while (条件);”的循环
正确答案:“do ;语句 while (条件);”的循环中,当条件为0时结束循环
9、下述程序代码段输出的结果是for(k=1;k<;10;k++) ;printf(";k=%d,k=%o,k=%x";, k, k, k)
A.k=11,k=13,k=b
B.k=10,k=12,k=13
C.k=11,k=12,k=11
D.k=11,k=013,k=0xb
正确答案:k=11,k=13,k=b
10、以下程序段中,while循环的循环次数是int i = 0;while (i <; 10){;if (i <; 1);{;continue;;};if (i == 5);{;break;;};i++;}
A.10
B.死循环
C.6
D.1
正确答案:死循环
第六章单元测试
1、程序功能:输入n的值(n<;10),计算1!+2!+3!+......+n!,并输出计算结果。#include <;stdio.h>;int main(){ ;int i, n;;long sum=0,fac=1;//fac存储每个加项(阶乘)的值 ;printf(";请输入n的值:";);;scanf(";%d";,&;n);;for(i=1; i<;=n; i++);{ ;(); //后一加项与前一加项的关系 ; sum=sum+fac;;};printf(";和为%ld ";,sum);;return 0;}
A.fac=fac*i
B.fac=fac+sum
C.sum=sum*i
D.fac++
正确答案:fac=fac*i
2、若有整型变量i,j,则以下程序段中内循环体“printf(";ok";);”的循环次数为for (i=5; i; i--){;for (j=0; j<;4; j++);{;printf(";ok";);;}}
A.25
B.24
C.20
D.30
正确答案:20
3、以下程序段的输出结果是int i=0, a=0;while (i <; 20){;for();{;if (i % 10 == 0);{;break;;};else;{;i--;;};};i += 11;;a += i;}printf(";%d ";, a)。
A.32
B.11
C.21
D.33
正确答案:32
4、假定a和b为int型变量,则执行以下语句后b的值为a = 1;b = 10;do{;b -= a;;a++;} while (b-- <; 0)。
A.-2
B.9
C.-1
D.8
正确答案:8
5、设x和y均为int型变量,则执行下面的循环后y的值为for (y=1, x=1; y<;=50; y++){;if (x >;= 10);{;break;;};if (x % 2 == 1);{;x += 5;;continue;;};x -= 3;}
A.2
B.4
C.6
D.8
正确答案:6
6、设i,j,k均为整型变量,则执行如下语句后,k的值为for (i=0, j=10; i<;=j; i++, j--){;k = i + j;}
A.8
B.11
C.10
D.9
正确答案:10
7、以下程序段的输出结果是2903int a=0, i;for (i=1; i<;5; i++){;switch(i);{;case 0:case 3:a += 2;;case 1:case 2:a += 3;;default:a += 5;;}}printf(";%d ";, a)。
A.20
B.13
C.31
D.10
正确答案:31
8、以下程序段运行时,若输入c2470f?再回车,则输出结果是char ch;long number = 0;while ((ch = getchar()) <; ';0'; || ch >; ';6';);while (ch!= '?'; &;&; ch >;= ';0'; &;&; ch <;= ';6';){;number = number * 7 + ch - ';0';;printf(";%ld#";, number);;ch= getchar();}
A.#
B.22#1818#
C.2#18#
D.2402#18#
正确答案:2#18#
9、以下程序段运行时,如果从键盘输入1298再回车,则输出结果为int n1, n2;scanf(";%d";, &;n2);while (n2 != 0){;n1 = n2 % 10;;n2 = n2 / 10;;printf(";%d";, n1);}
A.1298
B.1
C.9
D.8921
正确答案:8921
10、以下程序段的输出结果是int i=10, j=0;do{;j = j + i;;i--;} while (i >; 2);printf(";%d ";, j)。
A.54
B.52
C.25
D.48
正确答案:52
第七章单元测试
1、如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; , 则数组a的大小是()。
A.10
B.11
C.8
D.不定
正确答案:10
2、有如下说明:;int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是()。
A.a[8]
B.a[9]-0
C.a[9]-a[0]
D.a[10-1]
正确答案:a[9]-0
3、下列程序执行后的输出结果是()。main() ;{int a,b[5];a=0; b[0]=3;;printf(";%d,%d ";,b[0],b[1]);}。
A.3 ; 0
B.3,不定值
C.0,3
D.3,0
正确答案:3,不定值
4、以下程序输出的结果是()。#include ;<;stdio.h>;main() { int a[ ]={1,2,3,4,5},i,j,s=0; for(i=0;i<;5;i++) ;;s=s*10+a[i];printf(";s=%d ";,s);}。
A.s=54321
B.s=12345
C.s=1,2 ,3, 4 ,5
D.s=5 ,4 ,3 ,2 ,1
正确答案:s=12345
5、执行下面的程序段后,变量k中的值为()。int k=3,s[2]; s[0]=k; k=s[1]*10。
A.10
B.30
C.不定值
D.33
正确答案:不定值
6、假定一个int型变量占用四个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是()。
A.10
B.40
C.3
D.6
正确答案:40
7、int a[3]定义了一个整型数组, 它的3个元素是a[1], a[2]和a[3]。()
A.正确
B.错误
正确答案:错误
8、可以在定义数组时只给一部分数组元素赋值。()
A.正确
B.错误
正确答案:正确
9、对数组元素赋予的初值可以依次放在一对圆括号内。()
A.正确
B.错误
正确答案:错误
10、int a[3]定义了一个整型数组, 它的3个元素是a[0], a[1]和a[2]。()
A.正确
B.错误
正确答案:正确
第八章单元测试
1、在定义int n[5][6];后,若认为n[0][0]为第1个元素,则第10个元素是()。
A.n[1][3]
B.n[2][5]
C.n[1][4]
D.n[2][4]
正确答案:n[1][3]
2、下列二维数组初始化语句中,正确的是()。
A.int a[ ][ ]={{9,3,1},{8,4,2},{3,5,7}}
B.float a[3][ ]={{1,2,3},{4,5,6},{7,8,9}}
C.int a[ ][3]={8,0,7,0,3,l,2,5}
D.float a[2][3]={{l,2},{3,4},{5,6}}
正确答案:int a[ ][3]={8,0,7,0,3,l,2,5}
3、若定义char a[ ] = ";Hello! "; 则strlen(a)、sizeof(a)的值分别为()。
A.7 6
B.6 7
C.7 8
D.7 7
正确答案:7 8
4、以下程序的输出结果是()。main(){ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};;printf(";%d%d%d%d ";,a[0][3],a[1][2],a[2][1],a[3][0]);}
A.5430
B.0650
C.输出值不定
D.1470
正确答案:0650
5、若有定义:int a[2][4];,则引用数组元素正确的是()。
A.a[0][3]
B.a[2][2]
C.a[2][2+1]
D.a[0][4]
正确答案:a[0][3]
6、若定义一个名为s且初值为";123";的字符数组,则下列定义错误的是()。
A.char s[]={";123";}
B.char s[]={’1';,';2';,';3';,'; ';}
C.char s[]={";123 ";}
D.char s[4]={';1';,';2';,';3';}
正确答案:char s[]={";123 ";}
7、设有定义:char s[12]=";string";则printf(";%d";,strlen(s));的输出结果是()。
A.6
B.7
C.11
D.12
正确答案:6
8、语句printf(";%d";,strlen(";abs o121\";));的输出结果是()。
A.8
B.11
C.9
D.10
正确答案:9
9、在用字符数组来处理字符串时,应始终保证数组的长度大于字符串的实际长度。()
A.正确
B.错误
正确答案:正确
10、使用字符串连接函数strcat(字符数组1,字符数组2)时,字符数组1要定义足够的长度,才能装入全部被连接的字符串,而使用strcpy(字符数组1,字符数组2)函数时,无需考虑字符数组1的长度问题。()
A.正确
B.错误
正确答案:正确
第九章单元测试
1、在C语言中,程序的基本单位是
A.函数
B.文件
C.程序段
D.语句
正确答案:函数
2、在C语言中,程序进行编译的单位是
A.语句
B.函数
C.文件
D.程序段
正确答案:文件
3、在C语言中,若定义函数时对函数类型未加显式说明,则函数的隐含类型为
A.char
B.void
C.int
D.double
正确答案:int
4、在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时
A.实参和形参共用一个存储单元
B.实参和形参分别占用一个独立的存储单元
C.由计算机系统确定是否共用一个存储单元
D.由用户确定是否共用一个存储单元
正确答案:实参和形参分别占用一个独立的存储单元
5、在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是
A.由实参传递给形参,再由形参传递给实参
B.由用户指定传递方式
C.地址传递
D.单向值传递
正确答案:单向值传递
6、下面对函数的叙述,正确的是()。
A.函数不能嵌套定义
B.函数中无论是否有return语句,都能返回正确值
C.函数中的返回值,是通过return语句获得的
D.函数中没有return语句,说明函数不带值
正确答案:函数中的返回值,是通过return语句获得的
7、在C语言中规定,函数返回值的类型由
A.定义该函数时所指定的函数类型决定
B.调用该函数的主调函数决定
C.return语句中的表达式类型决定
D.调用该函数时系统临时决定
正确答案:定义该函数时所指定的函数类型决定
8、函数调用在程序中出现的位置一般有3种方式,下面叙述中错误的是
A. 函数调用可以出现在表达式中
B.函数调用可以作为独立的语句存在
C.函数调用可以作为一个函数的形参
D.函数调用可以作为一个函数的实参
正确答案:函数调用可以作为一个函数的形参
9、下面程序的输出结果是#include <;stdio.h>;double func(int x, int y, int z);int main(void){;double x;;int a=3, b=4, c=5;;x = func(a, b, c);printf(";%f ";, x);;return 0;}double func(int x, int y, int z){;double t;;t = x % y * z;;return t;}
A.15
B.3
C.3.000000
D.15.000000
正确答案:15.000000
10、在C语言中,函数调用语句function((a, b, c), (d, e));中参数的个数是
A.1
B.5
C.2
D.4
正确答案:2
第十章单元测试
1、在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则
A.称为函数的直接递归调用
B.C语言中不允许这样的递归调用
C.称为函数的循环调用
D.称为函数的间接递归调用
正确答案:称为函数的间接递归调用
2、下面叙述中不正确的是
A.在一个函数中定义的变量只在本函数范围内有效
B.函数中的形参是函数自己的局部变量
C.在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元
D.在一个函数内的复合语句中定义的变量只在本函数范围内有效
正确答案:在一个函数内的复合语句中定义的变量只在本函数范围内有效
3、在一个源程序文件中定义的全局变量的作用域为
A.本函数的全部范围
B.本文件的全部范围
C.从定义该变量的位置开始至本文件结束
D.本程序的全部范围
正确答案:从定义该变量的位置开始至本文件结束
4、下面叙述中不正确的是
A.函数可以没有形参,可是函数名后的一对括号却不能省略
B.在没有声明函数返回值类型时,函数返回值的类型默认为int
C.在C语言中,不能在一个函数的内部再定义函数
D.函数的类型可以是整型、实型、字符型,但不可以是指针型
正确答案:函数的类型可以是整型、实型、字符型,但不可以是指针型
5、下面程序的输出结果是#include <;stdio.h>;int function(int a, int b);int main(void){;int x=5, y=3, s;;s = function(x, y);; printf(";%d ";, s);;return 0;};int function(int a, int b) { return a*a - b*b; }
A.8
B.2
C.32
D.16
正确答案:16
6、下面程序的输出结果是#include <;stdio.h>;long func(int n);int main(void){;printf(";%ld ";, func(5));;return 0;};long func(int n){;if (n >; 2) { return func(n-1) + func(n-2); };else { return 1; }}
A.8
B.7
C.6
D.5
正确答案:5
7、下面程序的输出结果是#include <;stdio.h>;int func(void);;int main(void){;int i, s;;for (i = 0; i <; 4; i++) s = func();;printf(";%d ";, s);;return 0;};int func(void){;static int x = 6;;x++;;return x;}
A.8
B.9
C.7
D.10
正确答案:10
8、下面程序中应该补充(填写在横线位置)的代码是#include <;stdio.h>;int max(int x, int y);//函数功能:求两数中的较大数;int main(void){;int a, b, c;;;scanf(";%d, %d";, &;a, &;b);;c =();;printf(";max is %d";, c);;return 0;};int max(int x, int y){;int z;;if (x >; y) ;z = x;else ;z = y;;return z;}
A.max(x, y)
B.max(a, b)
C.int max(int a, int b)
D.max(&;a, &;b)
正确答案:max(a, b)
9、下面程序中应该补充(填写在横线位置)的代码中,有错的是#include <;stdio.h>;()
int main(void){;int a, b, c;;scanf(";%d, %d";, &;a, &;b); c = min(a, b);;printf(";min is %d";, c);;return 0;};//函数功能:求两数中的较大数int min(int x, int y){;int z;;z = x <; y ? x :y;;return z;}
A.int min(int, int)
B.min(int x, int y)
C.int min(int x, int y)
D.int min(int x, int y)
正确答案:int min(int x, int y)
10、下面程序的输出结果是#include <;stdio.h>;void increment(void);int main(void){;increment();increment();increment();;return 0;}
void increment(void){;int x = 0;;x += 1;;printf(";%d ";, x);}
A.1; 2; 3
B.1
C.1; 1; 1
D.3; 3; 3
正确答案:1; 1; 1
第十一章单元测试
1、已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。
A.k=*ptr1*(*ptr2)
B.ptr1=ptr2
C.ptr2=k
D.k=*ptr1+*ptr2
正确答案:ptr2=k
2、若有语句int *point,a=4;和point=&;a;下面均代表地址的一组选项是()。
A.a,point,*&;a
B.*&;point,*point,&;a
C.&;a,&;*point ,point
D.&;*a,&;a,*point
正确答案:&;a,&;*point ,point
3、若有说明;int *p,m=5,n;以下正确的程序段的是()。
A.p=&;n;*p=m
B.scanf(";%d";,&;n);*p=n
C.p=&;n;scanf(";%d";,&;p)
D.p=&;n;scanf(";%d";,*p)
正确答案:p=&;n;*p=m
4、若已定义char s[10];则在下面表达式中不表示s[1]的地址是()。
A.&;s[1]
B.s++
C.&;s[0]+1
D.s+1
正确答案:s++
5、若有定义:int a[5],*p=a;则对a数组元素的正确引用是()。
A.*(p+5)
B.a+2
C.*&;a[5]
D.*(a+2)
正确答案:*(a+2)
6、有以下程序; #include<;stdio.h>; main(){; int m=1,n=2,*p=&;m,*q=&;n,*r; r=p;p=q;q=r; printf(";%d,%d,%d,%d ";,m,n,*p,*q);}程序运行后的输出结果是()。
A.2,1,2,1
B.2,1,1,2
C.1,2,2,1
D.1,2,1,2
正确答案:1,2,2,1
7、在16位编译系统上,若有定义int; a[]={10,20,30}, *p=&;a;,当执行p++;后,下列说法错误的是()。
A.p向高地址移了一个存储单元
B.p与a+1等价
C.p向高地址移了两个字节
D.p向高地址移了一个字节
正确答案:p向高地址移了一个字节
8、有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&;a[3], b; b=p[5]; b中的值()。
A.6
B.5
C.9
D.8
正确答案:9
9、若有以下定义,int; a[10],*p=a;则p+5表示()。
A.元素a[6]的地址
B.元素a[5]的值
C.元素a[5]的地址
D.元素a[6]的值
正确答案:元素a[5]的地址
10、设已有定义:int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是()。
A.for(p=a;a<;p+10; ++a)
B.for(p=a;p<;(a+10);p++)
C.for(p=a;a<;(p+10);a++)
D.for(p=a,a=a+10;p<;a;p++)
正确答案:for(p=a;p<;(a+10);p++)
第十二章单元测试
1、以下程序的输出结果为 ;。#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf(“%4.1f ”,S(a+b));}
A.9.5
B.33.5
C.12.0
D.12.5
正确答案:9.5
2、C语言中,宏定义有效范围从定义处开始,到源文件结束处结束,但可以用 ;来提前解除宏定义的作用。
A.endif
B.#undef
C.#undefine
D.#ifndef
正确答案:#undef
3、若有宏定义:#define MOD(x,y) x%y则执行以下语句后的输出为。int z,a=15,b=100;z=MOD(b,a);printf(“%d ”,z++)。
A.6
B.10
C.11
D.宏定义不合法
正确答案:10
4、若有以下宏定义如下:#define N 2;#define Y(n) ((N+1)*n);则执行语句z=2*(N+Y(5));后的结果是。
A.z=34
B.z=70
C.z无定值
D.语句有错误
正确答案:z=34
5、C语言的编译系统对宏命令的处理是。
A.和C程序中的其它语句同时进行编译的
B.在程序连接时进行的
C.在对源程序中其它成份正式编译之前进行的
D.在程序运行时进行的
正确答案:在对源程序中其它成份正式编译之前进行的
6、以下有关宏替换的叙述不正确的是。
A.宏名必须用大写字母表示
B.宏名无类型
C.宏替换只是字符替换
D.宏替换不占用运行时间
正确答案:宏名必须用大写字母表示
7、在宏定义#define PI 3.14159中,用宏名PI代替一个。
A.单精度数
B.字符串
C.双精度数
D.常量
正确答案:字符串
8、以下程序的运行结果是。;#define MIN(x,y) (x)<;(y)?(x):(y); main();{;int i=10,j=15,k;;k=10*MIN(i,j);;printf(“%d”,k);; }
A.150
B.100
C.10
D.15
正确答案:15
9、请读程序:#define ADD(x) x+xmain(){; int m=1,n=2,k=3;; int sum=ADD(m+n)*k;; printf(“sum=%d”,sum);;}上面程序的运行结果是。
A.sum=9
B.sum=10
C.sum=18
D.sum=12
正确答案:sum=10
10、以下叙述中不正确的是。
A.以下是正确的宏定义#define IBM()PC
B.预处理命令行都必须以#号开始
C.在程序中凡是以#号开始的语句行都是预处理命令行
D.C程序在执行过程中对预处理命令行进行处理
正确答案:C程序在执行过程中对预处理命令行进行处理
第十三章单元测试
1、下面结构体的定义语句中,错误的是()。
A.struct ord {int x; int y; int z;}a
B.struct {int x; int y; int z;}a
C.struct ord {int x; int y; int z;}; struct ord a
D.struct ord {int x; int y; int z;}struct ord a
正确答案:struct ord {int x; int y; int z;}struct ord a
2、有以下的结构体变量定义语句:struct student {;int num;;charname[9];} stu;则下列叙述中错误的是()。
A.结构体名为student
B.struct是C的关键字
C.num是结构体成员名
D.结构体类型名为stu
正确答案:结构体类型名为stu
3、设有定义:struct {char mark[12];;int num1;;double num2;} t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。
A.t2.num1=t1.num1
B.t2.mark=t1.mark
C.t2.num2=t1.num2
D.t1=t2
正确答案:t1=t2
4、若有如下说明语句,则下面叙述中不正确的是struct student{;long num;;char name[20];;char sex;;int age;} stu。
A.struct是结构体类型关键字
B.num,name,sex,age都是结构体成员名
C.stu是结构体类型名
D.struct student是结构体类型
正确答案:stu是结构体类型名
5、若有如下说明语句,则定义了union student{;long num;;char name[20];;char sex;;int age;} 。
A.共用体变量
B.结构体变量
C.结构体类型
D.共用体类型
正确答案:共用体类型
6、当定义一个结构体变量时,系统分配给它的内存空间字节数是
A.各成员所需内存字节数的总和
B.结构体中最后一个成员所需内存字节数
C.结构体中第一个成员所需内存字节数
D.成员中占内存字节数最大的
正确答案:各成员所需内存字节数的总和
7、有以下三种形式可供选择,则为了表示结构体变量中的成员,各选项中叙述正确的是1、结构体变量.成员名2、(*结构体指针变量).成员名3、结构体指针变量->;成员名
A.只能用2或3表示
B.只能用1或2表示
C.三种形式均可
D.只能用1或3表示
正确答案:三种形式均可
8、以下程序在VC6.0下运行后的输出结果为#include <;stdio.h>;struct dt{;char a[4];;int b;;double c;} data;int main(void){;printf(";%d ";, sizeof(struct dt));/*sizeof()求对象或数据类型所占字节数*/;return 0;}
A.16
B.4
C.3
D.8
正确答案:16
9、若有以下定义,则对变量student1中“生日”的正确赋值方式是struct student{;int num;;char name[20], sex;;struct;{;int year, month, day;;} birthday;} ;;struct student student1。
A.year = 2003;month = 5
day = 1
B.student1.year = 2003;student1.month = 5
student1.day = 1
C.student1.birthday.year = 2003;student1.birthday.month = 5
student1.birthday.day = 1
D.birthday.year = 2003;birthday.month = 5
birthday.day = 1
正确答案:student1.birthday.year = 2003;student1.birthday.month = 5
student1.birthday.day = 1
10、若有以下定义,则下面各输出语句中能输出字母J的是struct student{;int num;;char name[20];} ;;struct student school[10000] = {{1001, ";Mike";}, {1002, ";James";}, {1003, ";Tom";}}。
A.printf(";%c";, school[1].name)
B.printf(";%c";, school[1].name[0])
C.printf(";%c";, school[2].name[0])
D.printf(";%c";, school[0].name[0])
正确答案:printf(";%c";, school[1].name[0])