文档库 最新最全的文档下载
当前位置:文档库 › c 语言试题及答案

c 语言试题及答案

C语言程序设计试题

第1、2、3章 概述、类型、表达式
一、选择题
1、 一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:( )
A、 任意
B、 第一个函数必须是主函数,其他函数任意
C、 必须完全按照执行的顺序排列
D、 其他函数可以任意,主函数必须在最后
答案:A
2、 下列四个叙述中,正确的是:( )
A、 C程序中的所有字母都必须小写
B、 C程序中的关键字必须小写,其他标示符不区分大小写
C、 C程序中的所有字母都不区分大小写
D、 C语言中的所有关键字必须小写
答案:D
3、 下列四个叙述中,错误的是:( )
A、 一个C源程序必须有且只能有一个主函数
B、 一个C源程序可以有多个函数
C、 在C源程序中注释说明必须位于语句之后
D、 C源程序的基本结构是函数
答案:C
4、 下面不是C语言合法标识符的是:( )
A、abc B、5n C、_4m D、x3
答案:B
5、 以下叙述不正确的是:( )
A. 分号是C语句的必要组成部分 B. C程序的注释可以写在语句的后面
C. 函数是C程序的基本单位 D. 主函数的名字不一定非用main来表示
答案:D
6、 C语言中允许的基本数据类型包括:( )
A. 整型、实型、逻辑型 B. 整型、实型、字符型
C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型
答案:B
7、 C语言中能用八进制表示的数据类型为:( )
A、字符型、整型 B、整形、实型
C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型
答案:A
8、 下列属于C语言合法的字符常数是:( )
A、’\97’ B、”A” C、’\t’ D、”\0”
答案:C
9、 在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )
A、charB、char=intC、charD、char=int=答案:A
10、 在C语言中(VC环境),一定是长整型常数的是:( )
A、0L B、4962710 C、0412765 D、0xa34b7fe
答案:A
11、 若有以下定义语句char c1=’b’, c2=’e’; printf(“%d,%c\n”,c2-c1,c2-‘a’+’A’);则输出结果是:( )
A、2,M B、3,E
C、2,E D、输出项与相应的格式控制不一致,输出结果不确定
答案:B
12、 以下合法的赋值语句是:( )
A、x=y=100 B、d--; C、x + y D、c = int(a+b);
答案:B
13、 设变量t为int型,

下列选项中不正确的赋值语句是:( )
A、++t; B、n1=(n2=(n3=0)); C、k=i==m; D、a=b+c=1;
答案:D
14、 在以下一组运算符中,优先级最高的是:( )
A、<= B、== C、% D、&&
答案:C
15、 下列能正确表示a≥10或a≤0的关系表达式是:( )
A、a>=10 or a<=0 B、a<=10 || a>=0
C、a>=10 || a<=0 D、a>=10 && a<=0
答案:C
16、 下列只有当整数x为奇数时,其值为“真”的表达式是:( )
A、x%2==0 B、!(x%2==0) C、(x-x/2*2)==0 D、!(x%2)
答案:B
17、 设a为整型变量,不能正确表达数学关系10A、1 0< a < 15 B、!(a<=10 || a>=15)
C、a>10 && a<15 D、!(a<=10) && !(a>=15)
答案:A
18、 已知x=43, ch=’A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:( )
A、0 B、语法错 C、1 D、“假”
答案:C
19、 表达式17%4 /8的值为:( )
A、0 B、1 C、2 D、3
答案:A
20、 语句printf(“%d”,(a=2)&&(b= -2));的输出结果是:( )
A、无输出 B、结果不确定 C、-1 D、1
答案:D
21、 一个可执行的C程序的开始执行点是:( )
A. 程序中的第一个语句 B. 包含文件中的第一个函数
C. 名为main的函数 D. 程序中的第一个函数
答案:C
22、 组成C语句的一个必不可少的符号是:( )
A. 逗号 B. 引号 C. 冒号 D. 分号
答案:D
23、 若将int、long、float等类型的数据进行混合运算,其结果的数据类型是:( )
A. int B. long C. float D. double
答案:D
24、 下述是C语言中有关变量定义的几个说法,正确的是:( )
A. 变量可以不定义直接使用
B. 一个说明语句只能定义一个变量
C. 几个不同类型的变量可在同一语句中定义
D. 变量可以在定义时进行初绐化
答案:D
25、 与x * = y + z等价的赋值表达式是:( )
A. x = y + z B. x = x * y + z
C. x = x * (y + z) D. x = x + y * z
答案:C
26、 当代电子计算机能够自动地处理指定的问题是因为:( )
A.计算机是电动的
B.有解决该问题的计算机程序
C.事先存储了解决该问题的程序
D.以上都不是
( 知识点:程序的基本概念; 难度系数:2; 答案:C )
27、 以下叙述中最准确的是:( )
A.计算机程序是处理某一问题所有指令的集合
B.计算机程序是处理某一问题所用到的所有数据的集合
C.计算机程序是处理某一问题的所有指令及其数据的集合
D.计算机程序是处理

某一问题的所有指令及其数据的有序集合
( 知识点:程序的基本概念; 难度系数:2; 答案:D )
28、 关于计算机程序设计,以下描述最准确的是:( )
A.程序设计就是用语言来编写程序
B.程序设计就是用计算机语言来编写程序
C.程序设计就是用计算机程序设计语言来编写程序
D.程序设计就是用计算机能识别的语言来编写程序
( 知识点:程序设计的基本概念; 难度系数:1; 答案:C )
29、 目前编写计算机程序一般采用的是:( )
A.机器语言 B.汇编语言 C.高级语言 D.英语
( 知识点:程序设计的基本概念; 难度系数:1; 答案:C )
30、 设计一个计算机程序最基本的工作是:( )
A.制定正确的算法 B.选择合理的数据结构
C.制定正确的算法和选择合理的数据结构 D.以上都不是
( 知识点:算法的基本概念; 难度系数:1; 答案:C )
31、 算法具有五个特性,以下选项中不属于算法特性的是:( )
A.有穷性 B.简洁性 C.可行性 D.确定性
 ( 知识点:算法的基本概念; 难度系数:3; 答案:B ) 
