C语言程序设计习题集及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计习题集及答案
电子信息工程学院
2014.9.1
内容简介
本习题集是为根据嘉应学院电子信息工程学院《C语言程序设计》课程教学大纲筛选题目整理而成的。

本习题集共分10章,提供了361道选择题,85道填空题,42道编程题,题集覆盖了《C语言程序设计》的全部内容,满足嘉应学院电子信息工程学院《C语言程序设计》考试大纲的要求。

寄语
亲爱的同学们:
很高兴你们学习计算机的语言—C语言,她将带你进入一个全新的计算机的世界。

我是你们的老师,但我更希望是你们的朋友,为你在学习C语言的道路上提供帮助。

同学们,“攻城不怕坚,攻书莫畏难。

科学有险阻,苦战能过关。

”,学习是辛苦的,但也充满了挑战和乐趣。

我希望你们在学习C语言时,带着希望出发,体会一路的艰辛,最后满载收获而回。

朋友们,学习向来没有什么捷径可寻。

“多看、多模仿、多操作”是我能给你们的唯一建议。

祝你们学业有成。

杨久红 2014.9.1
目录
第一部分习题
第1章C语言概述 (1)
1.1选择题 (1)
1.2填空题 (2)
1.3编程题 (2)
第2章数据的存储与运算 (3)
2.1选择题 (3)
2.2填空题 (6)
2.3编程题 (7)
第3章最简单的程序设计-顺序程序设计 (8)
3.1选择题 (8)
3.2填空题 (13)
3.3编程题 (14)
第4章选择结构程序设计 (15)
4.1选择题 (15)
4.2填空题 (19)
4.3编程题 (20)
第5章循环结构程序设计 (21)
5.1选择题 (21)
5.2填空题 (29)
5.3编程题 (30)
第6章利用数组处理批量数据 (32)
6.1选择题 (32)
6.2填空题 (37)
6.3编程题 (38)
第7章用函数实现模块化程序设计 (40)
7.1选择题 (40)
7.2填空题 (52)
7.3编程题 (57)
第8章善于使用指针 (58)
8.1选择题 (58)
8.2填空题 (70)
8.3编程题 (71)
第9章结构体 (72)
9.1选择题 (72)
9.2填空题 (73)
9.3编程题 (74)
第10章利用文件保存数据 (75)
10.1选择题 (75)
10.2填空题 (77)
10.3编程题 (79)
第二部分参考答案
第1章C语言概述 (81)
1.1选择题 (81)
1.2填空题 (81)
1.3编程题 (81)
第2章数据的存储与运算 (81)
2.1选择题 (81)
2.2填空题 (82)
2.3编程题 (82)
第3章最简单的程序设计-顺序程序设计 (83)
3.1选择题 (83)
3.2填空题 (83)
3.3编程题 (83)
第4章选择结构程序设计 (84)
4.1选择题 (84)
4.2填空题 (85)
4.3编程题 (85)
第5章循环结构程序设计 (87)
5.1选择题 (88)
5.2填空题 (88)
5.3编程题 (88)
第6章利用数组处理批量数据 (95)
6.1选择题 (95)
6.2填空题 (95)
6.3编程题 (95)
第7章用函数实现模块化程序设计 (100)
7.1选择题 (100)
7.2填空题 (100)
7.3编程题 (100)
第8章善于使用指针 (104)
8.1选择题 (104)
8.2填空题 (104)
8.3编程题 (104)
第9章结构体 (106)
9.1选择题 (106)
9.2填空题 (106)
9.3编程题 (106)
第10章利用文件保存数据 (107)
10.1选择题 (107)
10.2填空题 (107)
10.3编程题 (107)
第一部分习题
第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程序,输出以下信息:
******************************
Very good!
******************************
第2章数据的存储与运算
2.1选择题
1.C语言提供的合法的数据类型关键字是( )。

