智慧树知到《C语言程序设计(郑妍+刘添华)》章节测试答案
智慧树知到《C语言程序设计(郑妍+刘添华)》章节测试答案
第一章单元测试
1、人类通过不同的语言进行交流,人与计算机的交流是通过()来实现的。
A.自然语言
B.程序设计语言
C.机械操作
D.文字
正确答案:程序设计语言
2、高级语言处于程序设计语言发展的第()个阶段
A.一
B.四
C.三
D.二
正确答案:三
3、C语言的创始人是()。
A.肯·汤普逊
B.丹尼斯·里奇
C.比尔·盖茨
D.冯·诺依曼
正确答案:丹尼斯·里奇
4、C语言源程序中main函数()。
A.可有可无
B.可以有一个
C.可有多个
D.有且只能有一个
正确答案:有且只能有一个
5、C语言源程序文件扩展名为()。
A.c
B.exe
C.obj
D.cpp
正确答案:c
6、下列说法中不正确的是()。
A.C程序书写时每行必须有行号
B.C程序书写时,一行可以写多个语句
C.C程序书写时,一个语句可分成几行书写
D.C程序书写时,区分大小写字母
正确答案:C程序书写时每行必须有行号
7、C语言是结构化语言。
A.正确
B.错误
正确答案:正确
8、C语言是面向对象语言。
A.正确
B.错误
正确答案:错误
9、C语言是面向过程语言。
A.正确
B.错误
正确答案:正确
10、开发C语言程序包括编辑源程序、编译、运行三个步骤。
A.正确
B.错误
正确答案:错误
第二章单元测试
1、C 语言中 double 类型数据占字节数为()
A.12
B.8
C.4
D.16
正确答案:8
2、表达式:(int)((double)9/2)-9%2 的值是()
A.3
B.4
C.0
D.5
正确答案:3
3、以下选项中关于 C 语言常量的叙述错误的是()
A.所谓常量,是指在程序运行过程中,其值不能被改变的量
B.常量可分为数值型常量和非数值型常量
C.常量分为整型常量、实型常量、字符常量和字符串常量
D.经常被使用的变量可以定义成常量
正确答案:经常被使用的变量可以定义成常量
4、C 源程序中不能表示的数制是()
A.十进制
B.八进制
C.十六进制
D.二进制
正确答案:二进制
5、以下选项中,能用作用户标识符的是()
A.void
B.8()8
C.()0()
D.unsigned
正确答案:()0()
6、以下选项中能表示合法常量的是——
A.1.5E2.0
B.‘ ’
C.“”
D.1, 200
正确答案:‘ ’
7、按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A.数字字符
B.下划线
C.连接符
D.大写字母
正确答案:连接符
8、以下选项中正确的定义语句是————
A.double a=7,b=7
B.double a;b
C.double,a,b
D.double a=b=7
正确答案:double a=7,b=7
9、设有定义int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是
A.k+1
B.k+=1
C.k++
D.++k
正确答案: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,32768,177777
B.-1,65535,177777
C.-1,-1,-1
D.-1,32767,-177777
正确答案:-1,65535,177777
4、下列程序的输出是()。#include<;stdio.h>;main(){printf(“%d”,null);}
A.0
B.-1
C.1
D.变量无定义
正确答案:变量无定义
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=456,y=012
C.x=345,y=901
D.x=789,y=012
正确答案:x=345,y=901
10、以下字符输入输出函数中,用于输入单个字符的函数是()。
A.getchar()
B.gets()
C.putchar()
D.puts()
正确答案:getchar()
第四章单元测试
1、已知语句“if(w) … ;else … ;”,与表达式w的等价表示是:()
A.w = = 0
B.w != 1
C.w = = 1
D.w != 0
正确答案:w != 0
2、设 x,y,z 为 int 型变量,且 x=3,y=4,z=5 ,则下面表达式中值为 0 的是()
A.x<;=y
B.';x';&;&;';y'
C.x||y+z&;&;y-z
D.!((x<;y)&;&;!z||1)
正确答案:!((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.可以是任何类型的数据
B.只能是0和1
C.只能是0或非0正数
D.只能是整型或字符型数据
正确答案:可以是任何类型的数据
5、判断char型变量ch是否为大写字母的正确表达式是()
A.(‘A’<;= ch)AND(‘Z’>;= ch)
B.(ch>;=‘A’)&;(ch<;=‘Z’)
C.(ch>;=‘A’)&;&;(ch<;=‘Z’)
D.A’<;=ch<;=‘Z’
正确答案:(ch>;=‘A’)&;&;(ch<;=‘Z’)
6、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A.!(A%2==0)
B.!(A%2)
C.A%2
D.A%2==1
正确答案:!(A%2)
7、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>;b)&;&;(n=c>;d)后n的值为()
A.4
B.2
C.3
D.1
正确答案:2
8、以下程序的运行结果是()main(){; int m=5; if(m++>;5);printf(“%d ”,m); else; printf(“%d ”,m--);}。
A.4
B.6
C.5
D.7
正确答案:6
9、若运行时给变量x输入12,则以下程序的运行结果是 ()main(){; int x,y; scanf(“%d”,&;x); y=x>;12 ? x+10 :x-12;printf(“%d ”,y);}。
A.0
B.2
C.3
D.4
正确答案:0
10、main(){int i=1,j=1,k=2;if((j++||k++)&;&;i++)printf(";%d,%d,%d ";,i,j,k);}执行后输出结果是()
A.1,1,2
B.2,2,3
C.2,2,2
D.2,2,1
正确答案:2,2,2
第五章单元测试
1、C 语言的if 语句嵌套时,if 与else 的配对关系是()
A.每个else 总是与它上面的if 配对
B.每个else 与if 总是与最外层的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.0
B.13
C.3
D.2
正确答案: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,1
C.1,0
D.2,2
正确答案: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.0
C.1
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.ABCDAA
B.CBCDAA
C.DCCDAC
D.BCDCDA
正确答案: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&;&;x!=y)
C.if(x!=y) scanf(";%d";,&;x) else scanf(";%d";,&;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.3
B.1
C.2
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.3
B.4
C.2
D.编译时出错
正确答案:3
第六章单元测试
1、以下叙述中正确的是
A.如果根据算法需要使用无限循环(即通常说的“死循环”),则只能使用while 语句
B.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能换成while
C.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2 的值,以便决定下一步执行什么
D.适当地修改代码,do-while 与while 可以相互转换
正确答案:适当地修改代码,do-while 与while 可以相互转换
2、以下叙述中正确的是
A.当break 出现在循环体中的switch 语句体内时,其作用是跳出该switch 语句体,并终止循环
B.只能在循环体内和switch 语句体内使用break 语句
C.continue 语句的作用是:在执行完本次循环体中剩余语句后,终止循环
D.在while 语句和do-while 语句中无法使用continue 语句
正确答案:只能在循环体内和switch 语句体内使用break 语句
3、以下不构成无限循环的语句或者语句组是()
A.n=0;while(1){n++;}
B.n=0;do{++n;}while(n<;=0)
C.n=10; while(n);{n--;}
D.for(n=0,i=1;i++) n+=i
正确答案:n=0;do{++n;}while(n<;=0)
4、下列语句中,错误的是
A.do 2; while (a == b)
B.while (0)
C.do x++ while (x == 10)
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.不确定
B.14
C.0
D.15
正确答案:15
7、循环语句“for (x=0, y=0; (y!=123)) || (x<;4); x++) ;”的循环次数为
A.无限次
B.4次
C.3次
D.不确定
正确答案:无限次
8、在C语言中,下列说法中正确的是
A.“do ;语句 while (条件);”的循环中,当条件为非0时结束循环
B.不能使用“do ;语句 while (条件);”的循环
C.“do ;语句 while (条件);”的循环必须使用break语句退出循环
D.“do ;语句 while (条件);”的循环中,当条件为0时结束循环
正确答案:“do ;语句 while (条件);”的循环中,当条件为0时结束循环
9、下述程序代码段输出的结果是for(k=1;k<;10;k++) ;printf(";k=%d,k=%o,k=%x";, k, k, k)
A.k=10,k=12,k=13
B.k=11,k=12,k=11
C.k=11,k=013,k=0xb
D.k=11,k=13,k=b
正确答案:k=11,k=13,k=b
10、以下程序段中,while循环的循环次数是int i = 0;while (i <; 10){;if (i <; 1);{;continue;;};if (i == 5);{;break;;};i++;}
A.6
B.死循环
C.10
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.sum=sum*i
B.fac=fac*i
C.fac=fac+sum
D.fac++
正确答案:fac=fac*i
2、若有整型变量i,j,则以下程序段中内循环体“printf(";ok";);”的循环次数为for (i=5; i; i--){;for (j=0; j<;4; j++);{;printf(";ok";);;}}
A.30
B.24
C.25
D.20
正确答案: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.21
B.33
C.11
D.32
正确答案:32
4、假定a和b为int型变量,则执行以下语句后b的值为a = 1;b = 10;do{;b -= a;;a++;} while (b-- <; 0)。
A.-2
B.-1
C.9
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.6
B.8
C.2
D.4
正确答案:6
6、设i,j,k均为整型变量,则执行如下语句后,k的值为for (i=0, j=10; i<;=j; i++, j--){;k = i + j;}
A.8
B.9
C.11
D.10
正确答案: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.10
B.13
C.31
D.20
正确答案: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.22#1818#
B.2402#18#
C.#
D.2#18#
正确答案:2#18#
9、以下程序段运行时,如果从键盘输入1298再回车,则输出结果为int n1, n2;scanf(";%d";, &;n2);while (n2 != 0){;n1 = n2 % 10;;n2 = n2 / 10;;printf(";%d";, n1);}
A.1
B.9
C.1298
D.8921
正确答案:8921
10、以下程序段的输出结果是int i=10, j=0;do{;j = j + i;;i--;} while (i >; 2);printf(";%d ";, j)。
A.52
B.25
C.48
D.54
正确答案:52
第八章单元测试
1、如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; , 则数组a的大小是()。
A.11
B.10
C.不定
D.8
正确答案:10
2、有如下说明:;int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是()。
A.a[8]
B.a[9]-a[0]
C.a[9]-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=5 ,4 ,3 ,2 ,1
B.s=12345
C.s=54321
D.s=1,2 ,3, 4 ,5
正确答案:s=12345
5、执行下面的程序段后,变量k中的值为()。int k=3,s[2]; s[0]=k; k=s[1]*10。
A.30
B.10
C.33
D.不定值
正确答案:不定值
6、假定一个int型变量占用四个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是()。
A.10
B.3
C.40
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[2][4]
B.n[2][5]
C.n[1][3]
D.n[1][4]
正确答案:n[1][3]
2、下列二维数组初始化语句中,正确的是()。
A.int a[ ][ ]={{9,3,1},{8,4,2},{3,5,7}}
B.float a[2][3]={{l,2},{3,4},{5,6}}
C.float a[3][ ]={{1,2,3},{4,5,6},{7,8,9}}
D.int a[ ][3]={8,0,7,0,3,l,2,5}
正确答案:int a[ ][3]={8,0,7,0,3,l,2,5}
3、若定义char a[ ] = ";Hello! "; 则strlen(a)、sizeof(a)的值分别为()。
A.6 7
B.7 8
C.7 6
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.1470
C.0650
D.输出值不定
正确答案:0650
5、若有定义:int a[2][4];,则引用数组元素正确的是()。
A.a[0][4]
B.a[0][3]
C.a[2][2+1]
D.a[2][2]
正确答案:a[0][3]
6、若定义一个名为s且初值为";123";的字符数组,则下列定义错误的是()。
A.char s[]={";123";}
B.char s[]={";123 ";}
C.char s[4]={';1';,';2';,';3';}
D.char s[]={’1';,';2';,';3';,'; ';}
正确答案:char s[]={";123 ";}
7、设有定义:char s[12]=";string";则printf(";%d";,strlen(s));的输出结果是()。
A.11
B.12
C.7
D.6
正确答案:6
8、语句printf(";%d";,strlen(";abs o121\";));的输出结果是()。
A.10
B.8
C.9
D.11
正确答案: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.double
C.int
D.void
正确答案:int
4、在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时
A.实参和形参共用一个存储单元
B.由计算机系统确定是否共用一个存储单元
C.由用户确定是否共用一个存储单元
D.实参和形参分别占用一个独立的存储单元
正确答案:实参和形参分别占用一个独立的存储单元
5、在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是
A.地址传递
B.由用户指定传递方式
C.由实参传递给形参,再由形参传递给实参
D.单向值传递
正确答案:单向值传递
6、下面对函数的叙述,正确的是()。
A.函数中没有return语句,说明函数不带值
B.函数不能嵌套定义
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.3
B.15
C.3.000000
D.15.000000
正确答案:15.000000
10、在C语言中,函数调用语句function((a, b, c), (d, e));中参数的个数是
A.4
B.5
C.1
D.2
正确答案:2