32、 下述哪一个不是结构化程序基本结构:( )
A.顺序 B.选择 C.循环 D.嵌套
( 知识点:结构化程序设计的概念; 难度系数:2; 答案:D )
33、 C语言是一种:( )
A.机器语言 B.汇编语言 C.高级语言 D.以上都不是
( 知识点:C语言的特点; 难度系数:1; 答案:C )
34、 C语言源程序的扩展名为:( )
A..exe B..c C..obj D..cpp
( 知识点:C语言的特点; 难度系数:1; 答案:B )
35、 C程序编译后最终产生(即计算机执行)的文件的扩展名为( )
A..exe B..c C..obj D..cpp
( 知识点:C语言的特点; 难度系数:1; 答案:A )
36、 下列各项中,不是C语言的特点是:( )
A.语言简洁、紧凑,使用方便
B.程序执行效率高,可移植性好
C.能实现汇编语言的大多数功能
D.有较强的网络操作功能
( 知识点:C语言的特点; 难度系数:3; 答案:D )
37、 构成C语言源程序的基本单位是:( )
A.子程序 B.过程 C.文本 D.函数
( 知识点:C程序的特点; 难度系数:1; 答案:D )
38、 下列叙述正确的是:( )
A.C语言源程序可以直接在DOS环境中运行
B.编译C语言

源程序得到的目标文件可以直接在DOS环境中运行
C.C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行
D.C语言源程序可以直接在VC++环境中运行
( 知识点:C程序的特点; 难度系数:2; 答案:C )
39、 某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:( )
A.写在前面的函数先开始执行
B.总是从main()函数开始执行
C.总是从max()函数开始执行
D.写在后面的函数先开始执行
( 知识点:C程序的特点; 难度系数:1; 答案:B )
40、 以下叙述不正确的是:( )
A.分号是C语句的必要组成部分
B.C程序的注释可以写在语句的后面
C.函数是C程序的基本单位
D.主函数的名字不一定用mian表示
( 知识点:C程序的特点; 难度系数:1; 答案:D )
41、 以下为C语句的是:( )
A.a=8 B.a++; C.if(a>8) D. #include
( 知识点:C语句的特点; 难度系数:2; 答案:B )
以下不是C语句的是:( )
A.a=8; B.a++; C.if(a>8); D.for(i=1;i<5;i++)
( 知识点:C语句的特点; 难度系数:2; 答案:D )
42、 以下所列语句中,合法的语句是:( )
A.a=1,b=2 B.++a; C.a=a+1=5 D.y=int(a);
( 知识点:C语句的特点; 难度系数:2; 答案:B )
43、 C程序中的复合语句指的是:( )
A.并列的多个C语句 B.写在同一行中的多个C语句
C.用一对大括号对括的多个C语句 D.就是函数体中的语句
( 知识点:C语句的特点; 难度系数:2; 答案:C )
44、 当一个很长的C语句(中间无字符串)在一行写不下(超出屏幕的宽度)时,应该:( )
A.由系统自动换行
B.立即按回车键换行
C.在任意一个空格处按回车键换行
D.输入一个分号后并按回车键换行换行
( 知识点:C语句的特点; 难度系数:2; 答案:C )
45、 在x值处于-2~2,4~8时值为“真”,否则为“假”的表达式是:( )。
A.( 2> x> -2 )||(4 > x > 8)
B.!((( x < -2 )||( x >2 )&&(( x <= 4 )||( x > 8 ))
C.( x < 2 )&&( x >= -2 )&&( x > 4 )&&( x < 8 )
D.( x > -2 )&&( x >4 )||( x < 8 )&&( x < 2 )
答案:B

二、判断题

1. ( T )C语言是严格区分大写和小写的,因次主函数不能写成main()以外的其他形式。
2. ( F )C语言程序是从源文件的第一条语句开始执行的。
3. ( T )C语言对其数据在内存中所占用的实际字节数是有明确规定的。
4. ( F )C语言中/*..*/之间的注释内容是不能跨行的。
5. ( F )C语言中多个以“;”结束的语句不能放在同一行。
6. ( T )以下常数:'101',e3,’\

78’,(2+3)e(4-2)都是不合法的。
7. ( F )变量说明语句int a=b=c=23;是正确的。
8. ( F )字符型数据不可以和整数数据一起进行算术运算。
9. ( F )C语句:3*x*x+4*x+1+6sin(x)=y.是可以允许的。
10. ( T )表达式m=(a=4,4*5)和m=a=4,4*5的值是相等的。
11. ( T )C语言中强制类型转换不会改变原变量的原有数据类型。
12. ( F )表达式j=-i++和j=-(i++)不相等
13. ( T )程序段:i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);其结果9,10,9,10.
14. ( F )C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上原样显示。
15. ( T )计算机程序的基本组成是:指示计算机如何去解决某一问题的一组指令。
16. ( T )计算机程序的执行过程实际上是对程序所表达的数据进行处理的过程。
17. ( T )目前程序设计的理念已经从“面向过程的程序设计”向“面向对象的程序设计”方面转变。
18. ( T )任何一个计算机程序都可以用机器语言、汇编语言和高级语言来编写。
19. ( T )有人曾提出:计算机程序=算法+数据结构。
20. ( T )在程序设计中提到的算法就是“解决问题的方法和步骤”
21. ( T )在程序设计中提到的数据结构就是“程序处理的对象的表示方法”
22. ( T )计算机程序的算法就是解决“做什么”和“怎么做”的问题。
23. ( T )结构化程序设计的基本理念是:将一个较大的问题细分成若干个较小问题的组合。
24. ( T )C程序的编译是从程序的第一行开始,到程序的最后一行结束。
25. ( F )C程序的编译是从主函数的第一行开始,到主函数的最后一行结束。
26. ( F )C程序的执行是从程序的第一行开始,一直到程序的最后一行结束。
27. ( T )C程序的执行是从主函数的第一行开始,一直到主函数的最后一行结束。
28. ( T )设x、t均为int型变量,则执行语句"x = 10;t = x && x > 10;"后,t的值为0
29. ( T )若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
30. ( T )在C程序中,%是只能用于整数运算的运算符
31. ( T )在C语言中,逻辑“真”等价于不等于0的数
32. ( F )C语言中字符型、整型、实型都能用八进制表示
33. (F)在VC语言中,5种基本数据类型的存储空间长度的排列顺序为:char34. ( T )变量的三要素是:变量名、变量类型、变量的值。


三、多选题
1. 目前程序设计采用的基本方法有:
A.面向过程的程序设计 B.面向对象的程序设计
C.面向问题的程序设计 D.面向机器的程序设计
( 知识点:结构化程序设计的概念; 难度系数:1; 答案:AB )

第4章 顺序结构

一、选择题
1、下面程序的输出是:( )
main()
{ int k=11;
print

f("k=%d,k=%o,k=%x\n",k,k,k);
}
A) k=11,k=12,k=13 B) k=11,k=13,k=13
C) k=11,k=013,k=oXb D) k=11,k=13,k=b
答案:D
2、以下合法的C语言赋值语句是:( )
A)a=b=58 B)k=int(a+b) ; C)a=58,b=58 D)-- i;
答案:D
3、以下程序的输出结果是:( )
main()
{ int x=10,y=3;
printf(“%d\n”,y=x/y);
}
A)0 B)1 C)3 D)不确定
答案:C
4、若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是:( )
A)read (a,b,c); B)scanf(“%d%d%d”,a,b,c);
C)scanf(“%D%D%D”,%a,%b,%c); D)scanf(“%d%d%d”,&a,&b,&b);
答案:D
5、执行下面程序段后,c3中的值是:( )
int c1=1 , c2=2 , c3;
c3=c1/c2;
A)0 B)1/2 C)0.5 D)1
答案:A
6、若执行以下程序段,其输出结果是:( )
int a=0 , b=0 , c=0;
c=(a-=a-5) , (a=b,b+3) ;
printf(“%d , %d , %d\n” , a,b,c);
A)0,0,0 B)0,0,5 C)5,0,5 D)-10,0,-10
答案:B
7、以下程序段的输出是:( )
float a=57.666;
printf(“*%2.2f*\n”, a);
A)*57* B)*58* C)*57.66* D)*57.67*
答案:D
8、若有以下定义和语句:( )
int a=5,b
b=a++;
此处b的值是:( )
A) 7 B) 6 C) 5 D) 4
答案:C
9、若有以下定义和语句:( )
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A')
则输出结果是:( )
A) 2,M B) 3,E C) 2,e D) 输出结果不确定
答案:B
10、以下程序的输出结果是:( )
main()
{ int x=10,y=10;
printf("%d%d\n",x--,--y);
}
A) 10 10 B) 9 9 C) 9 10 D) 10 9
答案:D
11、在C语言中,如果下面的变量都是int类型,则输出结果是:( )
sum=pad=5;
pad=sum++,pad++,++pad;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
答案:A
12、以下程序的输出结果:( )
#include
main()
{
int i=010,j=10;
printf("%d,%d\n",++i,j--);
}
A) 11,10 B) 9,10 C) 010,9 D) 10,9
答案:B
13、在C语言中,short类型数据的范围是-32768~32767,下面程序段的输出结果是:( )
short i =65536;
printf("%d\n",i);
A) 65536 B) 0
C) 1 D)超出取值范围,无输出结果
答案:B
14、已知字符A的ASCII码为十进制的65,下面程序的输出是:( )
main()
{
char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A) 67,D B) B,C
C) C,D D) 不确定的值
答案:A
15、若有定义和语句:
char s; s="abcd"; printf("%d\n",s);
则结果

