第一章 单元测试
1、单选题:
C语言是一种( )
选项:
A:汇编语言
B:机器语言
C:高级语言
D:低级语言
答案: 【高级语言】
2、单选题:
下列各项中,不是C语言的特点是()。
选项:
A:能实现汇编语言的大部分功能
B:语言简洁、紧凑,使用方便
C:有较强的网络操作功能
D:数据类型丰富,可移植性好
答案: 【有较强的网络操作功能】
3、单选题:
下列叙述错误的是( )。
选项:
A:C程序中的每条命令都用一个分号作为结束符
B:C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写
C:C程序中的变量必须先定义,后使用
D:C程序中的每条语句都用一个分号作为结束符
答案: 【C程序中的每条命令都用一个分号作为结束符】
4、单选题:
一个C程序的执行是从( )。
选项:
A:本程序的main函数开始,到main函数结束
B:本程序的main函数开始,到本程序文件的最后一个函数结束
C:本程序文件的第一个函数开始,到本程序main函数结束
D:本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
答案: 【本程序的main函数开始,到main函数结束】
5、单选题:
以下叙述不正确的是( )。
选项:
A:一个C源程序可由一个或多个函数组成
B:C程序的基本组成单位是函数
C:在C程序中,注释说明只能位于一条语句的后面
D:一个C源程序必须包含一个main函数
答案: 【在C程序中,注释说明只能位于一条语句的后面】
第二章 单元测试
1、单选题:
已知定义整形变量a,b,c的值分别是2、3、4,运算表达式a*=16+(b++) – (++c)以后,a值为( )
选项:
A:29
B:28
C:31
D:30
答案: 【28】
2、单选题:
在C语言中,要求参加运算的数必须是整数的运算符是( )。
选项:
A:++
B:!
C:
D:%
答案: 【%】
3、单选题:
合法的c标识符是( )。
选项:
A:h1
B:$s
C:a>b
D:5dm
答案: 【h1】
4、单选题:
执行下列程序后,显示的结果是( ) main ( ) { int a; printf (“%d
”,(a=3*5,a*4, a+5));}
选项:
A:15
B:10
C:20
D:65
答案: 【20】
5、单选题:
执行下列程序中的输出语句后,x的值是( )。main() {int x ; printf(“%d
”,(x=4*5,x*2,x+20));}
选项:
A:80
B:60
C:40
D:20
答案: 【20】
6、判断题:
表达式1/4+2.75的值是3。
选项:
A:对
B:错
答案: 【错】
7、单选题:
下列转义字符不正确的是( )。
选项:
A:’53’
B:’’
C:’’
D:’’
答案: 【’’】
8、判断题:
对于int n=3;执行n+=n-=n*n;后n的值是9。
选项:
A:错
B:对
答案: 【错】
9、判断题:
在C语言中8.9e1.2是不正确的实型常量。
选项:
A:对
B:错
答案: 【对】
10、判断题:
对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。
选项:
A:错
B:对
答案: 【对】
11、判断题:
若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。
选项:
A:错
B:对
答案: 【错】
12、判断题:
“!”的优先级可以比“/”高。
选项:
A:对
B:错
答案: 【对】
13、判断题:
两个char 型数据相加,其结果为char型。
选项:
A:错
B:对
答案: 【错】
14、判断题:
若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。
选项:
A:错
B:对
答案: 【错】
15、判断题:
在C程序中,%是只能用于整数运算的运算符。
选项:
A:错
B:对
答案: 【对】
16、判断题:
以下各数均不是合法的八进制数:256、03A2、-0127。
选项:
A:对
B:错
答案: 【错】
17、判断题:
C语言程序中,任何英语单词均可以作标识符。
选项:
A:错
B:对
答案: 【错】
18、判断题:
若有宏定义:#define M(x,y,z) x*y+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。
选项:
A:对
B:错
答案: 【错】
19、判断题:
C语言中不区分大小写英文字母。
选项:
A:错
B:对
答案: 【错】
20、判断题:
程序中的变量代表内存中的一个存储单元,它的值不可以随时修改。
选项:
A:错
B:对
答案: 【错】
21、判断题:
0x173是正确的十六进制常数。
选项:
A:对
B:错
答案: 【对】
22、判断题:
逻辑表达式-5&&!8的值为1。
选项:
A:错
B:对
答案: 【错】
23、单选题:
下面程序的输出是________#include<stdio.h>int main(){ int k=11; printf(“k=%d,k=%o,k=%x”,k,k,k); return 1;}
选项:
A:
k=11,k=013,k=0xb
B:
k=11,k=12,k=11
C:
k=11,k=13,k=13
D:
k=11,k=13,k=b
答案: 【
k=11,k=13,k=b
】
24、单选题:
在下列选项中,不正确的赋值语句是_______.
选项:
A:
k=i=j;
B:
a=a+b=1;
C:
++t;
D:
n1=(n2=(n3=0));
答案: 【
a=a+b=1;
】
25、单选题:
下面程序的输出的是_________. #include<stdio.h> void main() {int x=10,y=3; printf(“%d”,y=x/y);}
选项:
A:
0
B:
不确定的值
C:
3
D:
1
答案: 【
3
】
26、单选题:
已知字母A的ASCII码为十进制的65,下面程序的输出是_________. #include<stdio.h> void main() {char ch1,ch2; ch1=’A’+’5′-‘3′; ch2=’A’+’6’-‘3’; printf(“%d,%c”,ch1,ch2); }
选项:
A:
不确定的值
B:
67,D
C:
B,C
D:
C,D
答案: 【
67,D
】
27、单选题:
为表示关系x≥y≥z,应使用C语言表达式____.
选项:
A:
(x>=y)AND(y>=z)
B:
(x>=y) & (y>=z)
C:
(x>=y>=z)
D:
(x>=y)&&(y>=z)
答案: 【
(x>=y)&&(y>=z)
】
28、单选题:
下面程序的输出结果是_______. #include<stdio.h> void main() { int a=-1, b=4, k; k=(++a<=0)&&(b–<=0); printf(“%d,%d,%d”,k,a,b); }
选项:
A:
0,1,2
B:
1,0,3
C:
0,0,3
D:
1,1,2
答案: 【
0,0,3
】
29、单选题:
若有以下定义和语句: int a=010, b=0x10, c=10; printf(“%d,%d,%d”,a,b,c);则输出结果是________.
选项:
A:
8,8,10
B:
8,10,10
C:
8,16,10
D:
10,10,10
答案: 【
8,16,10
】
30、单选题:
已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式 x+a%3*(int)(x+y)%2/4 的值是________.
选项:
A:
2.5
B:
2.4
C:
2.75
D:
0
答案: 【
2.5
】
31、单选题:
假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;则该程序段执行后,m的值是_______.假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;则该程序段执行后,m的值是_______.
选项:
A:
2
B:
4
C:
1
D:
3
答案: 【
1
】
32、单选题:
有以下程序,其中k的初值为八进制数 #include <stdio.h> main() {int k=011; printf(“%d”,k++); }程序运行后的输出结果是________
选项:
A:
12
B:
9
C:
10
D:
11
答案: 【
9
】
33、单选题:
有以下程序 #include #define SUB(a) (a)-(a) main() { int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d”,d); } 程序运行后的输出结果是_______
选项:
A:
-20
B:
-12
C:
0
D:
10
答案: 【
-20
】
34、单选题:
有以下定义语句,编译时会出现编译错误的是_______
选项:
A:
char a=’aa’;
B:
char a=’a’;
C:
char a=’-’
D:
char a=’’;
答案: 【
char a=’aa’;
】
35、单选题:
以下选项中,不正确的 C 语言浮点型常量是_______
选项:
A:
0.0
B:
2e4.2
C:
0.12
D:
160
答案: 【
2e4.2
】
36、单选题:
以下选项中,_______是不正确的 C 语言字符型常量。
选项:
A:
‘A’
B:
“a”
C:
“A”
D:
‘a’
答案: 【
“a”
】
37、单选题:
以下合法的标识符是_______。
选项:
A:
int
B:
_a12
C:
3ce
D:
stu#
答案: 【
_a12
】
38、单选题:
已知int x=023,表达式++x的值是_______。
选项:
A:
18
B:
17
C:
19
D:
20
答案: 【
20
】
39、单选题:
已知int x=10,表达式x+=x-=x-x的值是_______。
选项:
A:
20
B:
30
C:
10
D:
40
答案: 【
20
】
40、单选题:
在 C 语言中,字符型数据在计算机内存中,以字符的_______形式存储。
选项:
A:
原码
B:
反码
C:
BCD码
D:
ASCII 码
答案: 【
ASCII 码
】
41、单选题:
若变量x、i、j和k都是int型变量,则计算下面表达式后,x的值是_______。x=(i=4,j=16,k=32)
选项:
A:32
B:16
C:
52
D:
4
答案: 【32】
42、单选题:
下列不正确的转义字符是_______。
选项:
A:
”
B:
””
C:’074′
D:” ‘
答案: 【’074’】
43、单选题:
选项:
A:3*a*e/b*c
B:a/b/c*e*3
C:3*a*e/b/c
D:a*e/c/b*3
答案: 【3*a*e/b*c】
44、单选题:
要为字符型变量 a赋初值,下列语句中哪一个是正确的_______。
选项:
A:
char a=”3″;
B:
char a=*;
C:
char a=%;
D:
char a=‘3’;
答案: 【
char a=‘3’;
】
45、单选题:
字符串”ABC”在内存占用的字节数是_______。
选项:
A:
3
B:
6
C:
8
D:
4
答案: 【
4
】
46、单选题:
若有说明语句:char c=’:’;则变量c在内存占用的字节数是_______。
选项:
A:4
B:
3
C:
2
D:
1
答案: 【
1
】
47、单选题:
C语言中,要求运算对象只能为整数的运算符是_______。
选项:
A:
%
B:
>
C:
*
D:
/
答案: 【
%
】
48、单选题:
若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是_______。
选项:
A:
2
B:
2.0
C:
2.5
D:
1
答案: 【
2.0
】
49、单选题:
sizeof (double)的结果值是_______。
选项:
A:
4
B:
8
C:
出错
D:
2
答案: 【
8
】
50、单选题:
以下用户标识符中,合法的是_______。
选项:
A:
a+b
B:
nit
C:
int
D:
123
答案: 【
nit
】
51、单选题:
表达式18/4*sqrt(4.0)/8值的数据类型是_______。
选项:
A:int
B:
不确定
C:double
D:float
答案: 【double】
52、单选题:
已知定义整形变量a,b,c的值分别是2、3、4,运算表达式a*=16+(b++) – (++c)以后,a值为( )。
选项:
A:31
B:28
C:30
D:29
答案: 【28】
53、单选题:
在C语言中,要求参加运算的数必须是整数的运算符是( )。
选项:
A:!!
B:++
C:!
D:%
答案: 【%】
54、单选题:
合法的c标识符是( )。
选项:
A:h1
B:5dm
C:a>b
D:$s
答案: 【h1】
55、单选题:
执行下列程序后,显示的结果是( ) main ( ) { int a; printf (“%d n”,(a=3*5,a*4, a+5));}
选项:
A:20
B:65
C:10
D:15
答案: 【20】
56、判断题:
表达式1/4+2.75的值是3。( )
选项:
A:对
B:错
答案: 【错】
第三章 单元测试
1、单选题:
以下选项中不是C语句的是( )
选项:
A:k=i=j;
B:{a/=b=1;b=a%2;}
C:;
D:++t
答案:
2、单选题:
以下语句的输出结果是 ( ) printf(“%d
“,strlen(” “65xff
“));
选项:
A:8
B:14
C:5
D:输出项不合法,无法正常输出
答案:
3、单选题:
若变量已正确说明为float型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是( )
选项:
A:10<回车>22<回车>33<回车>
B:10.0<回车>22.0 33.0<回车>
C:10.0,22.0,33.0<回车>
D:10 22<回车>33<回车>
答案:
4、单选题:
调用getchar和putchar函数时,必须包含的头文件是( )。
选项:
A:以上都不对
B:stdlib.h
C:define
D:stdio.h
答案:
5、单选题:
使用scanf(“a=%d,b=%d”,&a,&b)为变量a,b赋值。要使a,b均为50,正确的输入是( )
选项:
A:50,50
B:a=50 b=50
C:a=50,b=50
D:50 50
答案:
6、单选题:
“putchar(70); ” 这一C语句输出的结果为( )
选项:
A:C
B:提示语法错误
C:F
D:70
答案:
7、判断题:
C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。
选项:
A:对
B:错
答案:
8、判断题:
表达式语句和表达式没有什么区别。
选项:
A:错
B:对
答案:
9、判断题:
C 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。
选项:
A:错
B:对
答案:
10、判断题:
C 语言程序中可以有多个函数 , 但只能有一个主函数。
选项:
A:错
B:对
答案:
11、判断题:
C 语言标准输出操作中 ,putchar() 函数可以输出显示一个字符串。
选项:
A:对
B:错
答案:
12、判断题:
C 语言标准格式输出函数 printf() 的参数表是由若干个表达式组成。
选项:
A:错
B:对
答案:
13、单选题:
以下叙述中正确的是
选项:
A:
用C程序实现的算法可以既没有输入也没有输出
B:
用C程序实现的算法必须要有输入和输出操作
C:用C程序实现的算法可以没有输入但必须要有输出
D:用C程序实现的算法可以没有输出但必须要有输入
答案:
14、单选题:
在C语言中,执行下面两个语句后,输出的结果为( )。 char c1=97, c2=98;printf(“%d %c”,c1,c2);
选项:
A:
97 98
B:
a b
C:
97 b
D:
a 98
答案:
15、单选题:
下列语句中符合C语言语法的赋值语句是
选项:
A:
a=7+b+c=a+7;
B:
a=7+b,c=a+7;
C:
a=7+b++=a+7;
D:
a=7+b,b++,a+7
答案:
16、单选题:
在C语言语言中,退格符是 ( )
选项:
A:
\f
B:
\b
C:
\n
D:
\t
答案:
17、单选题:
putchar()函数可以向终端输出一个
选项:
A:
实型变量值
B:
字符或字符型变量值
C:
字符串
D:
整型变量表达式值
答案:
18、单选题:
以下选项中不是C语句的是( )。
选项:
A:
{a/=b=1;b=a%2;}
B:
;
C:
++t
D:
k=i=j;
答案:
19、单选题:
有定义语句:int a=5,b,不能给b赋2的赋值语句是( )。
选项:
A:
b=b+2;
B:
b=2%a;
C:
b=a/2;
D:
b=5;b=2;
答案:
20、单选题:
已有定义int a=-2;和输出语句printf(“%8lx”,a);以下正确的叙述是( )。
选项:
A:
%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
B:
%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
C:
%x是格式符的一种,它可以适用于任何一种类型的数据
D:
整型变量的输出形式只有%d一种
答案:
21、单选题:
以下语句的输出结果是 ( )。 printf(“%d”,strlen(” “5ÿ”));
选项:
A:
输出项不合法,无法正常输出
B:
14
C:
5
D:
8
答案:
22、单选题:
若变量已正确说明为float型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是( )。
选项:
A:
10.0,22.0,33.0<回车>
B:
10.0<回车>22.0 33.0<回车>
C:
10 22<回车>33<回车>
D:
10<回车>22<回车>33<回车>
答案:
23、单选题:
使用scanf(“a=%d,b=%d”,&a,&b)为变量a,b赋值。要使a,b均为50,正确的输入是( )。
选项:
A:
a=50 b=50
B:
a=50,b=50
C:
50,50
D:
50 50
答案:
24、单选题:
调用getchar和putchar函数时,必须包含的头文件是( )。
选项:
A:
stdio.h
B:
stdlib.h
C:
其余选项都不对
D:
define
答案:
25、单选题:
以下叙述中不正确的是( )。
选项:
A:
在C语言中,整数可以以十进制、八进制或十六进制的形式输出
B:
使用putchar函数可以不要输出项
C:
使用putchar函数时,必须在之前包含头文件stdio.h
D:
调用printf函数时,必须要有输出项
答案:
26、单选题:
putchar()函数可以向终端输出一个( )。
选项:
A:
整型变量表达式值
B:
字符或字符型变量
C:
实型变量值
D:
字符串
答案:
27、单选题:
用getchar()函数可以从键盘读入一个( )。
选项:
A:
字符或字符型变量
B:
字符串
C:
实型变量值
D:
整型变量表达式值
答案:
第四章 单元测试
1、单选题:
若要求在if后的圆括号中表示a不等于0的关系,能正确表示这一关系的表达式是( )。
选项:
A:a
B:a=0
C:!a
D:a<>0
答案:
2、单选题:
以下程序段,运行后的输出结果是( )char m=’b’; if(m++>’b’) printf(“%c
“,m); else printf(“%c
“,m–);
选项:
A:c
B:d
C:b
D:a
答案:
3、单选题:
设a=1,b=2,c=3,d=4,则表达式a<b?b:c<d?a:b的结果为( )。
选项:
A:2
B:1
C:3
D:4
答案:
4、单选题:
下列叙述中正确的是( )。
选项:
A:break语句必须与switch语句中的case配对使用
B:在switch语句中必须使用default
C:在switch语句中,不一定使用break语句
D:break语句只能用于switch语句
答案:
5、单选题:
以下程序段的输出结果是( )。 int a=13,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf(“%d”,m);
选项:
A:1
B:2
C:3
D:4
答案:
6、判断题:
逻辑表达式的值只能为1或0。
选项:
A:对
B:错
答案:
7、判断题:
在switch语句中,每一个的case常量表达式的值可以相同。
选项:
A:对
B:错
答案:
8、判断题:
在switch语句中,多个case可以共用一组执行语句。
选项:
A:错
B:对
答案:
9、单选题:
下列关于运算符优先顺序的描述中正确的是( )。
选项:
A:
逻辑运算符< 关系运算符< 算术运算符< 赋值运算符
B:
赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
C:
算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
D:
关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
答案:
10、单选题:
能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )。
选项:
A:
(x>=1)||(x<=10)&&(x>=200)||(x<=210)
B:
(x>=1)||(x<=10)||(x>=200)||(x<=210)
C:
(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D:
(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
答案:
11、单选题:
在C语言中,设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( )。
选项:
A:
0
B:
1
C:
2
D:
3
答案:
12、单选题:
设有如下定义: int a=2,b; 则执行b=a&&1;语句后,b的结果是( )。
选项:
A:
0
B:
1
C:
2
D:
3
答案:
13、单选题:
设a=3,b=4,c=5,则表达式 !(a>b)&&!c||1的结果是( )。
选项:
A:
1
B:
4
C:
2
D:
0
答案:
14、单选题:
能正确表示a 和 b同时为正或同时为负的逻辑表达式是( )。
选项:
A:
(a>=0||b>=0)&&(a<0||b<0)
B:
(a+b>0)&&(a+b<=0)
C:
a*b>0
D:
(a>=0&&b>=0)&&(a<0&&b<0)
答案:
15、单选题:
以下程序段的输出结果是( )。
int a=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf(“a=%d b=%d c=%d”,a,b,c);
选项:
A:
a=50 b=30 c=50
B:
a=10 b=30 c=10
C:
a=10 b=50 c=10
D:
a=50 b=30 c=10
答案:
16、单选题:
有如下程序
int main( )
{ float x=2.0,y;
if(x<0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf(“%f”,y); return 0;
}
该程序的输出结果是( )。
选项:
A:
0.500000
B:
0.250000
C:
0.000000
D:
1.000000
答案:
17、单选题:
若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )。
选项:
A:
a
B:
!a
C:
a<>0
D:
a=0
答案:
18、单选题:
有如下程序段:
int x =1, y=1 ;
int m , n;
m=n=1;
switch (m)
{ case 0 : x=x*2;
case 1: {
switch (n)
{ case 1 : x=x*2;
case 2 : y=y*2;break;
case 3 : x++;
}
}
case 2 : x++;y++;
case 3 : x*=2;y*=2;break;
default:x++;y++;
}
执行完成后,x和y 的值分别为( )。
选项:
A:
x=6 y=6
B:
x=2 y=2
C:
x=7 y=7
D:
x=2 y=1
答案:
19、单选题:
以下程序的输出结果是( )
int main()
{ int a=1,b=3,c=5,d=4,x;
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
printf(“x=%d”,x); return 0;
}
选项:
A:
1
B:
2
C:
3
D:
6
答案:
20、单选题:
在C语言中,设x=1, y=2, 执行表达式 (x>y)?x++:++y以后x和y的值分别为( )。
选项:
A:
1和3
B:
2和3
C:
1和2
D:
2和2
答案:
21、单选题:
以下程序段的输出结果是( )。int a=13,b=21,m=0;switch(a%3){case 0:m++;break;case 1:m++;switch(b%2){default:m++;case 0:m++;break;}}printf(“%d”,m);
选项:
A:
1
B:
4
C:
3
D:
2
答案:
第五章 单元测试
1、单选题:
若i为整型变量,则以下循环执行的次数是( )。(单选)for(i=0;i<=5;i++) printf(”%d”,i++);
选项:
A:5次
B:6次
C:3次
D:2次
答案:
2、单选题:
下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为( )。#include “stdio.h”main(){int i,ch, n[10]; for(i=0;i<10;++i) n[i]=0; while((ch=getchar())!=‘
’) if(ch>=‘0’ && ch<=‘9’) ________; for(i=0;i<10;++i) printf(”数字%d出现的次数是:%d
“,i,n[i]);}
选项:
A:i++
B:n[i]++
C:n[ch-‘0’]++
D:n[ch]++
答案:
3、单选题:
下列程序段的输出结果是( )。int x=3; do {printf(“%3d”,x-=2);} while(!(–x));
选项:
A:0
B:1
C:-2
D:死循环
答案:
4、单选题:
若x是int型变量,且有下面的程序片段: for(x=5;x<8;x++) printf((x/2)?(“**%d”):(“##%d”),x);该程序片段的输出结果是( )。
选项:
A:**5##6**7##8
B:**5**6**7
C:##5**6##7**8
D:**5##6**7
答案:
5、单选题:
C 语言中( )。
选项:
A:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
B:do-while语句构成的循环必须用break语句才能退出
C:do-while语句构成的循环,当while语句中的表达式值为零时结束循环
D:不能使用do-while语句构成的循环
答案:
6、判断题:
break语句只能用于循环语句中。
选项:
A:对
B:错
答案:
7、判断题:
continue语句可以用于switch结构中。
选项:
A:对
B:错
答案:
8、判断题:
在C语言中,为了结束由do-while语句构成的循环, while后一对圆括号中表达式的值应该能够为0
选项:
A:错
B:对
答案:
9、判断题:
三种循环(while语句、 for语句、 do-while语句)都可以用来处理同一个问题,一般它们可以相互代替。
选项:
A:对
B:错
答案:
10、判断题:
for(i=0,k=-1;k=1;k++,i++)printf(“*”); 循环体一次也不执行。
选项:
A:对
B:错
答案:
11、判断题:
for(i=4;i>1;i–)for(j=1;j<i;j++)putchar(‘#’);输出为######。
选项:
A:错
B:对
答案:
12、单选题:
对下面程序段描述正确的是______. int x=0,s=0; while (!x!=0) s+=++x; printf(“%d”,s);
选项:
A:运行程序段后输出1
B:程序段中的控制表达式是非法的
C:程序段循环无数次
D:运行程序段后输出0
答案:
13、单选题:
下面程序段的输出结果是______. x=3; do { y=x–; if (!y) {printf(“*”);continue;} printf(“#”); } while(x=2);
选项:
A:##*
B:##
C:死循环
D:输出错误信息
答案:
14、单选题:
下面程序的输出结果是_______. #include<stdio.h> void main( ) { int n=4; while (n–) printf(“%d “,n–); }
选项:
A:2 1 0
B:2 0
C:3 2 1
D:3 1
答案:
15、单选题:
以下程序运行后的输出结果是________. #include<stdio.h> void main() { int i=10,j=0; do { j=j+1; i–; }while(i>2); printf(“%d”,j); }
选项:
A:51
B:50
C:52
D:8
答案:
16、单选题:
下面程序的输出结果是________. main( ) { int i,k=0, a=0, b=0; for(i=1;i<=4;i++){ k++; if (k%2==0) {a=a+k; continue;} b=b+k; a=a+k; } printf(“k=%d a=%d b=%d”,k,a,b); }
选项:
A:k=4 a=10 b=3
B:k=4 a=10 b=4
C:k=3 a=6 b=4
D:k=5 a=10 b=4
答案:
17、单选题:
下面程序的输出结果是_______. #include<stdio.h> void main( ) {int y=9; for(;y>0;y–) {if(y%3==0) {printf(“%d”,–y); continue;} } }
选项:
A:741
B:963
C:875421
D:852
答案:
18、单选题:
有以下程序#include<stdio.h>main(){int i,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j–) {if(i*j>3) break; m=i*j; }}printf(“m=%d”,m);}程序运行后的输出结果是_______.
选项:
A:m=5
B:m=2
C:m=4
D:m=1
答案:
19、单选题:
有以下程序 #include <stdio.h> main() { int c=0,k; for (k=1;k<3;k++) switch (k) { default: c+=k; case 2: c++;break; case 4: c+=2;break; } printf(“%d”,c); } 程序运行后的输出结果是_______
选项:
A:9
B:3
C:5
D:7
答案:
20、单选题:
for(i=1;i<9;i+=1);该循环共执行了_______次。
选项:
A:9
B:10
C:8
D:7
答案:
21、单选题:
int a=2;while(a=0) a–;该循环共执行了_______次。
选项:
A:0
B:3
C:2
D:1
答案:
22、单选题:
执行完循环 for(i=1;i<100;i++);后,i 的值为_______。
选项:
A:101
B:100
C:102
D:99
答案:
23、单选题:
以下 for语句中,书写错误的是_______。
选项:
A:i=1;for(;i<5;i++);
B:for(i=1;i<5;i++);
C:for(i=1;i<5;i++)
D:for(i=1;i<5;) i++;
答案:
24、单选题:
_______语句,在循环条件初次判断为假,还会执行一次循环体。
选项:
A:do-while
B:以上都不是
C:while
D:for
答案:
25、单选题:
有以下程序段,其运行结果是_______int i=5;do{if(i%3==1)if(i%5==2){printf(“*%d”,i);break;}i++;}while(i!=0);
选项:
A:*2*6
B:*7
C:*3*5
D:*5
答案:
26、单选题:
i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是_______。for(i=5;i;i–) for(j=0;j<4;j++){…}
选项:
A:25
B:24
C:30
D:20
答案:
27、单选题:
以下不构成无限循环的语句或语句组是_______。
选项:
A:n=0; do{++n;}while(n<=0);
B:n=10; while(n);{n–;}
C:for(n=0,i=1;;i++)n+=i;
D:n=0; while(1){n++;}
答案:
28、单选题:
有以下程序段,其运行结果是_______。Int y=9;for(;y>0;y–)if(y%3==0) printf(“%d”,–y);
选项:
A:852
B:963
C:741
D:875421
答案:
29、单选题:
有以下程序段,其运行结果是_______。int i,j;for(i=3;i>=1;i–){for(j=1;j<=2;j++)printf(“%d”,i+j);printf(“”);}
选项:
A:4 3 2
5 4 3
B:2 3
3 4
4 5
C:4 5
3 4
2 3
D:2 3 4
3 4 5
答案:
第六章 单元测试
1、单选题:
以下不能对一维数组a进行正确初始化的语句是()
选项:
A:
int a[] = {0};
B:
int a[10]={10*1} ;
C:
int a[10]={};
D:
int a[10]={0,0,0,0,0};
答案:
2、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是( )
选项:
A:
整型表达式
B:
任何类型的表达式
C:
整型常量
D:
整型常量或整型表达式
答案:
3、单选题:
对以下说明语句,理解正确的是( )。 int a[10]={6,7,8,9,10};
选项:
A:
将5个初值依次赋给a[1]到a[5]
B:
因为数组长度与初值的个数不相同,所以此语句不正确
C:
将5个初值依次赋给a[6]到a[10]
D:
将5个初值依次赋给a[0]到a[4]
答案:
4、单选题:
若有以下语句,则正确的描述是()。 char a[]=”toyou”; char b[]={‘t’,’o’,’y’,’o’,’u’};
选项:
A:a数组和b数组的长度相同
B:a数组长度小于b数组长度
C:a数组等价于b数组
D:a数组长度大于b数组长度
答案:
5、单选题:
若有说明int a[3][4];则a数组元素的非法引用是( )
选项:
A:
a[1][3]
B:
a[4-2][0]
C:
a[0][2*1]
D:
a[0][4]
答案:
6、单选题:
以下能对二维数组a进行正确初始化的语句是( )。
选项:
A:
int a[2][]={{1,0,1},{5,2,3}} ;
B:
int a[][3]={{1,2,3},{4,5,6}} ;
C:
int a[2][4]={{1,2,3},{4,5},{6}} ;
D:
int a[][3]={{1,0,1},{},{1,1}} ;
答案:
7、单选题:
下面叙述正确的是( )
选项:
A:
字符串”That”小于字符串”The”
B:
两个字符串所包含的字符个数相同时,才能比较字符串
C:
字符串”STOP ”与”STOP”相等
D:
字符个数多的字符串比字符个数少的字符串大
答案:
8、判断题:
数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。
选项:
A:对
B:错
答案:
9、判断题:
在对数组全部元素赋初值时,可以省略行数,但不能省略列数
选项:
A:错
B:对
答案:
10、判断题:
数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。
选项:
A:错
B:对
答案:
11、判断题:
C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。
选项:
A:错
B:对
答案:
12、判断题:
C语言允许用字符串的方式对数组作初始化赋值。
选项:
A:错
B:对
答案:
13、判断题:
在对数组全部元素赋初值时,不可以省略行数,但能省略列数
选项:
A:错
B:对
答案:
14、单选题:
对二维数组的正确说明是
选项:
A:
int a[][]={1,2,3,4,5,6};
B:
int a[][3]={1,2,3,4,5,6};
C:
int a[2,3]={1,2,3,4,5,6};
D:
int a[2][]={1,2,3,4,5,6};
答案:
15、单选题:
以下关于数组的描述正确的是
选项:
A:
数组的大小是固定的,但所有数组元素的类型必须相同;
B:
数组的大小是可变的,但可以有不同的类型的数组元素;
C:
数组的大小是可变的,但所有数组元素的类型必须相同;
D:
数组的大小是固定的,但可以有不同的类型的数组元素;
答案:
16、单选题:
在定义int a[10];之后,对a的引用正确的是
选项:
A:
a[9]
B:
a[6.3]
C:
a(6)
D:
a[10]
答案:
17、单选题:
以下对一维数组a进行不正确初始化的是
选项:
A:
int a[10]={};
B:
int a[]={0};
C:
int a[10]={10*2};
D:
int a[10]=(0,0,0,0);
答案:
18、单选题:
以下不能对一维数组a进行正确初始化的语句是()。
选项:
A:
int a[10]={10*1} ;
B:
int a[10]={};
C:
int a[10]={0,0,0,0,0};
D:
int a[] = {0};
答案:
19、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
选项:
A:
整型常量或整型表达式
B:
整型表达式
C:
任何类型的表达式
D:
整型常量
答案:
20、单选题:
对以下说明语句,理解正确的是( )。 int a[10]={6,7,8,9,10};
选项:
A:
将5个初值依次赋给a[0]到a[4]
B:
将5个初值依次赋给a[6]到a[10]
C:
因为数组长度与初值的个数不相同,所以此语句不正确
D:
将5个初值依次赋给a[1]到a[5]
答案:
21、单选题:
若有说明:int a[][4]={0,0};则下面不正确的叙述是( )。
选项:
A:
只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
B:
数组a的每个元素都可得到初值0
C:
二维数组a的第一维大小为1
D:
当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
答案:
22、单选题:
若有说明int a[3][4];则a数组元素的非法引用是( )。
选项:
A:
a[0][4]
B:
a[4-2][0]
C:
a[1][3]
D:
a[0][2*1]
答案:
23、单选题:
设有数组定义:char arr[]=”China”;则数组arr所占空间为( )。
选项:
A:
5个字节
B:
4个字节
C:
6个字节
D:
7个字节
答案:
24、单选题:
若有以下语句,则正确的描述是()。 char a[]=”toyou”; char b[]={‘t’,’o’,’y’,’o’,’u’};
选项:
A:
a数组和b数组的长度相同
B:
a数组长度大于b数组长度
C:
a数组等价于b数组
D:
a数组长度小于b数组长度
答案:
25、单选题:
下面叙述正确的是( )。
选项:
A:
字符个数多的字符串比字符个数少的字符串大
B:
两个字符串所包含的字符个数相同时,才能比较字符串
C:
字符串”STOP ”与”STOP”相等
D:
字符串”That”小于字符串”The”
答案:
26、单选题:
在定义int a[5][4];之后,对数组元素的引用正确的是
选项:
A:
a[0,0]
B:
a[0][0]
C:
a[5][0]
D:
a[2][4]
答案:
27、单选题:
在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是
选项:
A:
5
B:
2
C:
1
D:
4
答案:
28、单选题:
在定义int a[3][4][2];后,第10个元素是( )
选项:
A:
a[1][0][1]
B:
a[2][2][1]
C:
a[2][1][2]
D:
a[2][0][1]
答案:
29、单选题:
在C语言中,引用数组元素时,其数组下标的数据类型允许是
选项:
A:
整型表达式或整型常量
B:
实型常量
C:
整型常量
D:
任何类型 的表达式
答案:
30、单选题:
有字符数组a[80],b[80],则正确的输出语句是
选项:
A:
printf(“%s,%s”,a[],b[]);
B:
puts(a,b);
C:
putchar(a,b);
D:
puts(a);puts(b);
答案:
31、单选题:
以下不能正确进行字符串赋初值的语句是
选项:
A:
char *str=”good!”;
B:
char str[5]={”g”,”o”,”o”,”d”};
C:
char str[5]=”good!”;
D:
char str[]=”good!”;
答案:
32、单选题:
已有定义:char a[]=”xyz”,b[]={”x”,”y”,”z”};,以下叙述中正确的是 ( )。
选项:
A:
a数组长度大于b数组长度
B:
a数组长度小于b数组长度
C:
上述说法都不对
D:
数组a和b的长度相同
答案:
33、单选题:
在C语言中,能实现字符串连接的函数是( )
选项:
A:
strcmp()
B:
strlen()
C:
strcpy()
D:
strcat()
答案:
34、单选题:
在C语言中,有:char str[]=”abcd”; printf(%d”,strlen(str)); 上面程序片段的输出结果是( )
选项:
A:
4
B:
3
C:
12
D:
6
答案:
35、单选题:
在C语言中,不能把字符串 “Hello!” 赋给数组b的语句是( )。
选项:
A:
char b[10]={”H”,”e”,”l”,”l”,”o”,”!”};
B:
char b[10]=”Hello!”;
C:
char b[10];b=”Hello!”;
D:
char b[10];strcpy(b,”Hello!”);
答案:
36、单选题:
函数调用:strcat(strcpy(str1,str2),str3)的功能是
选项:
A:
将串str1复制到串str2中后再连接到串str3之后
B:
将串str2复制到串str1中后再将串str3连接到串str1之后
C:
将串str1连接到串str2之后再复制到串str3之后
D:
将串str2连接到串str1之后再将串str1复制到串str3中
答案:
37、单选题:
不能把字符串:Hello!赋给数组b的语句是
选项:
A:
char b[10];strcpy(b,”Hello!”);
B:
char b[10]=”Hello!”;
C:
char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’,0};
D:
char b[10];b=”Hello!”;
答案:
第七章 单元测试
1、单选题:
以下叙述中正确的是()
选项:
A:用户自己定义的函数只能调用库函数
B:实用的C语言源程序总是由一个或多个函数组成
C:不同函数的形式参数不能使用相同名称的标识符
D:在C语言的函数内部,可以定义局部嵌套函数
答案:
2、单选题:
以下程序的输出结果是( )。 #include <stdio.h> void funA (int n) { n++; } int main() { int a=1 ; funA (a) ; printf( “%d “, a ); funA (a) ; printf( “%d
“, a ); return 0; }
选项:
A:1 1
B:2 1
C:1 2
D:2 2
答案:
3、单选题:
以下程序的输出结果是( )。#include “stdio.h”int f(int x){ int y; if (x == 0 || x== 1) return (3); y = x*x – f(x-2); return y;}
int main(){ int z; z = f(3); printf(“%d
“, z); return 0;}
选项:
A:8
B:9
C:0
D:6
答案:
4、单选题:
以下程序的输出结果是( )。#include <stdio.h>int fun(int x){ int p; if(x==0||x==1) return(3); p=x-fun(x-2); return p;}
int main( ){ printf(“%d
“,fun(7)); return 0;}
选项:
A:7
B:0
C:3
D:2
答案:
5、单选题:
以下程序的输出结果是( )。#include <stdio.h>int fun(int a,int b){ static int m=0, i=2; i +=m+1; m = i + a + b; return m;}
int main( ){ int k=4, m=1, p; p = fun( k,m ); printf(“%d,”, p); p = fun( k,m ); printf(“%d
” ,p ); return 0;}
选项:
A:8,8
B:8,16
C:8,20
D:8,17
答案:
6、判断题:
函数的实参传递到形参有两种方式值传递和地址传递。
选项:
A:错
B:对
答案:
7、判断题:
如果函数定义出现在函数调用之前,可以不必加函数声明。
选项:
A:错
B:对
答案:
8、判断题:
函数的实参可以是常量,变量或表达式。
选项:
A:错
B:对
答案:
9、单选题:
以下叙述中正确的是()。
选项:
A:
在C语言的函数内部,可以定义局部嵌套函数
B:
用户自己定义的函数只能调用库函数
C:
不同函数的形式参数不能使用相同名称的标识符
D:
C语言源程序总是由一个或多个函数组成
答案:
10、单选题:
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )。
选项:
A:
函数调用可以作为独立的语句存在
B:
函数调用可以作为一个函数的实参
C:
函数调用可以出现在表达式中
D:
函数调用可以作为一个函数的形参
答案:
11、单选题:
以下程序的输出结果是( )。 #include <stdio.h> void funA (int n) { n++; } int main() { int a=1 ; funA (a) ; printf( “%d “, a ); funA (a) ; printf( “%d”, a ); return 0; }
选项:
A:
1 2
B:
1 1
C:
2 2
D:
2 1
答案:
12、单选题:
有以下程序,程序运行后的输出结果是( )。#include <stdio.h>int new_div(double a, double b){ return a/b + 0.5; }int main( ){ printf(“%d”, new_div(7.8, 3.1)); return 0; }
选项:
A:
2
B:
1
C:
3
D:
0
答案:
13、单选题:
在一个C语言程序中,下列说法正确的是( )。
选项:
A:
main函数必须出在固定位置
B:
main函数可以出现在其它函数之外的任何位置
C:
main函数必须出现在所有函数之前
D:
main函数必须出现在所有函数之后
答案:
14、单选题:
以下叙述中正确的是( )。
选项:
A:
调用函数时,函数名必须与被调用的函数名完全一致
B:
函数名允许用数字开头
C:
函数调用时,不必区分函数名称的大小写
D:
在函数体中只能出现一次return语句
答案:
15、单选题:
以下程序的输出结果是( )。#include “stdio.h”int f(int x){ int y; if (x == 0 || x== 1) return (3); y = x*x – f(x-2); return y;} int main(){ int z; z = f(3); printf(“%d”, z); return 0;}
选项:
A:
6
B:
9
C:
0
D:
8
答案:
16、单选题:
有以下程序 #include <stdio.h> int main() { int findmax(int,int,int),m; ┋ m=findmax(a,b,c); ┋ } int findmax(int x,int y,int z) { … }则以下叙述正确的是( )。
选项:
A:在main函数中两次调用了findmax函数
B:在main函数中定义了findmax函数
C:在main函数内、外重复定义了findmax函数
D:在main函数中声明了findmax函数
答案:
17、单选题:
设有函数定义:void sub(int k,char ch){ … } 则以下对函数sub的调用语句中,正确的是( )。
选项:
A:
sub(4,”a”);
B:
sub(2,’97’);
C:
sub(1,97);
D:
n=sub(3,’a’);
答案:
18、单选题:
下列叙述中错误的是( )。
选项:
A:
主函数中定义的变量在整个程序中都是有效的。
B:
形式参数也是局部变量。
C:
复合语句中定义的变量只在该复合语句中有效。
D:
在其它函数中定义的变量在主函数中也不能使用。
答案:
19、单选题:
凡是函数中未指定存储类别的局部变量,其隐含的存储类型是( )。
选项:
A:
静态(static)
B:
外部(extern)
C:
自动(auto)
D:
寄存器(register)
答案:
20、单选题:
下面程序的输出结果是( )。
#include <stdio.h>
int main( )
{ int x=10;
{ int x=20;
printf (“%d,”, x);
}
printf(“%d”, x);return 0;
}
选项:
A:
20,20
B:
10,10
C:
20,10
D:
10,20
答案:
21、单选题:
以下程序的输出结果是( )。#include <stdio.h>int fun(int a,int b){ static int m=0, i=2; i +=m+1; m = i + a + b; return m;} int main( ){ int k=4, m=1, p; p = fun( k,m ); printf(“%d,”, p); p = fun( k,m ); printf(“%d” ,p ); return 0;}
选项:
A:
8,20
B:
8,17
C:
8,16
D:
8,8
答案:
22、单选题:
下面程序的输出结果是( )。
int main()
{ int a=2,i;
for(i=0;i<3;i++)
printf(“%4d”,f(a)); return 0;
}
f(int a)
{ int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
选项:
A:
7 9 11
B:
7 8 9
C:
7 7 7
D:
7 10 13
答案:
23、单选题:
函数返回值的类型是由( )决定的。
选项:
A:
调用函数时临时
B:
定义函数时,所指定的函数类型
C:
调用该函数的主调函数类型
D:
return语句的表达式类型
答案:
24、单选题:
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
选项:
A:
形参只是形式上的存在,不占用具体存储单元
B:
函数的实参和其对应的形参共占同一存储单元
C:
函数的形参和实参分别占用不同的存储单元
D:
同名的实参和形参占同一存储单元
答案:
25、单选题:
有如下函数定义:#include <stdio.h>int fun( int k ){ if (k<1) return 0;else if (k==1) return 1;else return fun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是( )。
选项:
A:
3
B:
5
C:
1
D:
2
答案:
第八章 单元测试
1、单选题:
下列程序的输出结果是( )。main(){int k=4,m=5,n=7;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%d
”,n);}
选项:
A:21
B:7
C:5
D:20
答案:
2、单选题:
对于类型相同的指针变量,不能进行的运算是( )。
选项:
A:+
B:-
C:=
D:==
答案:
3、单选题:
以下程序的输出结果是( )。#include <stdio.h>int main(){ char str[100]=”ABCDEFG”, *p=str; int i; for(i = 0; *p != ’’; p++,i++); printf(”%d
“,i); return 0;}
选项:
A:8
B:99
C:100
D:7
答案:
4、单选题:
已知有以下的说明, int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。
选项:
A:5
B:4
C:7
D:0
答案:
5、单选题:
有以下程序:main(){ char str[ ][10]={“China”,“Beijing”},*p=str; printf(“%s
”,p+10);}该程序运行后的输出结果是( )。
选项:
A:ing
B:Beijing
C:China
D:ng
答案:
6、多选题:
下列关于指针定义的描述正确的有( )。
选项:
A:指针变量的命名规则与标识符相同
B:指针变量是一种变量,该变量是用来存放某个变量的地址值的
C:指针变量的类型与它所指向的变量类型一致
D:在定义指针时,”*”号表示指针变量的指向
答案:
7、多选题:
设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。
选项:
A:for(i=0;i<6;i++)printf(“%2d”,*(p++));
B:for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C:for(i=0;i<6;i++)printf(“%2d”,*p++);
D:for(i=0;i<6;i++)printf(“%2d”,(*p)++);
答案:
8、判断题:
int i=3,*p;p=&i;printf(“%d”,*p);是正确的。
选项:
A:对
B:错
答案:
9、判断题:
C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。
选项:
A:错
B:对
答案:
10、判断题:
在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。
选项:
A:对
B:错
答案:
11、判断题:
对同一类型的两个指针变量而言,一个变量向另外一个变量赋值的结果是使得两个指针指向同一个对象。
选项:
A:错
B:对
答案:
12、判断题:
将一维数组a的第i个元素的地址赋给指针变量p的语句是p=&a[i-1];
选项:
A:对
B:错
答案:
13、判断题:
char *p=”girl”;的含义是定义字符型指针变量p,p的值是字符串”girl”。
选项:
A:错
B:对
答案:
14、判断题:
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则p+5相当于a[5] 。
选项:
A:对
B:错
答案:
15、判断题:
有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8) 。
选项:
A:对
B:错
答案:
16、判断题:
若有int a[3][4];*(a+1)+2表示a[1][2]元素的地址。
选项:
A:错
B:对
答案:
17、判断题:
C语言程序中,当调用函数时实参和形参各占一个独立的存储单元。
选项:
A:对
B:错
答案:
18、判断题:
若有定义:int a[5],*p;,则操作p=a;是合法的操作。
选项:
A:对
B:错
答案:
19、判断题:
若有定义:int a[5],*p;,则操作p=&a[2];是合法的操作。
选项:
A:对
B:错
答案:
20、判断题:
若有定义:int a[5][5],*p;,则操作p=a;是合法操作。
选项:
A:错
B:对
答案:
21、判断题:
若有定义:int a[5][5], (*p)[5];,则操作p=*a;是合法操作。
选项:
A:错
B:对
答案:
22、判断题:
若有定义:int a[5][5], (*p)[5];,则操作p=a[0];是合法操作。
选项:
A:对
B:错
答案:
23、判断题:
凡是整型变量可以参加的运算,指针变量都可以参加。
选项:
A:对
B:错
答案:
24、判断题:
对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。
选项:
A:错
B:对
答案:
25、判断题:
对数组各元素的存取完全可以不用下标变量而用指针来代替。
选项:
A:对
B:错
答案:
26、单选题:
下列关于指针概念的描述中,错误的是( )
选项:
A:指针的值是可以改变的
B:指针中存放的是某变量或对象的地址值
C:指针的类型是它所存放的数值的类型
D:指针是变量,它也具有一个内存地址值
答案:
27、单选题:
已知:int a[5],*p=a;则与++*p相同的是( )。
选项:
A:
++a[0]
B:*++p
C:*p++
D:a[0]
答案:
28、单选题:
已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是( )。
选项:
A:&(a+1)
B:&(p+1)
C:&p[2]
D:
*p++
答案:
29、单选题:
若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。
选项:
A:*(*(a+i))
B:a[p-a]
C:*(&a[i])
D:p[i]
答案:
30、单选题:
下列语句组中,正确的是( )
选项:
A:char *s;s={“Olympic”};
B:
char s[7];s={“Olympic”};
C:char s[7];s=”Olympic”;
D:char *s;s=”Olympic”;
答案:
31、单选题:
若有定义int(*pt)[3];,则下列说法正确的是( )
选项:
A:定义了基类型为int的具有三个元素的指针数组pt
B:定义了基类型为int的三个指针变量
C:定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
D:定义了一个名为*pt、具有三个元素的整型数组
答案:
32、单选题:
有以下程序 #include <stdio.h>int f(int t[],int n);main(){ int a[4]={1,2,3,4},s;s=f(a,4);printf(“%d”,s);}int f(int t[],int n){ if(n>0) return t[n-1]+f(t,n-1); else return 0;} 程序运行后的输出结果是( )
选项:
A:10
B:14
C:
6
D:4
答案:
33、单选题:
有以下程序 #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:1,2,1,2
B:2,1,1,2
C:1,2,2,1
D:2,1,2,1
答案:
34、单选题:
若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是( )
选项:
A:p=a
B:q[i]=a[i]
C:p=a[i]
D:p=&a[2][1]
答案:
35、单选题:
有以下程序 #include <stdio.h> #include <string.h> main() { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p));printf(“%s”,p); } 程序运行后的输出结果是( )
选项:
A:10,One*World
B:10,One*Dream
C:9,One*Dream
D:9,One*World
答案:
36、单选题:
下列函数的功能是( ) fun(char * a,char * b) { while((*b=*a)!=’’) {a++,b++;} }
选项:
A:检查a和b所指字符串中是否有’’
B:将a所指字符串和b所指字符串进行比较
C:使指针b指向a所指字符串
D:将a所指字符串赋给b所指空间
答案:
37、单选题:
设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )
选项:
A:char str[ ]=”string”;c=str;
B:scanf(“%s”,c);
C:c=getchar();
D:*c=”string”;
答案:
38、单选题:
有以下程序
#include <stdio.h>void fun(int *a,int *b){int *c;c=a;a=b;b=c;}main(){int x=3,y=5,*p=&x,*q=&y;fun(p,q);printf(“%d,%d,”,*p,*q);fun(&x,&y);printf(“%d,%d”,*p,*q);}
程序运行后的输出结果是( )
选项:
A:5,3,5,3
B:3,5,3,5
C:3,5,5,3
D:5,3,3,5
答案:
39、单选题:
已知char s[10],*p=s;,则在下列语句中,错误的语句是( )。
选项:
A:*p=s[0]
B:s[2]=p[4]
C:s=p+s;
D:p=s+5;
答案:
40、单选题:
已知char b[5],*p=b;,则正确的赋值语句是( )。
选项:
A:*p=”abcd”;
B:b=””;
C:p=”abcd”;
D:*b=”abcd”;
答案:
41、单选题:
已知char s[20]=”programming”,*ps=s;则不能引用字母o的表达式是( )。
选项:
A:ps[2]
B:ps+=2,*ps
C:s[2]
D:ps+2
答案:
42、单选题:
下列选项中,正确的语句组是( )。
选项:
A:char *s;s=”Beijing”;
B:char s[8];s={“Beijing”};
C:char s[8];s=”Beijing”;
D:char *s;s={“Beijing”};
答案:
43、单选题:
已知char *p,*q;下面语句正确的是( )。
选项:
A:p*=3;
B:p/=q;
C:p+=q;
D:p+=3;
答案:
44、单选题:
若说明int *p,n;则通过语句scanf能够正确读入数据n的程序段是( )。
选项:
A:p=&n;scanf(“%d”,&p);
B:scanf(“%d”,n);
C:p=&n;scanf(“%d”,p);
D:p=&n;scanf(“%d”,*p);
答案:
45、单选题:
若有定义:int x,*pb;则以下正确的表达式是( )
选项:
A:*pb=*x
B:*pb=&x
C:pb=x
D:pb=&x
答案:
46、单选题:
以下程序的输出结果是( )#include<stdio.h>void main(){printf(“%d”,NULL);}
选项:
A:因变量无定义输出不定值
B:-1
C:1
D:0
答案:
47、单选题:
已知指针p的指向如图所示的a[1],则执行语句*p++;后,*p的值是( )。
选项:
A:20
B:31
C:21
D:30
答案:
48、单选题:
已知指针p的指向如图所示的a[1],则表达式*++p的值是( )。
选项:
A:31
B:20
C:21
D:30
答案:
49、单选题:
已知指针p的指向如图所示的a[1],则表达式++*p的值是( )。
选项:
A:30
B:31
C:20
D:21
答案:
50、单选题:
若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是( )。
选项:
A:&a,&*point,point
B:&*a,&a,*point
C:a,point,*&a
D:*&point,*point,&a
答案:
51、单选题:
若有下面的程序段:char s[]=”china”;char *p; p=s;则下列叙述正确的是( )。
选项:
A:s数组长度和p所指向的字符串长度相等
B:数组s中的内容和指针变量p中的内容相等
C:*p与s[0]相等
D:s和p完全相同
答案:
52、单选题:
已定义以下函数fun(char *p2, char *p1){while((*p2=*p1)!=’’){p1++;p2++;}}函数的功能是( )。
选项:
A:对p1和p2两个指针所指字符串进行比较
B:检查p1和p2两个指针所指字符串中是否有’’
C:将p1所指字符串的地址赋给指针p2
D:将p1所指字符串复制到p2所指内存空间
答案:
53、单选题:
下面程序段中,输出*的个数是( )。char *s=” a8bc”;for(;*s!=′0′;s++)printf(“*”);
选项:
A:9
B:5
C:6
D:7
答案:
54、单选题:
阅读下列程序,则执行后的结果为( )。#include “stdio.h”int main(){int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf(“%x,%x”,c[2][2],*(*(c+1)+1));}
选项:
A:62,5
B:3E,6
C:56,5
D:3e,6
答案:
55、单选题:
现有int a,*b;,b=&a;,则下列运算错误的是( )。
选项:
A:*&a
B:&*b
C:*&b
D:&*a
答案:
56、单选题:
现有如下定义语句,表示数组元素s[i]的表达式不正确的是( )。int*p,s[20],i;p=s;
选项:
A:*(s+i)
B:*(p+i)
C:*(p=p+i)
D:*(s=s+i)
答案:
第九章 单元测试
1、单选题:
若有以下语句 typedef struct S { int g; char h; } T;以下叙述中正确的是()。
选项:
A:可用S定义结构体变量
B:可用T定义结构体变量
C:T是struct S类型的变量
D:S是struct 类型的变量
答案:
2、单选题:
若已经定义: struct stu { int a, b; } student ; 则下列输入语句中正确的是( )
选项:
A:scanf(“%d”,&a);
B:scanf(“%d”,&student);
C:scanf(“%d”,&student.a);
D:scanf(“%d”,&stu.a);
答案:
3、单选题:
有以下程序#include <stdio.h>struct ball{ char color[10]; int dim;};int main( ){ struct ball list[2] = {{“white”, 2}, {“yellow”, 3}}; printf(“%s:%d”, (list+1)->color, list->dim); return 0;}程序运行后的输出结果是( )
选项:
A:white:2
B:yellow:2
C:white:3
D:yellow:3
答案:
4、单选题:
以下叙述中正确的是()。
选项:
A:结构体数组名不能作为实参传给函数
B:即使是同类型的结构体变量,也不能进行整体赋值
C:结构体变量的地址不能作为实参传给函数
D:结构体中可以含有指向本结构体的指针成员
答案:
5、单选题:
有以下程序#include <stdio.h>#include <string.h>struct S{ char name[10];};void change(struct S *data, int value){ strcpy(data->name, “#”); value = 6;}int main( ){ struct S input; int num = 3; strcpy(input.name, “OK”); change(&input, num); printf(“%s,%d”, input.name, num); return 0;}程序运行后的输出结果是( )
选项:
A:8,8
B:8,16
C:8,20
D:8,17
答案:
6、判断题:
结构体成员的类型必须是基本数据类型。
选项:
A:对
B:错
答案:
7、判断题:
结构体数组中可以包含不同结构体类型的结构体变量。
选项:
A:错
B:对
答案:
8、判断题:
结构体类型本身不占用内存空间,结构体变量占用内存空间。
选项:
A:对
B:错
答案:
9、单选题:
以下关于C语言数据类型使用的叙述中错误的是( )。
选项:
A:若要准确无误差的表示自然数,应使用整数类型
B:若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
C:若只处理“真”和“假”两种逻辑值,应使用逻辑类型
D:若要保存带有多位小数的数据,应使用双精度类型
答案:
10、单选题:
下面有关typedef语句的叙述中,正确的是( )
选项:
A:typedef语句用于给已定义类型取别名
B:typedef语句用于定义新变量
C:typedef语句用于给已定义变量取别名
D:typedef语句用于定义新类型
答案:
11、单选题:
若已经定义typedef struct stu { int a, b; } student ;则下列叙述中正确的是( )
选项:
A:student 是结构体类型
B:student 是结构体变量
C:a和 b是结构体变量
D:stu 是结构体变量
答案:
12、单选题:
C语言中结构体类型变量在程序执行期间( )
选项:
A:所有成员一直驻留在内存中
B:部分成员驻留在内存中
C:
没有成员驻留在内存中
D:只有一个成员驻留在内存中
答案:
13、单选题:
以下叙述中正确的是( )
选项:
A:结构体的类型不能是指针类型
B:结构体中的成员不能是结构体类型
C:结构体中成员的名字可以和结构体外其他变量的名称相同
D:在定义结构体类型时就给结构体分配存储空间
答案:
14、单选题:
以下程序的运行结果是( )#include<stdio.h>int main(){struct date{ int year,month,day; }today;printf(“%d”,sizeof(struct date));return 0;}
选项:
A:8
B:6
C:
12
D:10
答案:
15、单选题:
已知:struct sk{ int a; float b;}data,*p;若有p=&data,则对data中的成员a的正确引用是( )
选项:
A:p.data.a
B:(*p).data.a
C:(*p).a
D:p->data.a
答案:
16、单选题:
若有以下定义语句:struct student{ int num,age;};struct student stu[3]={{101,20},{102,19},{103,18}},*p=stu;则以下错误的引用是( )
选项:
A:(*p).num
B:(p++)->num
C:p++
D:p=&stu.age
答案:
17、单选题:
设有一结构体类型变量定义如下:struct date{ int year;int month;int day;};struct worker{ char name[20];char sex;struct date birthday;}w1;若对结构体变量w1的出生年份进行赋值,下面正确的赋值语句是( )
选项:
A:birthday.year=1976
B:w1.year=1976
C:year=1976
D:w1.birthday.year=1976
答案:
18、单选题:
已知:struct person{char name[10];int age;}class[10]={“LiMing”,29,”ZhangHong”,21,”WangFang”,22};下述表达式中,值为72的一个是( )
选项:
A:class[1].name[5]
B:class[0]->age + class[1]->age+ class[2]->age
C:clase->name[5]
D:person[1].name[5]
答案:
19、单选题:
若已经定义:struct stu { int a, b; } student ;则下列输入语句中正确的是( )
选项:
A:scanf(“%d”,&stu.a);
B:scanf(“%d”,&a);
C:scanf(“%d”,&student.a);
D:scanf(“%d”,&student);
答案:
20、单选题:
已知:struct st{ int n;struct st *next;};static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;如果下述语句的显示是2,则对p的赋值是( )printf(“%d”,++(p->next->n));
选项:
A:p=&a[0];
B:p=&a[2];
C:p=&a[3];
D:p=&a[1];
答案:
21、单选题:
有如下定义:struct person { char name[9];int age;};struct person class[10]={“John”,17, “Paul”,19, “Mary”,18, “Jack”,19};根据上述定义,能输出字母M的语句是( )
选项:
A:printf(“%c”,class[2].name[1]);
B:printf(“%c”,class[2].name[0]);
C:printf(“%c”,class[3].name);
D:printf(“%c”,class[3].name[1]);
答案:
22、单选题:
链表不具有的特点是( )
选项:
A:可随机访问任一元素
B:所需空间与线性长度成正比
C:不必事先估计存储空间
D:插入、删除不需要移动元素
答案:
23、单选题:
设有以下链表,则不能将q所指的结点插入到链表末尾的是( )
选项:
A:
p=p->next;q->next=p;p->next=q;
B:
p=p->next;q->next=p->next;p->next=q;
C:
q->next=NULL;p=p->next;p->next=q;
D:
p=(*p).next;(*q).next=(*p).next;(*p).next=q;
答案:
24、单选题:
在单链表指针为p的结点之后插入指针为 s的结点, 正确的操作是 ( )
选项:
A:p->next=s;s->next=p->next;
B:p->next=s->next;p->next=s;
C:p->next=s;p->next=s->next;
D:s->next=p->next;p->next=s;
答案:
25、单选题:
对于一个头指针为 head 的带头结点的单链表,判定该表为空表的条件是( )
选项:
A:head!=NULL
B:head==NULL
C:head->next==NULL
D:head->next==head
答案:
第十章 单元测试
1、单选题:
C语言中,系统的标准输入文件是指( )
选项:
A:显示器
B:软盘
C:
硬盘
D:键盘
答案:
2、单选题:
C语言中,文件组成的基本单位为( )
选项:
A:
记录
B:
数据块
C:
数据行
D:
字符序列
答案:
3、单选题:
C语言中,能识别处理的文件为( )
选项:
A:
数据文件和二进制文件
B:文本文件和数据块文件
C:文本文件和二进制文件
D:流文件和文本文件
答案:
4、单选题:
若调用fputc函数输出字符成功,则其返回值是( )
选项:
A:1
B:0
C:
输出的字符
D:EOF
答案:
5、单选题:
已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是( )
选项:
A:一个文件指针,指向要读的文件
B:一个指针,指向要读入数据的存放地址
C:一个整型变量,代表要读入的数据项总数
D:
一个存储区,存放要读的数据项
答案:
6、单选题:
当顺利执行了文件关闭操作时,fclose函数的返回值是( )
选项:
A:-1
B:0
C:
1
D:TRUE
答案:
7、单选题:
如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是( )
选项:
A:fp=fopen(”Demo”,”ab+”);
B:fp=fopen(”Demo”,”w+”);
C:fp=fopen(”Demo”,”r”);
D:fp=fopen(”Demo”,”r+”);
答案:
8、单选题:
函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是( )
选项:
A:文件当前位置
B:文件开始
C:文件末尾
D:其余选项都不对
答案:
请先
!