《C语言程序设计》试题库及答案.docx
《《C语言程序设计》试题库及答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》试题库及答案.docx(120页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》试题库及答案
C语言程序设计习题集及答案
电子信息工程学院
2014.9.1
内容简介
本习题集是为根据嘉应学院电子信息工程学院《C语言程序设计》课程教学大纲筛选题目整理而成的。
本习题集共分10章,提供了361道选择题,85道填空题,42道编程题,题集覆盖了《C语言程序设计》的全部内容,满足嘉应学院电子信息工程学院《C语言程序设计》考试大纲的要求。
寄语
亲爱的同学们:
很高兴你们学习计算机的语言—C语言,她将带你进入一个全新的计算机的世界。
我是你们的老师,但我更希望是你们的朋友,为你在学习C语言的道路上提供帮助。
同学们,“攻城不怕坚,攻书莫畏难。
科学有险阻,苦战能过关。
”,学习是辛苦的,但也充满了挑战和乐趣。
我希望你们在学习C语言时,带着希望出发,体会一路的艰辛,最后满载收获而回。
朋友们,学习向来没有什么捷径可寻。
“多看、多模仿、多操作”是我能给你们的唯一建议。
祝你们学业有成。
杨久红
2014.9.1
第一部分习题
第二部分参考答案
第一部分习题
第1章C语言概述
1.1选择题
1.以下说法中正确的是()。
(A)C语言程序总是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main()函数中定义
(C)C语言程序总是从main()函数开始执行
(D)C语言程序中的main()函数必须放在程序的开始部分
2.以下叙述中正确的是()。
(A)C语言比其他语言高级
(B)C语言可以不用编译就能被计算机识别执行
(C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
(D)C语言出现的最晚,具有其他语言的一切优点
3.在一个C程序中()。
(A)main函数必须出现在所有函数之前 (B)main函数可以在任何地方出现
(C)main函数必须出现在所有函数之后 (D)main函数必须出现在固定位置
4.以下叙述中正确的是()。
(A)C程序中注释部分可以出现在程序中任意合适的地方
(B)花括号"{"和"}"只能作为函数体的定界符
(C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
(D)分号是C语句之间的分隔符,不是语句的一部分
5.用C语言编写的代码程序()。
(A)可立即执行(B)是一个源程序
(C)经过编译即可执行(D)经过编译解释即可执行
6.以下叙述中错误的是()。
(A)C语言源程序经编译后生成后缀为.obj的目标程序
(B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
(D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
7.以下叙述中正确的是()。
(A)C语言程序将从源程序中第一个函数开始执行
(B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
(C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束
(D)main可作为用户标识符,用以命名任意一个函数作为主函数
1.2填空题
1.C语言源程序文件的后缀是。
2.一个C语言源程序由若干函数组成,其中至少应含有一个。
1.3编程题
编写一个C程序,输出以下信息:
******************************
Verygood!
******************************
第2章数据的存储与运算
2.1选择题
1.C语言提供的合法的数据类型关键字是()。
(A)Double(B)short(C)integer(D)Char
2.若有说明和语句:
inta=5;
a++;
此处表达式a++的值是()。
(A)7(B)6(C)5(D)4
3.C89语言中最简单的数据类型包括()。
(A)整型、实型、逻辑型(B)整型、实型、字符型
(C)整型、字符型、逻辑型(D)整型、实型、逻辑型、字符型
4.在C语言中,要求运算数必须是整型的运算符是()。
(A)%(B)/(C)<(D)!
5.以下有4个用户标识符,其中合法的一个是()。
(A)for(B)4d(C)f2_G3(D)short
6.下面程序的输出是()。
main()
{intx=10,y=3;
printf("%d\n",y=x/y);}
(A)0(B)1(C)3(D)不确定的值
7.C语言提供的合法的关键字是()。
(A)Switch(B)cher(C)Case(D)default
8.在C语言中,合法的字符常量是()。
(A)'\084'(B)'\x43'(C)'ab'(D)"\0"
9.若已定义x和y为double类型,且x=1,则表达式:
y=x+3/2的值是()。
(A)1(B)2(C)2.0(D)2.5
10.下列不正确的转义字符是()。
(A)'\\'(B)'\"(C)'074'(D)'\0'
11.若有以下定义:
chara;intb;
floatc;doubled;
则表达式a*b+d-c值的类型为()。
(A)float(B)int(C)char(D)double
12.以下程序的输出结果是()。
main()
{inta=12,b=12;
printf("%d,%d\n",--a,++b);
}
(A)1010(B)1212(C)1110(D)1113
13.以下选项中属于C89语言的数据类型是()。
(A)复数型(B)逻辑型(C)双精度型(D)集合型
14.设有intx=11;则表达式(x++*1/3)的值是()。
(A)3(B)4(C)11(D)12
15.C语言中运算对象必须是整型的运算符是()。
(A)%=(B)/(C)=(D)〈=
16.设有说明语句:
chara=’\72’;则变量a中()。
(A)包含1个字符(B)包含2个字符(C)包含3个字符(D)说明不合法
17.下列选项中,合法的C语言关键字是()。
(A)VAR(B)cher(C)integer(D)default
18.以下选项中,非法的字符常量是()。
(A)'\t'(B)'\17'(C)"n"(D)'\xaa'
19.若变量a是int类型,并执行了语句:
a=‘A'+1.6;,则正确的叙述是()。
(A) a的值是字符C (B) a的值是浮点型
(C) 不允许字符型和浮点型相加 (D) a的值是字符‘A’的ASCII值加上1。
20.以下选项中不属于C语言的类型的是()。
(A) signed short int (B) unsigned long int
(C) unsigned int (D) long short
21.以下选项中合法的用户标识符是()。
(A) long (B) _2Test (C) 3Dmax (D) A.dat
22.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是()。
(A) 字符A (B)字符a (C)字符e (D)非法的常量
23.下列叙述中正确的是()。
(A)C语言中既有逻辑类型也有集合类型
(B)C语言中没有逻辑类型但有集合类型
(C)C语言中有逻辑类型但没有集合类型
(D)C语言中既没有逻辑类型也没有集合类型
24.下列关于C语言用户标识符的叙述中正确的是()
(A)用户标识符中可以出现在下划线和中划线(减号)
(B)用户标识符中不可以出现中划线,但可以出现下划线
(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
(D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头
25.有以下程序
main()
{ int i=10,j=1;
printf("%d,%d\n",i--,++j);
}
执行后输出结果是()。
(A) 9,2 (B) 10,2 (C) 9,1 (D) 10,1
26.以下选项中可作为C语言合法整数的是()。
(A)10110B (B)0386 (C)0xffa (D)x2a2
27.以下不能定义为用户标识符的是()。
(A)scan (B)num (C)_3com_(D)int
28.已定义ch为字符型变量,以下赋值语句中错误的是()。
(A)ch='\'; (B)ch=62+3; (C)ch=80; (D)ch='\xaa';
29.已定义c为字符型变量,则下列语句中正确的是()。
(A)c='97'; (B)c="97"; (C)c=97; (D)c="a";
30.以下符合C语言语法的实型常量()。
(A) 1.2E0.5 (B) 3.14.159E (C) .5E-3 (D) E15
31.设有定义:
float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是() 。
(A) (a+b) *h/2 (B) (1/2)*(a+b) *h
(C) (a+b) *h*1/2 (D) h/2*(a+b)
32.下列选项中,不能用作标识符的是()。
(A)_1234_(B)_1_2(C)int_2_(D)2_int_
33.有以下程序
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是()。
(A)3(B)5(C)-1(D)-2
34.有以下程序
main()
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是()。
(A)b,b(B)b,c(C)a,b(D)a,c
35.以下选项中可作为C语言合法常量的是()。
(A)-80.(B)e1(C)-8e1.0(D)-80.0e
36.以下不能定义为用户标识符的是()。
(A)Main(B)_0(C)_int(D)sizeof
37.数字字符0的ASCII值为48,若有以下程序
main()
{chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是()。
(A)3,2(B)50,2(C)2,2(D)2,50
38.有以下程序
main()
{intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是()。
(A)12353514(B)12353513(C)12343514(D)12343513
39.以下叙述中错误的是()。
(A)用户所定义的标识符允许使用关键字
(B)用户所定义的标识符应尽量做到“见名知意”
(C)用户所定义的标识符必须以字母或下划线开头
(D)用户定义的标识符中,大、小写字母代表不同标识
40.以下不能正确计算代数式值的C语言表达式是()。
(A)1/3*sin(1/2)*sin(1/2)(B)sin(0.5)*sin(0.5)/3
(C)pow(sin(0.5),2)/3(D)1/3.0*pow(sin(1.0/2),2)
41.以下能正确定义且赋初值的语句是()。
(A)intn1=n2=10;(B)charc=32;(C)floatf=f+1.1;(D)doublex=12.3E2.5;
42.以下不合法的用户标识符是()。
(A)j2_KEY(B)Double(C)4d(D)_8_
43.以下不合法的字符常量是()。
(A)′\018′(B)′\"′(C)′\\′(D)′\xcc′
44.表达式3.6-5/2+1.2+5%2的值是()。
(A)4.3(B)4.8(C)3.3 (D)3.8
45.不可在C程序中用做用户标识符的标识符是()。
(A)and(B)Date(C)Hi(D)case
46.以下选项中,不合法的C语言数值常量是()。
(A)028(B)12.(C).177(D)0x8A
47.以下关于long、int和short类型数据占用内存大小的叙述中正确的是()。
(A)均占4个字节(B)根据数据的大小来决定所占内存的字节数
(C)由用户自己定义(D)由C语言编译系统决定
48.已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。
执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。
(A)A,B(B)A,68(C)65,66(D)65,68
49.以下正确的字符串常量是()。
(A)"\\\"(B)’abc’(C)OlympicGames(D)""
2.2填空题
1.23/4= 。
2.下程序运行后的输出结果是 。
main()
{ char m;
m='B'+32; printf("%c\n",m);
}
3.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为___。
4.以下程序的输出结果是。
main()
{inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
}
5.若有语句
int i=-19,j=i%4;
printf("%d\n",j);
则输出结果是 。
6.已知字符A的ACSII码值为65,以下语句的输出结果是。
char ch=’B’;
printf(“%c %d\n”,ch,ch);
7.设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是。
printf("%d,%d\n",x--,--y);
2.3编程题
1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比?
计算公式为:
其中r为年增长率;n为年数;P为与现在相比的百分比。
2.在一个笼子里同时养着一些鸡和兔子,你想了解有多少只鸡和多少只兔,主人对你说:
我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?
第3章最简单的程序设计-顺序程序设计
3.1选择题
1.在下列选项中,不正确的赋值语句是()。
(A)++t;(B)n1=(n2=(n3=0));(C)k=i==j;(D)a=b+c=1;
2.以下叙述中正确的是()。
(A)用C程序实现的算法必须要有输入和输出操作
(B)用C程序实现的算法可以没有输出但必须要输入
(C)用C程序实现的算法可以没有输入但必须要有输出
(D)用C程序实现的算法可以既没有输入也没有输出
3.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。
(A)a:
=b+1(B)a=b=c+2(C)int18.5%3(D)a=a+7=c+b
4.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。
(A)a==1(B)++i;(C)a=a++=5;(D)a=int(i);
5.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是()。
(A)6.500000 (B)6 (C) 5.500000 (D) 6.000000
6.C语言中用于结构化程序设计的三种基本结构是 ()。
(A)顺序结构、选择结构、循环结构 (B)if、switch、break
(C)for、while、do-while (D)if、for、continue
7.以下选项中非法的表达式是()。
(A)0<=x<100 (B)i=j==0 (C)(char)(65+3) (D)x+1=x+1
8.有以下定义语句
doublea,b;intw;longc;
若各变量已正确赋值,则下列选项中正确的表达式是()。
(A)a=a+b=b++(B)w%((int)a+b)
(C)(c+w)%(int)a(D)w=a==b;
9.以下选项中,与k=n++完全等价的表达式是()。
(A) k=n,n=n+1 (B) n=n+1,k=n (C) k=++n (D) k+=n+1
10.以下叙述中错误的是()。
(A)C语句必须以分号结束
(B)复合语句在语法上被看作一条语句
(C)空语句出现在任何位置都不会影响程序运行
(D)赋值表达式末尾加分号就构成赋值语句
11.以下叙述中错误的是()。
(A)算法正确的程序最终一定会结束
(B)算法正确的程序可以有零个输出
(C)算法正确的程序可以有零个输入
(D)算法正确的程序对于相同的输入一定有相同的结果
12.设有如下的变量定义:
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下符合C语言语法的表达式是()。
(A)a+=a-=(b=4)*(a=3)(B)x%(-3);(C)a=a*3=2(D)y=float(i)
13.以下程序的输出结果是()。
main()
{ inti=010,j=10,k=0x10;
printf("%d,%d,%d\n",i,j,k);
}
(A)8,10,16(B)8,10,10(C)10,10,10(D)10,10,16
14.已知字母A的ASCII码为十进制的65,下面程序的输出是()。
main()
{charch1,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)不确定的值
15.若有以下定义和语句:
intu=010,v=0x10,w=10;
printf("%d,%d,%d\n,u,v,w);
则输出结果是()。
(A)8,16,10(B)10,10,10(C)010,16,10(D)16,16,16
16.若有以下定义和语句
charc1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是()。
(A)2,M(B)3,E
(C)2,E(D)输出项与对应的格式控制不一致,输出结果不确定
17.下列可作为C语言赋值语句的是()。
(A)x=3(B)a=b=6(C)i--;(D)y=int(x);
18.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为()。
(A)100765.12(B)i=100,f=765.12
(C)100765.12(D)x=100y=765.12
19.以下叙述中正确的是()。
(A)输入项可以是一个实型常量,如:
scanf("%f",3.5);
(B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:
scanf("a=%d,b=%d");
(C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
scanf("%4.2f",&f);
(D)当输入数据时,必须指明变量地址,例如:
scanf("%f",&f);
20.以下程序的输出结果是()。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
(A)17,021,0x11(B)17,17,17
(B)17,0x11,021(D)17,21,11
21.下列程序的输出结果是()。
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
(A)3(B)3.2(C)0(D)3.07
22.下列程序执行后的输出结果是()。
main()
{intx='f';printf("%c\n",'A'+(x-'a'+1));}
(A)G(B)H(C)I(D)J
23.下列程序的运行结果是()。
#include
main()
{inta=2,c=5;
printf("a=%d,b=%d\n",a,c);}
(A)a=%2,b=%5(B)a=2,b=5
(C)a=d,b=d(D)a=%d,b=%d
24.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。
(A)inputx、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);
25.若有以下程序段,
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是()。
(A)0(B)0.5(C)1(D)2
26.若有定义:
int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为()。
(A) 1.4 (B) 1 (C) 2.0 (D) 2
27.以下程序段的输出结果是()。
int a=1234;
printf("%2d\n",a);
(A) 12 (B) 34 (C) 1234 (D) 提示出错、无结果
28. 以下非法的赋值语句是()。
(A) n=(i=2,++i); (B)j++; (C) ++(i+1); (D)x=j>0;
29. 已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是()。