是:( )
A) 输出 97 B) 输出 a
C) 输出 adcb D) 编译不能通过
答案:D
16、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处代表换行,?代表空格):
1?2
A?B?C
则能给x赋整数1,给y赋数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是:( )
A) scanf("x=%d y=%d",&x,&y); a=getchar(); c=getchar();
B) scanf("%d%d",&x,&y); a=getchar(); b=getchar(); c=getchar();
C) scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
D) scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
答案:D
17、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是:( )
main()
{
int x;
scanf("%d",&x);
if (x++>5)
printf("%d",x)
else
printf("%d\n",x--);
}
A) 7和5 B) 6和3 C) 7和4 D) 6和4
答案:A
18、若执行下面的程序从键盘输入3和4,则输出是:( )
main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if (as=s*s;
printf("%d\n",s);
}
A) 14 B) 16 C) 18 D) 20
答案:B
19、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为:( )
A) 100<空格>765.12<回车> B) i=100,f=765.12<回车>
C) 100<回车>765.12<回车> D) x=100<回车>,y=765.12<回车>
答案:B
20、以下程序的输出结果是:( )
#include
main()
{ int n;
printf("%d\n",n);
}
A) -1 B) 0 C) 1 D) 不确定
答案:B
二、判断题
1.( F )在C语言中,实型数据在内存都中占4个字节。
2.( F )在C语言中,参加算术(+,-,*,/,%)运算的数据可以是任何类型的数据。
3.( F )若有定义和语句:int a;char c;scanf("%d,%c",&a,&c);当通过键盘输入:
10,‘A’之后,则变量a中存放的是10,变量c中存放的是‘A’。
4.( F )C语言中,变量名只能是小写字母表示,符号常量名可用大写表示
5.( F )在C语言中,变量可以不要定义,直接使用
6.( T )一个C语言程序总是从主函数开始执行的
7.( F )注释语句必须用/*和*/括起来,且只能位于某一语句的后面
8.( F ) “a”和‘a’均是占用1个字节的内存空间 的数据

三、多选题
1. 以下所列语句中,不合法的语句是:( )
A、a=1,b=2 B、++a; C、a=a+1=5;
D、y= (int) a; E、a=b=c=10;
答案:ACD
2. 下列描述正确的是:( )
A. putchar函数的作用是向屏幕输出一个字符
B. putchar函数能在屏幕上输出控制字符
C. putcha

r(c)函数中,c只能是字符型变量,不能是整型变量
D. putchar函数能在屏幕上输出转义字符
E.putchar函数的使用需要包含“stdio.h”头文件
答案:ABDE
3. 下列描述正确的是:( )
A. getchar函数只能接收一个字符
B. getchar函数得到的字符可以赋给一个字符变量
C. getchar函数得到的字符可以赋给一个整型变量
D. getchar函数得到的字符可以作为表达式的一部分
E.getchar函数是编程者自定义的函数
答案:ABCD
4. printf函数中,关于格式字符描述正确的是:( )
A.格式字符o表示以八进制无符号形式输出整数
B.格式字符u 表示以无符号十进制形式输出整数
C.格式字符x 表示以无符号十六进制形式输出整数
D.格式字符f 表示以实数形式输出单、双精度数
E.格式字符e 表示以浮点数形式输出单、双精度数
答案:ABCDE
5. 假设int x,y,z;若从键盘给x、y、z输入数据,下列不正确的输入语句是:( )
A.input x、y、z;
B.scanf("%d%d%d",&x,&y,&z);
C.scanf("%d%d%d",x,y,z);
D.read("%d%d%d",&x,&y,&z);
E.scanf("%d%d%d,&x,&y,&z");
答案:ACDE
6. 假设float x,y,z;,并通过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.0︻22.0︻33.0<回车>
E、10︻22︻33<回车>

