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