智慧树知到《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.cpp
B.obj
C.c
D.exe
正确答案: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、表达式:(int)((double)9/2)-9%2 的值是()
A.3
B.5
C.0
D.4
正确答案:3
2、以下选项中关于 C 语言常量的叙述错误的是()
A.常量分为整型常量、实型常量、字符常量和字符串常量
B.所谓常量,是指在程序运行过程中,其值不能被改变的量
C.常量可分为数值型常量和非数值型常量
D.经常被使用的变量可以定义成常量
正确答案:经常被使用的变量可以定义成常量
3、以下选项中,能用作用户标识符的是()
A.8()8
B.void
C.unsigned
D.()0()
正确答案:()0()
4、以下选项中能表示合法常量的是()
A.3lf
B.1.5E2.0
C.‘ ’
D.1, 200
正确答案:‘ ’
5、按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是()
A.下划线
B.连接符
C.大写字母
D.数字字符
正确答案:连接符
6、以下选项中正确的定义语句是()
A.double,a,b
B.double a=b=7
C.double a;b
D.double a=7,b=7
正确答案:double a=7,b=7
7、设有定义int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()
A.k+=1
B.k++
C.k+1
D.++k
正确答案:k++
8、以下叙述中正确的是()
A.字符常量可以参与整数运算
B.转义字符用@符号开头
C.同一英文字符的大写和小写形式代表的是同一字符常量
D.字符变量在定义时不能赋初值
正确答案:字符常量可以参与整数运算
9、C语言中依据程序编译器的不同,int定义的字节数不同,不短于short,不长于long,一般为2或 4个字节。
A.正确
B.错误
正确答案:正确
10、C语言的整型常量有二进制、八进制、十进制和十六进制四种表示方式。
A.正确
B.错误
正确答案:错误
第三章单元测试
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,-1,-1
C.-1,65535,177777
D.-1,32768,177777
正确答案:-1,65535,177777
4、下列程序的输出是()。#include<;stdio.h>;main(){printf(“%d”,null);}
A.变量无定义
B.0
C.1
D.-1
正确答案:变量无定义
5、以下关于结构化程序设计中的三种基本结构,叙述不正确的是()。
A.循环结构中,需先对循环条件进行判断,条件成立才执行循环体。
B.选择结构也叫做分支结构,在该结构下只能选择程序的一条分支来执行,同时该分支可以为空。
C.顺序结构是最简单的一种基本结构。
D.每种基本结构均有唯一的一个入口和唯一的一个出口。
正确答案:循环结构中,需先对循环条件进行判断,条件成立才执行循环体。
6、在scanf函数中,附加格式字符h表示输入短整型数据,不能与其共同使用的格式字符是()。
A.d
B.o
C.x
D.f
正确答案:f
7、printf(“%5.3s,%-5.3s,%2.3s”, “China”, “China”, “China”); 以上语句的运行结果是()。
A.Chi□□, □□Chi, Chi
B.□□Chi, Chi□□,Ch
C.□□Chi, Chi□□,Chi
D.□□ina, ina□□,ina
正确答案:□□Chi, Chi□□,Chi
8、float a=1234.56; printf(“%e,%9e,%9.1e”,a,a, a); 以上语句的运行结果是()。
A.1.234560e+003,1.234560e+003,□1.2e+003
B.1.234560e+3,1.234560e+3,□□□1.2e+3
C.1.234560e+003,1.234560e+003,□□1.2e+003
D.1.23456e+003,1.23456e+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=345,y=901
C.x=456,y=012
D.x=789,y=012
正确答案:x=345,y=901
10、以下字符输入输出函数中,用于输入单个字符的函数是gets()。
A.正确
B.错误
正确答案:错误
第四章单元测试
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+z&;&;y-z
C.';x';&;&;';y'
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、判断char型变量ch是否为大写字母的正确表达式是()
A.(ch>;=‘A’)&;&;(ch<;=‘Z’)
B.(‘A’<;= ch)AND(‘Z’>;= ch)
C.(ch>;=‘A’)&;(ch<;=‘Z’)
D.A’<;=ch<;=‘Z’
正确答案:(ch>;=‘A’)&;&;(ch<;=‘Z’)
5、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A.!(A%2)
B.A%2==1
C.!(A%2==0)
D.A%2
正确答案:!(A%2)
6、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>;b)&;&;(n=c>;d)后n的值为()
A.4
B.3
C.1
D.2
正确答案:2
7、以下程序的运行结果是()main(){; int m=5; if(m++>;5);printf(“%d\n”,m); else; printf(“%d\n”,m--);}。
A.7
B.6
C.4
D.5
正确答案:6
8、若运行时给变量x输入12,则以下程序的运行结果是 ()main(){; int x,y; scanf(“%d”,&;x); y=x>;12 ? x+10 :x-12;printf(“%d\n”,y);}。
A.0
B.4
C.3
D.2
正确答案:0
9、main(){int i=1,j=1,k=2;if((j++||k++)&;&;i++)printf(";%d,%d,%d\n";,i,j,k);}执行后输出结果是()
A.2,2,2
B.2,2,1
C.1,1,2
D.2,2,3
正确答案:2,2,2
10、逻辑运算符两侧运算对象的数据类型可以是任何类型的数据。
A.正确
B.错误
正确答案:正确
第五章单元测试
1、以下程序的运行结果是()main(){int a=2,b=-1,c=2;if(a<;b)if(b<;0) c=0;else c+=1;printf(";%d\n";,c);}
A.3
B.2
C.0
D.13
正确答案:2
2、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,2
B.2,1
C.1,1
D.1,0
正确答案:2,1
3、有以下程序#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\n”,b);}程序运行后的输出结果是()
A.2
B.1
C.0
D.3
正确答案:0
4、若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什么?switch(x/10); {case6:case7:printf(";Pass\n";);break;; case8:printf(";Good\n";);break;;case9:; case10:printf(";VeryGood\n";);break; default:printf(";Fail\n";); }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.CBCDAA
C.ABCDAA
D.DCCDAC
正确答案:CBCDAA
5、分析以下程序,下列说法正确的是()main(){intx=5,a=0,b=0;; if(x=a+b); printf(";****";);; else; printf(";####";);; }
A.输出####
B.输出****
C.通过编译,但不能连接
D.有语法错,不能通过编译
正确答案:输出####
6、有如下程序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\n";,y);}该程序的输出结果是()
A.0.500000
B.1.000000
C.0.250000
D.0.000000
正确答案:0.500000
7、以下不正确的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)
8、int a=3,b=2,c=1; if(a>;b>;c)a=b; else a=c;则a 的值是()
A.2
B.0
C.1
D.3
正确答案:1
9、有以下程序main(){int a=5,b=4,c=3,d=2;if(a>;b>;c)printf(";%d\n";,d);else if((c-1>;=d)==1)printf(";%d\n";,d+1);else printf(";%d\n";,d+2);}执行后输出结果是()
A.3
B.2
C.4
D.编译时出错
正确答案:3
10、C 语言的if 语句嵌套时,if 与else 的配对关系是:每个else总是与它上面的if配对。
A.正确
B.错误
正确答案:错误
第六章单元测试
1、以下叙述中正确的是()。
A.continue 语句的作用是:在执行完本次循环体中剩余语句后,终止循环
B.只能在循环体内和switch 语句体内使用break 语句
C.在while 语句和do-while 语句中无法使用continue 语句
D.当break 出现在循环体中的switch 语句体内时,其作用是跳出该switch 语句体,并终止循环
正确答案:只能在循环体内和switch 语句体内使用break 语句
2、以下不构成无限循环的语句或者语句组是()。
A.n=10; while(n);{n--;}
B.for(n=0,i=1;i++) n+=i
C.n=0;do{++n;}while(n<;=0)
D.n=0;while(1){n++;}
正确答案:n=0;do{++n;}while(n<;=0)
3、下列语句中,有语法错误,不能编译的是()。
A.do 2; while (a == b)
B.while (x = y) 5
C.do x++ while (x == 10)
D.while (0)
正确答案:do x++ while (x == 10)
4、以下程序段中,while循环执行的次数是()。int k =0;while (k = 1){;k++;}
A.执行一次
B.有语法错误,不能执行
C.无限次
D.一次也不执行
正确答案:无限次
5、以下程序段执行后,输出结果是int i, sum=0;for (i=1; i<;6; i++){;sum += i;}printf(";%d";, sum)。
A.0
B.不确定
C.14
D.15
正确答案:15
6、循环语句“for (x=0, y=0; (y!=123)) || (x<;4); x++) ;”的循环次数为()。
A.4次
B.不确定
C.3次
D.无限次
正确答案:无限次
7、下述程序代码段输出的结果是()。for(k=1;k<;10;k++) ;printf(";k=%d,k=%o,k=%x";, k, k, k)
A.k=11,k=013,k=0xb
B.k=10,k=12,k=13
C.k=11,k=12,k=11
D.k=11,k=13,k=b
正确答案:k=11,k=13,k=b
8、以下程序段中,while循环的循环次数是()。int i = 0;while (i <; 10){;if (i <; 1);{;continue;;};if (i == 5);{;break;;};i++;}
A.死循环
B.6
C.1
D.10
正确答案:死循环
9、对于“for(表达式1;表达式2;表达式3)循环体”,当表达式2 的值为真时,会重复执行表达式1,循环体和表达式3。
A.正确
B.错误
正确答案:错误
10、在循环语句“do ;语句 while (条件);”中,当条件为0时结束循环。
A.正确
B.错误
正确答案:正确
第七章单元测试
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++
B.sum=sum*i
C.fac=fac+sum
D.fac=fac*i
正确答案:fac=fac*i
2、若有整型变量i,j,则以下程序段中内循环体“printf(";ok";);”的循环次数为()。for (i=5; i; i--){;for (j=0; j<;4; j++);{;printf(";ok";);;}}
A.30
B.20
C.24
D.25
正确答案: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.32
C.11
D.33
正确答案:32
4、假定a和b为int型变量,则执行以下语句后b的值为()。a = 1;b = 10;do{;b -= a;;a++;} while (b-- <; 0)。
A.8
B.9
C.-1
D.-2
正确答案: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.4
B.2
C.8
D.6
正确答案: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、以下程序段的输出结果是()。int 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.31
C.20
D.13
正确答案:31
8、以下程序段运行时,如果从键盘输入1298再回车,则输出结果为int n1, n2;scanf(";%d";, &;n2);while (n2 != 0){;n1 = n2 % 10;;n2 = n2 / 10;;printf(";%d";, n1);}
A.1
B.1298
C.9
D.8921
正确答案:8921
9、以下程序段的输出结果是()。int i=10, j=0;do{;j = j + i;;i--;} while (i >; 2);printf(";%d";, j)。
A.25
B.48
C.52
D.54
正确答案:52
10、for()和while(1)构成的都是无限循环。
A.正确
B.错误
正确答案:正确
第八章单元测试
1、如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; , 则数组a的大小是()。
A.8
B.不定
C.11
D.10
正确答案:10
2、有如下说明:;int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是()。
A.a[8]
B.a[10-1]
C.a[9]-a[0]
D.a[9]-0
正确答案:a[8]
3、下列程序执行后的输出结果是()。main() ;{int a,b[5];a=0; b[0]=3;;printf(";%d,%d";,b[0],b[1]);}。
A.3,0
B.3 ; 0
C.0,3
D.3,不定值
正确答案: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=1,2 ,3, 4 ,5
C.s=12345
D.s=5 ,4 ,3 ,2 ,1
正确答案:s=12345
5、执行下面的程序段后,变量k中的值为()。int k=3,s[2]; s[0]=k; k=s[1]*10。
A.30
B.33
C.不定值
D.10
正确答案:不定值
6、假定一个int型变量占用四个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是()。
A.3
B.6
C.40
D.10
正确答案: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][5]
B.n[2][4]
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[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.6 7
B.7 8
C.7 7
D.7 6
正确答案: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.1470
B.0650
C.输出值不定
D.5430
正确答案:0650
5、若有定义:int a[2][4];,则引用数组元素正确的是 ()。
A.a[0][4]
B.a[2][2]
C.a[0][3]
D.a[2][2+1]
正确答案:a[0][3]
6、若定义一个名为s且初值为";123";的字符数组,则下列定义错误的是()。
A.char s[]={’1';,';2';,';3';,'; ';}
B.char s[4]={';1';,';2';,';3';}
C.char s[]={";123";}
D.char s[]={‘123 ’}
正确答案:char s[]={‘123 ’}
7、设有定义:char s[12]=";string";则printf(";%d";,strlen(s));的输出结果是()。
A.11
B.7
C.12
D.6
正确答案:6
8、语句printf(";%d";,strlen(";abso12\";));的输出结果是()。
A.11
B.10
C.8
D.9
正确答案:9
9、在用字符数组来处理字符串时,应始终保证数组的长度大于字符串的实际长度。
A.正确
B.错误
正确答案:正确
10、使用字符串连接函数strcat(字符数组1,字符数组2)时,字符数组1要定义足够的长度,才能装入全部被连接的字符串,而使用strcpy(字符数组1,字符数组2)函数时,无需考虑字符数组1的长度问题。
A.正确
B.错误
正确答案:正确
第十章单元测试
1、在C语言中,若定义函数时对函数类型未加显式说明,则函数的隐含类型为()。
A.void
B.char
C.double
D.int
正确答案:int
2、在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时()。
A.由计算机系统确定是否共用一个存储单元
B.实参和形参分别占用一个独立的存储单元
C.实参和形参共用一个存储单元
D.由用户确定是否共用一个存储单元
正确答案:实参和形参分别占用一个独立的存储单元
3、在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是()。
A.由实参传递给形参,再由形参传递给实参
B.地址传递
C.单向值传递
D.由用户指定传递方式
正确答案:单向值传递
4、下面对函数的叙述,正确的是()。
A.函数中没有return语句,说明函数不带值
B.函数不能嵌套定义
C.函数中的返回值,是通过return语句获得的
D.函数中无论是否有return语句,都能返回正确值
正确答案:函数中的返回值,是通过return语句获得的
5、在C语言中规定,函数返回值的类型由()。
A.return语句中的表达式类型决定
B.调用该函数的主调函数决定
C.定义该函数时所指定的函数类型决定
D.调用该函数时系统临时决定
正确答案:定义该函数时所指定的函数类型决定
6、函数调用在程序中出现的位置一般有3种方式,下面叙述中错误的是()。
A.函数调用可以作为独立的语句存在
B.函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
正确答案:函数调用可以作为一个函数的形参
7、下面程序的输出结果是()。#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.3.000000
C.15
D.15.000000
正确答案:15.000000
8、在C语言中,函数调用语句function((a, b, c), (d, e));中参数的个数是()。
A.1
B.5
C.2
D.4
正确答案:2
9、在C语言中,程序的基本单位是文件。
A.正确
B.错误
正确答案:错误
10、在C语言中,程序进行编译的单位是文件。
A.正确
B.错误
正确答案:正确
第十一章单元测试
1、下面叙述中不正确的是()。
A.在一个函数中定义的变量只在本函数范围内有效
B.在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元
C.函数中的形参是函数自己的局部变量
D.在一个函数内的复合语句中定义的变量只在本函数范围内有效
正确答案:在一个函数内的复合语句中定义的变量只在本函数范围内有效
2、下面叙述中不正确的是()。
A.在C语言中,不能在一个函数的内部再定义函数
B.函数的类型可以是整型、实型、字符型,但不可以是指针型
C.在没有声明函数返回值类型时,函数返回值的类型默认为int
D.函数可以没有形参,可是函数名后的一对括号却不能省略
正确答案:函数的类型可以是整型、实型、字符型,但不可以是指针型
3、下面程序的输出结果是()。#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.16
B.32
C.2
D.8
正确答案:16
4、下面程序的输出结果是()。#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.7
B.6
C.5
D.8
正确答案:5
5、下面程序的输出结果是()。#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.9
B.7
C.8
D.10
正确答案:10
6、下面程序中应该补充(填写在横线位置)的代码是()。#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)
7、下面程序中应该补充(填写在横线位置)的代码中,有错的是#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 x, int y)
B.int min(int x, int y)
C.min(int x, int y)
D.int min(int, int)
正确答案:int min(int x, int y)
8、下面程序的输出结果是()。#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; 1; 1
C.1
D.3; 3; 3
正确答案:1; 1; 1
9、在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则这是一个不合法的调用。
A.正确
B.错误
正确答案:错误
10、在一个源程序文件中定义的全局变量的作用域为从定义该变量的位置开始至本文件结束。
A.正确
B.错误
正确答案:正确
第十二章单元测试
1、若有定义int a[]={2,4,6,8,10},p=a;a的值是数组首地址,则*(p+1)的值是4。
A.正确
B.错误
正确答案:正确
2、关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相加、相减。
A.正确
B.错误
正确答案:错误
3、已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。
A.ptr1=ptr2
B.ptr2=k
C.k=*ptr1*(*ptr2)
D.k=*ptr1+*ptr2
正确答案:ptr2=k
4、若有语句int *point,a=4;和point=&;a;下面均代表地址的一组选项是()。
A.&;*a,&;a,*point
B.a,point,*&;a
C.&;a,&;*point ,point
D.*&;point,*point,&;a
正确答案:&;a,&;*point ,point
5、若有说明;int *p,m=5,n;以下正确的程序段的是()。
A.p=&;n;*p=m
B.p=&;n;scanf(";%d";,*p)
C.p=&;n;scanf(";%d";,&;p)
D.scanf(";%d";,&;n);*p=n
正确答案:p=&;n;*p=m
6、若已定义char s[10];则在下面表达式中不表示s[1]的地址是()。
A.s++
B.&;s[1]
C.&;s[0]+1
D.s+1
正确答案:s++
7、若有定义:int a[5],*p=a;则对a数组元素的正确引用是()。
A.*(a+2)
B.a+2
C.*(p+5)
D.*&;a[5]
正确答案:*(a+2)
8、有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&;a[3], b; b=p[5]; b中的值()。
A.5
B.9
C.8
D.6
正确答案: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,a=a+10;p<;a;p++)
C.for(p=a;p<;(a+10);p++)
D.for(p=a;a<;(p+10);a++)
正确答案:for(p=a;p<;(a+10);p++)
第十三章单元测试
1、指针数组的每个元素都是一个指针变量。
A.正确
B.错误
正确答案:正确
2、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。
A.正确
B.错误
正确答案:正确
3、下面程序段的运行结果是; 。; char a[ ]=”language” , *p ; p=a ; while (*p!=’u’) { printf(“%c”,*p-32); p++ ; }
A.langUAGE
B.language
C.LANG
D.LANGUAGE
正确答案:LANG
4、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
A.c=*p1+*p2
B.p1=p2
C.p2=c
D.c=*p1*(*p2)
正确答案:p2=c
5、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()。
A.*p=max(a,b)
B.p=max(a,b)
C.*p=max
D.p=max
正确答案:p=max
6、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是()。
A.*pmax(a,b)
B.(*p)max(a,b)
C.(*p)(a,b)
D.*p(a,b)
正确答案:(*p)(a,b)
7、下面选项属于函数指针的是()。
A.(int*)p(int, int)
B.两者都不是
C.int *p(int, int)
D.两者都是
正确答案:两者都不是
8、若有以下函数首部;int; fun(double; x[10], int; *n),则下面针对此函数的函数声明语句中正确的是()。
A.int; fun(double *x, int n)
B.int; fun(double *, int *)
C.int; fun(double x, int *n)
D.int; fun(double; , int )
正确答案:int; fun(double *, int *)
9、已定义以下函数
;fun(int;*p)
;{; return;*p; }
;该函数的返回值是()。
A.形参p中存放的值
B.形参p的地址值
C.形参p所指存储单元中的值
D.不确定的值
正确答案:形参p所指存储单元中的值
10、以下正确的程序段是()。
A.char str[20];scanf(";%s";,&;str[2])
B.char *p;scanf(";%s";,p)
C.char str[20],*p=str;scanf(";%s";,p[2])
D.char str[20];scanf(";%s";,&;str)
正确答案:char str[20];scanf(";%s";,&;str[2])
第十四章单元测试
1、预处理命令的前面必须加一个“#”号。
A.正确
B.错误
正确答案:正确
2、宏定义不是C语句,不必在行末尾加分号。
A.正确
B.错误
正确答案:正确
3、以下程序的输出结果为 ;。#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf(“%4.1f”,S(a+b));}
A.33.5
B.9.5
C.12.5
D.12.0
正确答案:9.5
4、以下程序的运行结果是。;#define MIN(x,y) (x)<;(y)?(x):(y); main();{;int i=10,j=15,k;;k=10*MIN(i,j);;printf(“%d”,k);; }
A.15
B.10
C.100
D.150
正确答案:15
5、若有以下宏定义如下:#define N 2;#define Y(n) ((N+1)*n);则执行语句z=2*(N+Y(5));后的结果是。
A.z无定值
B.z=70
C.z=34
D.语句有错误
正确答案:z=34
6、C语言的编译系统对宏命令的处理是。
A.在对源程序中其它成份正式编译之前进行的
B.和C程序中的其它语句同时进行编译的
C.在程序连接时进行的
D.在程序运行时进行的
正确答案:在对源程序中其它成份正式编译之前进行的
7、以下有关宏替换的叙述不正确的是。
A.宏替换只是字符替换
B.宏名无类型
C.宏替换不占用运行时间
D.宏名必须用大写字母表示
正确答案:宏名必须用大写字母表示
8、在宏定义#define PI 3.14159中,用宏名PI代替一个。
A.字符串
B.单精度数
C.常量
D.双精度数
正确答案:字符串
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.C程序在执行过程中对预处理命令行进行处理
B.在程序中凡是以#号开始的语句行都是预处理命令行
C.以下是正确的宏定义#define IBM()PC
D.预处理命令行都必须以#号开始
正确答案:C程序在执行过程中对预处理命令行进行处理
第十五章单元测试
1、下面结构体的定义语句中,错误的是()。
A.struct ord {int x; int y; int z;}; struct ord a
B.struct {int x; int y; int z;}a
C.struct ord {int x; int y; int z;}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.num2=t1.num2
B.t2.num1=t1.num1
C.t1=t2
D.t2.mark=t1.mark
正确答案:t1=t2
4、若有如下说明语句,则下面叙述中不正确的是()。struct student{;long num;;char name[20];;char sex;;int age;} stu。
A.struct student是结构体类型
B.num,name,sex,age都是结构体成员名
C.stu是结构体类型名
D.struct是结构体类型关键字
正确答案:stu是结构体类型名
5、若有如下说明语句,则定义了()。union student{;long num;;char name[20];;char sex;;int age;} 。
A.结构体类型
B.结构体变量
C.共用体类型
D.共用体变量
正确答案:共用体类型
6、当定义一个结构体变量时,系统分配给它的内存空间字节数是()。
A.结构体中最后一个成员所需内存字节数
B.结构体中第一个成员所需内存字节数
C.各成员所需内存字节数的总和
D.成员中占内存字节数最大的
正确答案:各成员所需内存字节数的总和
7、以下程序在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.3
B.16
C.4
D.8
正确答案:16
8、若有以下定义,则对变量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.birthday.year = 2003;student1.birthday.month = 5
student1.birthday.day = 1
C.student1.year = 2003;student1.month = 5
student1.day = 1
D.birthday.year = 2003;birthday.month = 5
birthday.day = 1
正确答案:student1.birthday.year = 2003;student1.birthday.month = 5
student1.birthday.day = 1
9、若有以下定义,则下面各输出语句中能输出字母J的是()。struct student{;int num;;char name[20];} ;;struct student school[10000] = {{1001, ";Mike";}, {1002, ";James";}, {1003, ";Tom";}}。
A.printf(";%c";, school[0].name[0])
B.printf(";%c";, school[1].name[0])
C.printf(";%c";, school[2].name[0])
D.printf(";%c";, school[1].name)
正确答案:printf(";%c";, school[1].name[0])
10、为了表示结构体变量中的成员,以下三种形式都是正确的。1、结构体变量.成员名2、(*结构体指针变量).成员名3、结构体指针变量->;成员名
A.正确
B.错误
正确答案:正确
第十六章单元测试
1、文件指针和位置指针都是随着文件的读写操作在不断改变。
A.正确
B.错误
正确答案:错误
2、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。
A.正确
B.错误
正确答案:正确
3、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是()。
A.读或读写
B.B和C都正确
C.追加
D.只写
正确答案:读或读写
4、下列关于C语言数据文件的叙述中正确的是()。
A.文件由二进制数据序列组成,C语言只能读写二进制文件
B.文件由ASCII码字符序列组成,C语言只能读写文本文件
C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
正确答案:文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
5、当顺利执行了文件关闭操作时,fclose函数的返回值是()。
A.-1
B.TRUE
C.1
D.0
正确答案:0
6、如果需要打开一个已经存在的非空文件“Demo”进行修改,下面正确的选项是()。
A.fp=fopen(";Demo";,";r";)
B.fp=fopen(";Demo";,";ab+";)
C.fp=fopen(";Demo";,";r+";)
D.fp=fopen(";Demo";,";w+";)
正确答案:fp=fopen(";Demo";,";ab+";)
7、系统的标准输入文件操作的数据流向为()。
A.从键盘到内存
B.从内存到U盘
C.从硬盘到内存
D.从显示器到磁盘文件
正确答案:从键盘到内存
8、若fp是指向某文件的指针,文件操作结束之后,关闭文件指针应使用下列()语句。
A.fp=fclose
B.fclose(fp)
C.fp=fclose()
D.fclose
正确答案:fclose(fp)
9、关于文件理解不正确的为()。
A.每个打开文件都和文件结构体变量相关联,程序通过该变量中访问该文件
B.所谓文件一般指存储在外部介质上数据的集合
C.C语言把文件看作是字节的序列,即由一个个字节的数据顺序组成
D.系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区
正确答案:每个打开文件都和文件结构体变量相关联,程序通过该变量中访问该文件
10、若要用fopen函数打开一个新的二进制文件,该文件既要能读也要能写,则文件方式字符串应是()。
A.“wb+”
B.“rb+”
C.“ab+”
D.“ab”
正确答案:“wb+”