答案:ABDE
7. 若有int a,c;char b;并通过scanf("%f%c%f ",&a,&b,&c);对a赋于整数10,b赋予字符M,c赋予整数33的值,下面正确的输入形式是:( )(注:符号︻代表空格)
A、10<回车>M<回车> 33<回车>
B、10M33<回车>
C、 10︻M︻33<回车>
D、10M<回车>33<回车>
E、10M︻<回车>33<回车>
答案:BDE

8. 若有 char ch;,下面可以对变量c正确赋值的语句是:( )
A.ch =‘A’;
B.getchar(ch);
C.ch = getchar();
D.scanf(“%c”,&ch);
E.printf(“%c”,ch=‘B’);
答案:ACDE
9. 下面属于转义符的有:( )
A.‘\t ’ B.‘\n’ C.‘%d’ D.‘\376’ E.‘\x20’
答案:ABDE
10. 若a为整型变量,则下列表达式的值为0的是( ),
A.a % a
B.a != a
C.3/4
D.3 && 0
E.a = 0
答案:ABCDE
第5、6章 选择与循环结构
一、选择题
1. 有以下程序
main( )
{ int i;
for ( i=0; i<3; i++ )
switch ( i )
{ case 1 : printf("%d ", i);
case 2 : printf("%d ", i);
default : printf("%d ", i);
}
}
执行后输出结果是:( )
A)011122 B)012 C)012020 D)120


答案:A
2. 有以下程序
main()
{ int i=1, j=1, k=2;
if ( (j++ || k++) && i++)
printf("%d,%d,%d\n", i, j, k);
}
执行后输出结果是:( )
A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3
答案:C
3. 有以下程序
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)2 B)3 C)4 D)编译时有错,无结果
答案:B
4. 有以下程序
main()
{ int i=0,s=0;
do {
if (i%2)
{ i++; continue; }
i++;
s += i;
} while( i<7 );
printf("%d\n", s);
}
 执行后输出结果是:( )
A)16 B)12 C)28 D)21
答案:A
5. 以下程序的输出结果是:( )
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A) 5 B) 4 C) 6 D) 不确定
答案:C
6. 以下程序中,while循环的循环次数是:( )
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++;
}
}
A) 1 B) 10 C) 6 D) 死循环,不能确定次数
答案:D
7. 以下程序的输出结果是:( )
main( )
{ 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\n",a);
}
A) 31 B) 13 C) 10 D) 20
答案:A
8. 以下程序的输出结果是:( )
main()
{ int a=4,b=5,c=0,d;
d=!a && !b || !c;
printf("%d\n",d);
}
A) 1 B) 0 C) 非0的数 D) -1
答案:A
9. 以下程序的输出结果是:( )
#include
main()
{ int i=0,a=0;
while(i<20)
{ for( ; ; )
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printh("%d\n",a);
}
A) 21 B) 32 C) 33 D) 11
答案:B
10. 阅读以下程序:( )
main()
{ int x;
scanf("%d",&x);
if(x--<5) pri

ntf("%d"x);
else printf("%d"x++);
}
程序运行后,如果从键盘上输人5,则输出结果是:( )
A)3 B) 4 C) 5 D) 6
答案:B
11. 假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w则该程序运行后,m的值是:( )
A) 4 B) 3 C) 2 D) 1
答案:D
12. 以下程序的输出结果是:( )
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3==1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
A) 101 B) 6 C) 5 D) 4
答案:D
13. 若执行以下程序时从键盘上输入9,则输出结果是:( )
main()
{ int n;
scanf ("%d",&n);
if(n++<10)
printf ("%d\n",n);
else
printf("%d\n",n--);
}
A) 11 B) 10 C) 9 D) 8

答案:B
14. 有以下程序段
int k=0
while(k=1)
k++;
则while 循环执行的次数是:( )
A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次
答案:A
15. 以下程序执行后sum的值是:( )
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
A)15 B)14 C) 不确定 D)0
答案:A
16. 有以下程序段
int x=3
do
{ printf ("%d",x -=2);
}while (!(--x));
其输出结果是:( )
A) 1 B) 3 0 C) 1 -2 D) 死循环
答案:C
17. 若变量c为char类型,能正确判断出c为小写字母的表达式是:( )
A) 'a'<=c<= 'z'
B) (c>= 'a')||(c<= 'z')
C) ('a'<=C)and ('z'>=c)
D) (c>= 'a')&&(c<= 'z')
答案:D
18. 以下程序的输出结果是:( )
main()
{ float x=0.5; char z='a';
printf("%d\n", (x>1) && (z<'z') );
}
A) 0 B) 1 C) 2 D) 3
答案:A
19. 以下程序的输出结果是:( )
main()
{ int x=10,y=10,i;
for(i=0;x>8;y=i )
printf(“%d %d ”,x--,y);
}
A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 0
答案:D
20. 以下程序的输出结果是:( )
main()
{ int i;
for(i=1;i<=6;i++)
{ if(i%2)
{ printf(“#”);
continue;
}
printf(“*”);
}
printf(“\n”);
}
A)#*#*# B)##### C)***** D)*#*#*
答案:A
21. 以下程序的输出结果是:( )
main()
{ int i;
for(i='A';i<='I';i++)
printf(“%c”,i+32);
printf(“\n”);
}