(A)Double (B)short (C)integer (D)Char
2.若有说明和语句:
int a=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()
{ int x=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.若有以下定义:
char a; int b;
float c; double d;
则表达式a*b+d-c值的类型为( )。

(A) float (B) int (C) char (D) double
12.以下程序的输出结果是( )。

main()
{ int a=12,b=12;
printf("%d,%d\n",- -a,+ +b);
(A) 10 10 (B) 12 12 (C) 11 10 (D) 11 13
13.以下选项中属于C89语言的数据类型是( )。

(A) 复数型(B) 逻辑型(C) 双精度型(D) 集合型
14.设有int x=11; 则表达式(x++ * 1/3) 的值是( )。

(A) 3 (B) 4 (C) 11 (D) 12
15.C语言中运算对象必须是整型的运算符是( )。

(A) %= (B) / (C) = (D) 〈=
16.设有说明语句:char a=’\72’;则变量a中( )。

(A) 包含1个字符(B) 包含2个字符(C) 包含3个字符(D) 说明不合法
17.下列选项中,合法的C语言关键字是()。

(A) V AR (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()
{ int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是( )。

(A)3 (B)5 (C)-1 (D)-2
34.有以下程序
main()
{ char a='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()
{ char a='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()
{ int m=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)int n1=n2=10; (B)char c=32; (C)float f=f+1.1; (D)double x=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()
{ int a=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) int 18.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.有以下定义语句
double a,b; int w; long c;
若各变量已正确赋值,则下列选项中正确的表达式是( )。

(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.设有如下的变量定义:
int i=8, k, a, b;
unsigned long w=5;
double x=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( )
{ int i=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()
{ 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) 不确定的值
15.若有以下定义和语句:
int u=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.若有以下定义和语句
char c1='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) 100 765.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( )
{ int k=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()
{ double d=3.2; int x,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()
{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }
(A) G (B) H (C) I (D) J
23.下列程序的运行结果是( ) 。

#include <stdio.h>
main()
{ int a=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) 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);
25.若有以下程序段,
int c1=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,以下选项中正确的输入语句是()。

(A) scanf(“%2d%2d%2d”,&i,&j,&k);(B) scanf(“%d %d %d”,&i,&j,&k);
(C) scanf(“%d,%d,%d”,&i,&j,&k);(D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
30.设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是()。

(A)pri ntf(“x=%d\n”,x); (B) printf(“x=%1d\n”,x);
(C)printf(“x=%8dL\n”,x); (D)printf(“x=%LD\n”,x);
31.若有以下程序:
main()
{ int k=2,i=2,m;
m=(k+=i*=k);printf(“%d,%d\n”,m,i);
}
执行后的输出结果是()。

(A) 8,6 (B) 8,3 (C) 6,4 (D) 7,4
32.若有以下程序段
int m=0xabc,n=0xabc;
m-=n;
printf("%x\n",m);
执行后输出结果是( )。

(A) 0X0 (B) 0x0 (C) 0 (D) 0XABC
33.有以下程序段
int m=0,n=0; char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10A10<回车>,则输出结果是( )。

(A) 10,A,10 (B) 10,a,10 (C) 10,a,0 (D) 10,A,0
34.有以下程序
main()
{ int a; char c=10;
float f=100.0; double x;
a=f/=c*=(x=6.5);
printf("%d %d %3.1f %3.1f\n",a,c,f,x);
}
程序运行后的输出结果是( )。

(A)1 65 1 6.5 (B)1 65 1.5 6.5 (C)1 65 1.0 6.5 (D)2 65 1.5 6.5
35.有定义语句:int x, y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到
数值12,下面四组输入形式中,错误的是( )。

(A)11 12<回车> (B)11, 12<回车>(C)11,12<回车> (D)11,<回车>12<回车>
36.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位
四舍五入的是( )。

(A)x=x*100+0.5/100.0; (B)x=(x*100+0.5)/100.0;
(C)x=(int)(x*100+0.5)/100.0; (D)x=(x/100+0.5)*100.0;
37.若以下选项中的变量已正确定义,则正确的赋值语句是 ( )。

(A) x1=26.8%3 (B) 1+2=x2 (C) x3=0x12 (D) x4=1+2=3;
38.有以下程序
main( )
{ int x=102,y=012;
printf(“%2d,%2d\n”,x,y);
}
执行后输出结果是 ( ) 。

(A) 10,01 (B) 02,12 (C) 102,10 (D) 02,10
39.以下4个选项中,不能看作一条语句的是 ( )。

(A) {;} (B) a=0,b=0,c=0; (C) if(a>0); (D) if(b==0) m=1;n=2;
40.有以下程序
main()
{ int m=0256,n=256;
printf("%o %o\n",m,n);
}
程序运行后的输出结果是( )。

(A)0256 0400 (B)0256 256 (C)256 400 (D)400 400
41.有以下程序
main()
{ int a=666,b=888;
printf("%d\n",a,b);
}
程序运行后的输出结果是( )。

(A)错误信息(B)666 (C)888 (D)666,888
42.有以下程序
main()
{ char a,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:6,5,65,66<回车>。

则输出结果是( )。

(A)6,5,A,B (B)6,5,65,66 (C)6,5,6,5 (D)6,5,6,6
43.以下叙述中正确的是( )。

(A)调用printf函数时,必须要有输出项
(B)使用putchar函数时,必须在之前包含头文件stdio.h
(C)在C语言中,整数可以以二进制、八进制或十六进制的形式输出
(D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
44.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。

程序在编译时出错。

main()
{ int r; float s;
scanf("%d",&r);
s=pi*r*r; printf("s=%f\n",s);
}
出错的原因是( )。

(A)注释语句书写位置错误(B)存放圆半径的变量r不应该定义为整型
(C)输出语句中格式描述符非法(D)计算圆面积的赋值语句中使用了非法变量
45.有以下程序
#include <stdio.h>
main()
{ char c1='1',c2='2';
c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);
}
当运行时输入:a<回车> 后,以下叙述正确的是( )。

(A)变量c1被赋予字符a,c2被赋予回车符
(B)程序将等待用户输入第2个字符
(C)变量c1被赋予字符a,c2中仍是原有字符2
(D)变量c1被赋予字符a,c2中将无确定值
46.若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。

(A)x=y==5; (B)x=n%2.5; (C)x+n=1; (D)x=5=4+1;
47.程序运行后的输出结果是( )。

#include<stdio.h>
void main ()
{ int a,b;
a=3;
b=20;
a=b;
printf("a=%d,b=%d\n",a,b);
}
(A)a=3,b=3 (B)a=20,b=20
(C)a=20,b=3 (D)a=3,b=20
3.2填空题
1.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,
请写出完整的的输出语句。

2.一个良好的程序,无论多么复杂,都可以由三种基本结构组成,分别是、
和,用这三种基本结构构成的程序称为“结构化程序”。

3.执行以下程序时输入1234567,则输出结果是_ _____。

main()
{ int a=1,b;
scanf("%2d%2d",&a,&b);
printf("%d %d\n",a,b);
}
4.若有程序
main()
{ int i,j;
scanf("i=%d,j=%d";&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入。

5.有以下语句段
int n1=10,n2=20;
printf(“”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。

n1=10
n2=20
6.以下程序段的输出结果是__ ___ 。

int i=9;
printf("%o\n",i);
7.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果
是。

#include <stdio.h>
main()
{ char a,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c %c\n",a,b);
}
8.已知字母A的ASCII码为65。

以下程序运行后的输出结果是。

main()
{ char a, b;
a='A'+'5'-'3'; b=a+'6'-'2'
printf("%d %c\n", a, b);}
3.3编程题
1.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf
输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。

请编程序。

2.输入一个华氏温度,要求输出一个摄氏温度。

公式为:
3.输入三角形的三边长,求三角形面积。

为简单起见,设输入的三边长a、b、c能构成三角形。

从数学知识已知求三角形面积的公式为
其中s=(a+b+c)/2
4.输入一个小写字母,将其转换为大写字母。

第4章选择结构程序设计4.1选择题
1.表达式:10!=9的值是( )。

(A)true (B)非零值(C)0 (D)1
2.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )。

(A) a>=10 or a<=0 (B) a>=0|a<=10
(C) a>=10 &&a<=0 (D) a>=10‖a<=0
3.有以下程序
main()
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是( )。

(A) 2,1 (B) 3,2 (C) 4,3 (D) 2,-1
4.若变量c为char类型,能正确判断出c为小写字母的表达式是()。

(A) 'a'<=c<= 'z' (B) (c>= 'a')||(c<= 'z')
(C) ('a'<=c)and ('z'>=c) (D) (c>= 'a')&&(c<= 'z')
5.下面程序的输出是( )。

main()
{ int a=-1,b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d%\n",k,a,b);}
(A) 0 0 3 (B) 0 1 2 (C) 1 0 3 (D) 1 1 2
6.有如下程序段
int a=14,b=15,x;
char c=’A’;
x=(a&&b)&&(c<’B’);
执行该程序段后,x的值为( )。

(A) true (B) false (C) 0 (D) 1
7.表示数学上的关系x<=y<=z的C语言表达式为( )。

(A) (x<=y)&&(y<=z) (B) (x<=y)AND(y<=z)
(C) (x<=y<=z) (D) (x<=y)&(y<=z)
8.设x,y,z,t均为int型变量,则执行以下语句后,t的值为( )。

x=y=z=1;
t=++x||++y&&++z;
(A) 不定值(B) 2 (C) 1 (D) 0
9.阅读以下程序:
{ int x;
scanf("%d",&x);
if(x--<5) printf("%d",x);
else printf("%d",x++);
}
程序运行后,如果从键盘上输入5,则输出结果是( )。

(A)3 (B) 4 (C) 5 (D) 6
10.以下程序输出结果是( )。

main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m- -);
}
(A) 7 (B) 6 (C) 5 (D) 4
11.语句:printf("%d",(a=2)&&(b= -2);的输出结果是( )。

(A) 无输出(B) 结果不确定(C) -1 (D) 1
12.能正确表示a和b同时为正或同时为负的逻辑表达式是( )。

(A) (a>=0‖b>=0)&&(a<0‖b<0) (B) (a>=0&&b>=0)&&(a<0&&b<0)
(C) (a+b>0)&&(a+b<=0) (D) a*b>0
13.设int x=1, y=1; 表达式(!x||y--)的值是( )。

(A) 0 (B) 1 (C) 2 (D) -1
14.有如下程序,该程序的输出结果是( )。

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\n”,a,b);
}
(A) a=2,b=1 (B) a=1,b=1 (C) a=1,b=0 (D) a=2,b=2
15.有如下程序
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.000000 (B) 0.250000 (C) 0.500000 (D) 1.000000
16.有如下程序
{ int a=2,b=-1,c=2;
if(a)c=2;
else if(b<0) c=0;
else c++;
printf(“%d\n”,c);
}
该程序的输出结果是( )。

(A) 0 (B) 1 (C) 2 (D) 3
17.若执行以下程序时从键盘上输入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
18.以下程序的输出结果是( )。

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
19.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是()。

(A) 6 (B) 0 (C) 2 (D) 1
20.有以下程序
main()
{ int a=15,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\n”,m);}
程序运行后的输出结果是()。

(A) 1 (B) 2 (C) 3 (D) 4
21.有以下程序
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) 编译时有错,无结果
22.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()。

(A)abs(x-y)<10 (B)x-y>-10&& x-y<10
(C) !(x-y)<-10||!(y-x)>10 (D)(x-y)*(x-y)<100
23.有以下程序
main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d++ +1);
else
printf("%d",++d +1);
printf("%d\n",d);
}
程序运行后的输出结果是( )。

(A)2 (B)3 (C)43 (D)44
24.有以下程序
main()
{ int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是( )。

(A)6,1 (B)2,1 (C)6,0 (D)2,0
25.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个
选项是( )。

(A)k%2 (B)k%2==1 (C)(k%2)!=0 (D)!(k%2)==1
26.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( )。

(A)(!a==1)&&(!b==0) (B)(a<b)&& !c||1
(C)a && b (D)a||(b+b)&&(c-a)
27.有以下程序,程序输出为( )。

main()
{int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
(A)0,1,2,0 (B)0,0,0,3 (C)1,1,2,0 (D)编译有错
28.已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为
大写字母的表达式是( )。

(A)isupper(c) (B)’A’<=c<=’Z’
(C)’A’<=c&&c<=’Z’ (D)c<=(‘z’-32)&&(‘a’-32)<=c
4.2填空题
1.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。

当给a、b、c
输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。

请填空。

main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if( )printf("YES\n");/*a、b、c能构成三角形*/else printf("NO\n");/*a、b、c不能构成三角形*/
}
2.表示条件:x>10且x<100或x<0的C语言表达式是。

3.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式。

4.以下程序运行后的输出结果是。

main()
{ int a=1,b=3,c=5;
if (c=a+b) printf("yes\n");
else printf("no\n");
}
5.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是。

6.若从键盘输入58,则以下程序输出的结果是。

main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
7.以下程序运行后的输出结果是。

main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);}
8.若有以下程序
main()
{ int a=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d %d %d\n",a,b,c);
}
执行后输出结果是。

9.有以下程序
main( )
{ int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf(“%d\n”,x);
}
执行后输出结果是
10.以下程序运行后的输出结果是。

main()
{ int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
4.3编程题
1.有一函数:
写一程序,输入x,输出y值。

2.给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印出每一位数字;
3.由键盘输入3个整数x,y,z,输出其中的最大数,请编程序。

4.给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。

90分以上为‘A’,
80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

第5章循环结构程序设计5.1选择题
1.t为int类型,进入下面的循环之前,t的值为0
while( t=l )
{ ……}
则以下叙述中正确的是( )
(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1
(C) 循环控制表达式不合法(D) 以上说法都不对
2.有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是 ( )。

(A) 自然数1~9的累加和(B) 自然数1~10的累加和
(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和
3.以下程序段的输出结果是( )。

int x=3;
do
{ printf("%3d",x-=2);
} while(!(- -x));
(A)1 (B)30 (C)1 -2 (D)死循环
4.以下程序中,while循环的循环次数是( )。

main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++;
}
......
}
(A) 1 (B) 10 (C) 6 (D) 死循环,不能确定次数
5.有以下程序
main()
{ int a=1,b;
for(b=1;b<=10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是( )。

(A)3 (B) 4 (C)5 (D)6
6.有以下程序
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
7.下面程序的输出是( )。

main()
{int y=9;
for(;y>0;y--)
{if(y%3==0)
{printf("%d",--y);continue;}}}
(A)741 (B)852 (C)963 (D)875421
8.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( )。

for (i=5;i;i--)
for(j=0;j<4;j++){...}
(A)20 (B)25 (C)24 (D)30
9.执行语句: for(i=l;i++<4;);后,变量i的值是( )。

(A) 3 (B) 4 (C) 5 (D) 不定
10.假定a和b为int型变量,则执行以下语句后b的值为( )。

a=1; b=10;
do
{ b-=a; a++; }
while (b--<0);
(A) 9 (B) -2 (C) -1 (D) 8
11.设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
12.有以下程序
main()
{ int x,i;
for(i=1;i<=50;i++)
{ x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf("%d,i);
}
}
输出结果是( )。

(A) 28 (B) 27 (C) 42 (D) 41
13.在执行以下程序时,如果从键盘上输入ABCdef<回车>,则输出( )。

#include<stdio.h>
main()
{ char ch;
while((ch=getchar())!='\n')
{ if(ch>='A' && ch<='Z') ch=ch+32;
else if(ch>='a' && ch<='z') ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
(A) ABCdef (B) abcDEF (C) abc (D) DEF
14.执行以下程序段时( )。

x=-1;
do {x=x*x; } while(! x);
(A) 循环体将执行一次(B) 循环体将执行两次
(C) 循环体将执行无限次(D) 系统将提示有语法错误
15.执行以下程序后,输出的结果是( )。

main ()
{ int y=10;
do { y - -;} while(- - y);
printf("%d\n",y - -);}
(A) -1 (B) 1 (C) 8 (D) 0
16.在下列选项中,没有构成死循环的程序段是( )。

(A) int i=100 ; (B) for( ; ;);
while(1)
{ i=i%100+1;
if(i>100)break;
}
(C) int k=1000; (D) int s=36;
do{++k;} while(k>=10000); while(s);--s;
17.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为( )。

#include<stdio.h>
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
18.以下程序的输出结果是( )。

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 1
19.以下程序的输出结果是( )。

main( )
{ int n=4;
while(n--)printf("%d ",--n);
}
(A) 2 0 (B) 3 1 (C) 3 2 1 (D) 2 1 0
20.以下程序的输出结果是( )。

main( )
{ int i;
for(i=1;i<6;i++)
{ if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
}
(A) #*#*# (B) ##### (C) ***** (D) *#*#*
21.以下循环体的执行次数是( )。

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
22.以下叙述正确的是( )。

(A) do-while语句构成的循环不能用其它语句构成的循环来代替。

(B) do-while语句构成的循环只能用break语句退出。

(C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

(D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。

23.有以下程序
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
24.有如下程序
#include <stdio.h>
main()
{int x=23;
do
{ printf("%d",x--);}while(!x);}
该程序的执行结果是( )。

(A) 321 (B) 23 (C) 不输出任何内容(D) 陷入死循环
25.有如下程序
main()
{ int n=9;
while(n>6) {n--;printf(“%d”,n);}
}
该程序段的输出结果是( )。

(A) 987 (B) 876 (C) 8765 (D) 9876
26.有以下程序段
int k=0;
while(k=1)k++;
while 循环执行的次数是()。

(A) 无限次(B) 有语法错,不能执行(C) 一次也不执行(D) 执行1次
27.以下程序的输出结果是()。

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
28.以下程序的输出结果是( )。

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
29.以下程序的输出结果是( )。

#include <stdio.h>
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printf("%d\n",a);
}
(A) 21 (B) 32 (C) 33 (D) 11
30.有以下程序段
int n=0,p;
do{scanf(“%d”,&p);
n++;}while(p!=12345 &&n<3);
此处do—while循环的结束条件是()。

(A) p的值不等于12345并且n的值小于3
(B) p的值等于12345并且n的值大于等于3
(C) p的值不等于12345或者n的值小于3
(D) p的值等于12345或者n的值大于等于3
31.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++) s=s+1;
则与上述程序段功能等价的赋值语句是 ( )。

相关文档
最新文档