A)编译不通过,无输出 B) aceg C)acegi D)abcdefghi
答案:D
22. 以下程序输出结果是:( )
main ()
{ int m=5;
if (m>5)
printf (“%d\n”,m);
else
printf (“%d\n”,m--);
}
A )7 B )6 C)5 D)4
答案:C
23. 运行以下程序后,如果从键盘上输入china#《回车》,则输出结果为:( )
#include
main()
{ int v1=0,v2=0; char ch ;
while ((ch=getchar())!='#')
switch (ch )
{ case 'a':
case 'h':
default:v1++;
case '0':v2++;
}
printf(“%d,%d\n”,v1,v2);
}
A) 2,0 B)5,0 C) 5,5 D)2,5
答案:C
24. 设有如下定义:
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式:(m=a>b)&&(n=c>d)后,n的值为:( )
A)1 B)2 C)3 D)0
答案:D
25. 以下程序的输出结果是:( )
main()
{ int i,j,x=0;
for (i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if (j%2)
continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
A)x=4 B)x=8 C)x=6 D)x=12
答案:B
26. 设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
答案:C
27. 假定a和b为int型变量,则执行以下语句后b的值为:( )
a=1;b=10;
do
{ b-=a; a++;
}while (b--<0);
A)9 B)-2 C)-1 D)8
答案:D
28. 设j为int型变量,则下面for循环语句的执行结果是:( )
for (j=10;j>3;j--)
{ if(j%3) j--;
--j;--j;
printf(“%d ”,j);
}
A)6 3 B)7 4 C)6 2 D)7 3
答案:B
29. 有以下程序
main()
{ int x, i;
for(i=1;i<=50;i++)
{ x=i;
if(x%2==0)
{ x++;
if(x%3==0)
{ x++;
if(x%7==0)
{ x++;
printf("%d ",i);
}
}
}
}
}
输出结果是:( )
A)28 B)27 C)42 D)26
答案:D
30. 假定所有变量均已正确说明,下列程序段运行后x的值是:( )
a=b=c=0;x=35;
if(!a)
x--;
else if(b) ;
if(c)
x=3;
else
x=4;
A)34 B)4 C)35 D)3
答案:B
31. 执行表达式k = ( 10>12 ? 15 :6>5 ? 8 :9 )后,变量k的值为:( )
A. 9 B. 8 C. 15

D. 1
答案:B
32. 以下程序运行后,如果从键盘上输人5,则输出结果是:( )
main( )
{
int x;
scanf("%d",&x);
if(x--<5) 
printf("%d",x);
else 
printf("%d",x++);
}
A、3 B、4 C、5 D、6
答案:B
33. 以下程序段的输出结果是:( )
int k, j , s ;
for(k=2;k<6;k++,k++)
{ s=1;
for (j=k;j<6;j++)
s+=j;
}
printf(“%d\n”,s);
A)9 B)1 C)11 D)10
答案:D
34. 以下程序段的输出是:( )
int i,j,m=0;
for (i=1;i<=15;i+=4)
for (j=3;j<=19;j+=4)
m++;
printf(“%d\n”,m);
A)12 B)15 C)20 D)25
答案:C
35. 以下程序段的输出结果是:( )
int i, sum;
for(i=1;i<6;i++)
sum+=sum;
printf(“%d\n”,sum);
A)15 B)14 C)不确定 D)0
答案:C
36. 下面程序的输出是:( )
main()
{ int x=3,y=6,a=0;
while (x++!=(y-=1))
{ a++;
if (y}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
A) x=4,y=4,a=1 B) x=5,y=5,a=1
C) x=5,y=4,a=3 D) x=5,y=4,a=1
答案:D
37. 定义如下变量:int n=10;则下列循环的输出结果是:( )
while (n>7)
{ n--; printf("%3d",n);
}
A) 10 9 8 B) 9 8 7
C) 10 9 8 7 D) 9 8 7 6
答案:B
38. 以下程序段的输出结果是:( )
int x=3;
do
{ printf("%3d",x-=2;
} while (!(--x));

A) 1 B) 3 0 C) 1 -2 D) 死循环
答案:C
39. 执行下面的程序后,a的值为:( )
main()
{ int a,b;
for (a=1,b=1;a<100;a++)
{
if (b>=20) break;
if (b%3==1)
{ b+=3; continue; }
b-=5;
}
}
A) 7 B) 8 C) 9 D) 10
答案:B
40. 读程序:
main()
{ int num=0;
while (num<=2)
{ num++; printf("%3d",num);}
}
上面程序的输出结果是:( )
A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4
答案:C
41. 以下循环体的执行次数是:( )
main()
{ int i,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d \n",i);
}
A) 3 B) 2 C) 1 D) 0
答案:C
42. 在C语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:( )
A) switch B) continue
C) break D) if
答案:C
二、判断题:

1. ( F )用1作while循环的判断条件,则循环一次也不执行。
2. ( F )for循环表达式的括号内的3个表达式均不可以省略。

3. ( T )语句while(!E);中的条件!E等价于E==0。
4. ( T )语句while(E);中的条件E等价于E!=0。
5. ( F )若有for( ; ; ){……},是指循环体执行0次。
6. ( F )程序有死循环的时候,上机编译不能通过。
7. ( T )强制终止死循环可以使用CTRL+BREAK组合键。
8. ( F )执行for(I=0;I<3;I++);后I的值为2。
9. ( F )执行for(I=0,j=0;I<2;I++);j=j+1;后j的值为1。
10. ( T )所有类型的循环都可以进行嵌套使用。
11. ( T )利用break语句可以提前终止循环的执行。
12. ( F )利用continue语句可以提前终止循环的执行。
13. ( F )break语句和continue语句不可以同时出现在同一个循环体内。
14. ( F )switch语句中,每一个case的冒号后面都必须至少跟有一条语句
15. ( F ) 关于if语句中,条件表达式只能是关系表达式或逻辑表达式
三、多选题 
1、 关于if语句,下列叙述正确的是:( )
A.if语句中,条件表达式只能是关系表达式或逻辑表达式
B.if语句中,条件表达式的括号不可以省略
C.else子句不能作为一个独立的语句单独使用,必须是if语句的一部分。
D.if和else后面可以包含多个操作语句,此时要用一对大括号把这多个语句对括起来成为一个复合语句。
答案:BCD
2、 以下4条语句,没有语法错误的是()
A.if (a>b) m =a; B.if (a);
C.if ((a=b)>=0) m=a; D.if ((a=b;)>=0) m=a;
答案:ABC
3、 如果不加花括号表示else与if的配对关系,则else与if的匹配方法,不正确的是
A.else与它上面最远的if配对
B.else与它上面最近的if配对
C.else与离它最近的if配对
D.else与它上面最近的且没有和其他else配对的if配对
答案:ABC
4、 关于条件运算符的叙述正确的是
A.条件运算符的优先级别比关系运算符和算术运算符都低
B.条件运算符是C语言中惟一的一个三目运算符
C.条件运算符的结合方向是“自右至左”
D.条件运算符可以替代任何if语句的功能
答案:ABC
5、 关于switch语句叙述正确的是
A.语句中,case的冒号后面允许没有语句。
B.switch语句中,每一个case的冒号后面都允许跟有多条语句。
C.在与switch语句配套的case语句中所使用的表达式可以是变量或常量
D.switch语句中,可以没有default语句。
答案:ABD
6、 在计数循环for(表达式1;表达式2;表达式3)中,可以省略的表达式是:( )
A.表达式1 B.表达式2 C.表达式3
D.三个表达式都可以 E.一个都不能少
答案:ABCD
7、 下列语句段是死循环的是( )
A.n=100; B.s=33;
while(n) n=n%100+1; while(s++%2+s%2) s++;
C.for(;;);

D.for(i=1;;)
if(--i)break;
E.x=0;
do{ x++;
}while(x>=0);
答案:ABCE
第7章 数组
一、选择题
1、若有以下说明语句:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c=’a’,d,g;
则数值为4的表达式是:( )。
A、a[g-c] B、a[4] C、a[‘d’-‘c’] D、a[‘d’-c]
答案:D
2、假设int型变量占两个字节的存储单元,若有定义:
int x[10]={0,2,4};
则数组x在内存中所占字节数为:( )
A、3 B、6 C、10 D、20
答案:D
3、下列合法的数组定义是:( )
A、int a[]=”string”; B、int a[5]={0,1,2,3,4,5};
C、char a=”string”; D、char a[]={0,1,2,3,4,5};
答案:D
4、若给出以下定义:
char x[]=”abcdefg”;
char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
则正确的叙述为:( )
A、数组x和数组y等价 B、数组x和数组y的长度相同
C、数组x的长度大于数组y的长度 D、数组y的长度大于数组x的长度
答案:C
5、下面程序段的输出结果是:( )
int j;
int x[3][3]={1,2,3,4,5,6,7,8,9};
for (j=0;j<3;j++)
printf(“%d”,x[j][2-j]);
A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9
答案:C
6、下列程序运行后的输出结果是:( )
main()
{ int n[3],t,j,k;
for(t=0;t<3;t++)
n[t]=0;
k=2;
for(t=0;tfor(j=0;j<3;j++)
n[j]=n[t]+1;
printf(“%d\n”,n[1]);
}
A、 2 B、 1 C、 0 D、3
答案:D
7、有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18}, i=0,k=0;
while(i<7 && p[i]%2) { k =k+ p[i]; i++; }
printf("%d\n", k);
}
执行后输出结果是:( )
A、58 B、56 C、45 D、24
答案:D
8、以下能正确定义数组并正确赋初值的语句是:( )
A、int N=5,b[N][N]; B、int a[1][2]={{1},{3}};
C、int c[2][]= {{1,2},{3,4}}; D、int d[3][2]={{1,2},{3,4}};
答案:D
9、有以下程序
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0; i<3; i++)
{ printf("%d ",m[k][i]); }
}
执行后输出结果是:( )
A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9
答案:C
10、以下能正确定义一维数组的选项是:( )
A、int num[]; B、int num[0..100];
C) #define N 100 D) int N=100;
int num[N]; int num[N];
答案:C
11、下列选项中正确的语句组是:( )
A、char s[8]; s={"Beijing"}; B、char *s; s={"Beijing"};
C、char s[8]; s="Beijing"; D、char *s; s="Beijing";
答案:D
12、有以下程序段
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、8 D、9
答案:D
13、有以下程序
main( )
{ char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d\n",sizeof(a),sizeof(b));
}
执行后输出结果是:( )
A、7 7 B、8 8 C、8 10 D、10 10
答案:C
14、有以下程序的输出结果是:( )
void swap1(int c[])
{ int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{ int t;
t=c0;c0=c1;c1=t;}
main( )
{ int a[2]={3,5},b[2]={3,5};
swap(a); swap2(b[0],b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
A、5 3 5 3 B、 5 3 3 5 C、3 5 3 5 D、3 5 5 3
答案:B
15、有以下程序
int f(int b[][4])
{ int i,j,s=0;
for(j=0;j<4;j++)
{ i=j;
if(i>2) i=3-j;
s+=b[i][j];
}
return s;
}
main( )
{ int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));
}
执行后的输出结果是:( )
A、12 B、11 C、18 D、16
答案:D
16、有以下程序
void sort(int a[],int n)
{ in t i,j,t;
for(i=0;ifor(j=i+2;jif(a[i]{ t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++)
printf("%d",aa[i]);
printf("\n");
}
其输出结果是:( )
A、1,2,3,4,5,6,7,8,9,10, B、10,9,8,7,6,5,4,3,2,1,
C、9,2,7,4,5,6,3,8,1,10, D、1,10,3,8,5,6,7,4,9,2,
答案:C
17、有以下程序
void f(int a[],int i,int j)
{ int t;
if(i{ t=a[i]; a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main( )
{ int i,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)
printf("%d,",aa[i]);
printf("\n");
}
执行后输出结果是:( )
A、5,4,3,2,1, B、5,2,3,4,1, C、1,2,3,4,5, D、1,2,3,4,5,
答案:A
18、 以下程序的输出结果是:( )
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A、"AAAA" B、 "BBB" C、 "BBBCC" D、 "CC"
答案:B
19、 以下程序的输出结果是:( )
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A、 3 B、 4 C、 1 D、 9
答案:B
20、有以下程序
main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++) s+=aa[i][1];
printf("%d\n",s);
}
程序运行后的输出结果是:( )
A、 11 B、 19 C、 13 D、、20
答案:B
21、若有以下定义语句:
char s[10],s=”abcd”;printf(“%s\n”,s);
则运行结果是:( )
A、输出abcd B、输出a C、输出ab cd

D、编译不通过
答案:D
22、不能把字符串“Hello!”赋给数组b的语句是:( )
A、char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’}; B、char b[10];b=”Hello!”;
C、char b[10]; strcpy(b,”Hello!”); D、char b[10]=”Hello!”;
答案:B
23、若有以下程序段:
char str[]=”ab\n\012\\\””; printf(“%d”,strlen(str));
该程序段的输出结果是:( )
A、 3 B、 4 C、 6 D、12
答案:C
24、函数调用strcat(strcpy(str1,str2),str3)的功能是_:( )
A、将串str1复制到串str2中后在连接到串str3之后
B、将串str1连接到串str2之后再复制到串str3之后
C、将串str2复制到串str1中后再将串str3连接到串str1之后
D、将串str2连接到串str1中后再将串str1复制到串str3中
答案:C
25、下列程序的输出结果是:( )
main()
{ char ch[7]={“65ab21”};
int j,s=0;
for(j=0;ch[j])>=’0’&&ch[j]<=’9’;j+=2)
s=10*s+ch[j]-‘0’;
printf(“%d\n”,s);
}
A、12ba56 B、66521 C、6 D、62
答案:C
26、设已定义char s[]=”\”Name\\Address\”\n”;,则字符串s所占的字节数是:( )
A、19 B、18 C、15 D、14
答案:C
27、设已定义char c[8]=”Tianjin”和int j,则下面的输出函数调用中错误的是:( )
A、printf(“%s”,c); B、for(j=0;j<8;j++) printf(“%c”,c[j]);
C、puts(c); D、for(j=0;j<8;j++) puts(c[j]);
答案:D
28、设已定义char a[10]和 int j,则下面输入函数调用中错误的是:( )
A、scanf(“%s”,a); B、for(j=0;j<9;j++) scanf(“%c”,a[j]);
C、gets(a); D、for(j=0;j<9;j++) scanf(“%c”,&a[j]);
答案:B
29、设已定义char x[8]和int j,为了给该数组赋值,下面语句中正确的是:( )
A、x[8]=”Turbo C”; B、x=” Turbo C”;
C、x[]=”Turbo C”; D、for(j=0;j<7;j++) x[i]=getchar();
答案:D
30、有如下程序,
main()
{ int n[5]={0,0,0},j,k=2;
for(j=0;jprintf(“%d\n”,n[k]);
}
该程序的输出结果是:( )
A、不确定的值 B、2 C、1 D、0
答案:D
31. 在C语言中,一维数组的定义方式为:类型说明符 数组名( )。
A.[常量表达式] B.[整型表达式]
C.[整型常量]或[整型表达式] D.[整型常量]
答案:A
32. 若有说明:int a[10];,则对a数组元素的正确引用是:( )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]
答案:D
33. 在C语言中,引用数组元素时,其数组下标的数据类型允许是:( )。
A.字符常量 B.浮点型常量
C.整型常量或整型表达式 D.任何类型的表达式
答案:C
34. 下列

数组定义、初始化或赋值语句中,正确的是:( )。
A.int x[5]={1,2,3,4,5,6}; B.int n=8; int score[n];
C.int a[8]; a[8]=100; D.int x[]={1,2,3,4,5,6};
答案:D
35. 合法的数组说明语句是:( )。
A.int a[]=“string”; B.char a[]={0,1,2,3,4,5};
C.char a =“string”; D.int a[5]={0,1,2,3,4,5};
答案:B
36. 已知int a[][3]={1,2,3,4,5,6,7};,则数组a的第一维的大小是:( )。
A.2 B.3 C.4 D.无确定值
答案:B
37. 若有说明:int a[3][4];,则对a数组元素的非法引用是:( )。
A.a[0][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4]
答案:D
38. 已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是:( )。
A.数组a和数组b的长度相同 B.a数组长度小于b数组长度
C.a数组长度大于b数组长度 D.数组a和数组b等价
答案:C
39. 对两个数组a和b进行如下初始化:
char a[]=“ABCDEF”;
char b[]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’};
则以下叙述正确的是:( )。
A.数组a与数组b完全相同 B.数组a与数组b长度相同
C.数组a与数组b中都存放字符串 D.数组a比数组b长度长
答案:D
40. 有下面的程序段:
char a[3],b[]=“China”;
a=b;
printf(“%s”,a);
A.运行后将输出China B.运行后将输出Ch
C.运行后将输出Chi D.编译出错
答案:D
41. 下面程序的运行结果是:( )。
char c[5]={‘a’, ‘b’, ‘\0’, ‘c’, ‘\0’};
printf(“%s”,c);
A.ab B.abc C.ab\0 D.ab\0c\0
答案:A
42. 设有数组定义:char array[]=“china”;,则数组array所占的空间为:( )。
A.4个字节 B.5个字节 C.6个字节 D.7个字节
答案:C
43. 判断字符串s1是否大于字符串s2,应当使用:( )。
A.if(s1>s2) B.if(strcmp(s1,s2))
C.if(strcmp(s2,s1)>0) D.if(strcmp(s1,s2)>0)
答案:D
44. 若有说明:int a[][4]={0,0};,则下面不正确的叙述是:( )。
A.数组a的每个元素都可得到初值0
B.二维数组a的第一维大小为1
C.因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值
答案:D
45. 下列语句中,不正确的是:( )。
A.char str[5]="hello";
B.char str[]={'h','e','l','l','o','\0'};
C.char str[5]={"hi"};
D.char str[100]="";
答案:A
46. 下面错误的初始化语句是:( )。
A.char str[]="hello";
B.char str[100]="hello";
C.char str[]={'h','e','l','l','o'};
D.char str[]={'hello'};
答案:D
47. 定义了一维int型数组a[10]后,下面错误的引用是:( )。
A.a[0]=1;
B.a[10]=2;
C.a[0]=5*2;
D.a[1]=a[2]*a[0];
答案:

B
48. 下面的二维数组初始化语句中,错误的是:( )。
A.float b[2][2]={0.1,0.2,0.3,0.4};
B.int a[][2]={{1,2},{3,4}};
C.int a[2][]= {{1,2},{3,4}};
D.float a[2][2]={0};
答案:C
49. 引用数组元素时,数组下标可以是:( )。
A.整型常量 B.整型变量 C.整型表达式 D.以上均可
答案:D
50. 定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为:( )。
A.24 B.25 C.18 D.17
答案:B
51. strlen("A\0B\0C")的结果为:( )。
A.0 B.1 C.2 D.3
答案:B
52. 下面程序的运行结果是:( )。
main()
{
int a[][3]={1,2,3,4,5,6};
printf("%d",a[1][1]);
}
A.3 B.4 C.5 D.6
答案:C
53. 下面程序的运行结果是:( )。
main()
{
char s1[20]="Good!";
char s2[15]="AB";
printf("%d",strlen(strcpy(s1,s2)));
}
A.20 B.15 C.5 D.2
答案:D
54. 下面程序的运行结果是:( )。
main()
{
char s1[20]="ABCDEF";
int i=0;
while(s1[i++]!='\0')
printf("%c", s1[i++]);
}
A.ABCDEF B.BDF C.ABCDE D.BCDE
答案:B
55. 下面程序的运行结果是:( )。
main()
{
int n[2]={0},i,j,k=2;
for(i=0;ifor(j=0;jn[j]=n[i]+1;
printf("%d\n",n[k]);
}
A.不确定的值 B.3 C.2 D.1
答案:A
56. 下面程序的运行结果是:( )。
main()
{
int x[]={22,33,44,55,66,77,88};
int k,y=0;
for (k=1;k<=4;k++)
if (x[k]%2==1)
y++;
printf("%d",y);
}
A.0 B.1 C.2 D.3
答案:C
57. 下面程序的运行结果是:( )。
main()
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;js+=a[i][j];
printf("%d",s);
}
A.14 B.19 C.20 D.21
答案:A
58. 下面程序的运行结果是:( )。
main()
{
char ch[7]= {"12ab56"};
int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d",s);
}
A.1 B.1256 C.12ab56 D.l2
答案:A
59. 下面程序的运行结果是:( )。
main()
{
char s[]="ab1c2d4e";
int i;
i=0;
while(s[i]!='\0')
{
if(s[i]>='a'&&s[i]<='z')
printf("%c",s[i]);
i++;
}
}
A.ab B.ab1c2d4e C.abcde D.a
答案:C
60. 下面程序的运行结果是:( )。
main()
{
int i=0,n=0;
char s[10]="298h01";
for(i=0;s[i]!='\0';i++)
if(s[i]<='9'&&s[i]>='0')
n=n*10+(s[i]-'0');
else
break;
printf("%d\n",n);
}
A.298h01 B.29801 C.01 D.298
答案:D

二、判断题:
1. ( F )在程序中可以对数值数组中的数据进行整体使用。 
2. ( T )如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。 
3. ( F )字符数组的输出不能一次性的整体输出。 
4. ( T )用scanf函数输入的字符串不可以带空格。 
5. ( T )用gets函数输入的字符串可以带空

格。 
6. ( F )实现两个字符串的复制可以使用str1=str2;语句。 
7. ( T )使用strcpy函数可以实现两个字符串的复制。 
8. ( T )使用strcat函数可以实现两个字符串的连接。 
9. ( F )使用strlen函数可以求出一个字符串的实际长度(包含‘\0’字符)。 
10. ( F )如有定义char a[]=”student”;则数组a的长度为7。 
11. ( F )如有定义char a[20];则可以通过a=“I am a boy”;给a赋值。 
12. ( T )如有定义int a[2][3];则数组a的最后一个元素为a[1][2]。 
13. ( T )如有定义int a[3][4]={0}; 则数组a的所有元素初值均为0。 
14. ( F )C语言中数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值。
15. ( F )构成数组的各个元素可以有不同的数据类型。
16. ( F )若有说明:int a[10];,则可以a[10]引用数组a的第10个元素。
17. ( T )引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。
18. ( T )若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]。
19. ( T )一个一维数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组。
20. ( T )在C语言中,允许用字符串来直接初始化字符数组。
21. ( F )字符数组的输出不能一次性的整体输出。
22. ( F )使用strcat函数可以实现两个字符串的复制。
三、多选题
1、 以下关于数组的描述中,正确的有:( )。
在定义数组时,有时可以将该数组的维数省略
数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值
构成数组的各个元素可以有不同的数据类型
有定义:int a[3]; 则定义了a[0]、a[1]、a[2]三个数组元素
在程序中可以对数值数组中的数据进行整体使用
答案:AD
2、 以下关于数组的描述中,错误的有:( )。
引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式
可以通过数组名来整体引用一个数组
在程序中可以对数值数组中的数据进行整体使用
若有说明:int a[10];,则可以a[10]引用数组a的第9个元素
若有说明:int a[10];,则可以a[10]引用数组a的第10个元素
答案:BCDE
3、 以下关于数组的描述中,错误的有:( )。
可以通过如下语句来完成对一个数组的输入:int a[10]; scanf("%d",a);
可以通过如下语句来完成对一个数组的输入:int a[10]; scanf("%d",&a);
若有int a[10]={6,7,8,9,10};,则是将5个初值依次赋给a[0]至a[4]
数组元素可以像普通变量一样使用
int a[9]; 则数组a的下标范围是1-9
答案:ABE
4、 以下关于数组的描述中,正确的有:( )。
数组名实质上是数组的首地址,是一个常量,不能对其赋值
在定义数组时,有时可以将该数组的维数省略
一个一维

数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组
如有定义int a[3][4]={0}; 则数组a的所有元素初值均为0
可以通过数组名来整体引用一个数组
答案:ABCD
5、 以下关于数组的描述中,错误的有:( )。
如有定义int a[2][3];则数组a的最后一个元素为a[1][2]
一个一维数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组
若有说明:static int a[3][3]; 那么数组a中每个元素初值为0
在定义二维数组时,可以将该数组的两个维数全部省略
如有定义char a[20]; 则可以通过a="I am a boy"; 给a赋值
答案:DE
6、 若有说明:int a[][4]={0,0};,则下面正确的叙述有:( )。
数组a的每个元素都可得到初值0
二维数组a的第一维大小为1
因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1
只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值
只有元素a[1][1]和a[1][2]可得到初值0,其余元素均得不到初值
答案:ABC
7、 以下关于数组的描述中,正确的有:( )。
若有定义char a[]="hello";,则数组a的长度为6
有定义char a[3]; 则定义了a[1]、a[2]、a[3]三个数组元素
构成字符数组的各个元素必须是字符类型的数据
可以通过数组名来整体引用一个数组
设有数组定义char array [ ]="China"; 则数组array所占的空间为5个字节
答案:AC
8、 以下关于数组的描述中,正确的有:( )。
在C语言中,允许用字符串来直接初始化字符数组
若有定义char a[20];,则可以通过a="I am a boy";给a赋值
若有char a[10]={1,2,3};,则是将3个初值依次赋给a[1]至a[3]
构成字符数组的各个元素必须是字符类型的数据
数组名实质上是数组的首地址,是一个常量,不能对其赋值
答案:ADE
9、 以下关于数组的描述中,错误的有:( )。
字符数组的输出不能一次性的整体输出
若有char a[10]={1,2,3};,则是将3个初值依次赋给a[0]至a[2]
构成字符数组的各个元素可以是不同数据类型的元素
构成字符数组的各个元素必须是字符类型的数据
若有定义char b[]="hello";,则数组b的长度为6
答案:AC
10、 下列语句中,正确的有:( )。
char str[5]="hello";
char str[]={'h','e','l','l','o','\0'};
char str[5]={"hi"};
char str[100]="";
char str[3]="this";
答案:BCD
11、 函数调用strcat(strcpy(str1,str2),str3)的功能,以下说法错误的有:( )。
将串str1复制到串str2中后在连接到串str3之后
将串str1连接到串str2之后再复制到串str3之后
将串str2复制到串str1中后再将串str3连接到串str1之后
将串str2连接到串str1中后再将串str1复制到串str3中
将串str2

相关文档