No.: Name:
第1讲C语言概述
注:本系列习题中符号表示一串字符中的空格,符号表示下划线,符号表示换行回车,即键盘上Enter键。
一、选择题
1. 一个C程序的执行是从A 。
A) 本程序main函数开始,到main函数结束
B) 本程序文件第一个函数开始,到最后一个函数结束
C) 本程序文件第一个函数开始,到本main函数结束
D) 本程序main函数开始,到本程序文件最后一个函
数结束
2. 以下叙述不正确的是D 。
A) 一个C源程序必须包含一个main函数
B) 一个C源程序可由一个或多个函数组成
C) C程序的基本组成单位是函数
D) 在C程序中,注释说明只能位于一条语句的后面
3. 以下叙述正确的是C 。
A) 在对一个C程序进行编译的过程中,可发现注释中
的拼写错误
B) 在C程序中,main函数必须位于程序的最前面
C) 语言本身没有输入输出语句
D) C程序的每行中只能写一条语句
4. 一个C语言程序是由B 。
A) 一个主程序和若干个子程序组成
B) 函数组成
C) 若干过程组成
D) 若干子程序组成
5. 以下叙述中正确的是C 。
A) C语言比其他语言高级
B) C语言可以不用编译就能被计算机识别执行
C) C语言以接近英语国家的自然语言和数学语言作为
语言的表达形式
D) C语言出现的最晚,具有其他语言的一切优点
6. 下列叙述中正确的是D 。
A) C语言编译时不检查语法
B) C语言的子程序有过程和函数两种
C) C语言的函数可以嵌套定义
D) C语言的函数可以嵌套调用
7. 以下叙述中正确的是A 。
A) 构成C程序的基本单位是函数
B) 可以在一个函数中定义另一个函数
C) main函数必须放在其他函数之前
D) 所有被调用的函数一定要在调用之前进行定义
8. C语言规定,在源程序中,main函数的位置C 。
A) 必须在最开始
B) 必须在系统调用的库函数的后面
C) 可以任意
D) 必须在最后
9. 下列选项中不是结构化程序基本结构的是B 。
A) 顺序结构B) 分支结构
C) 选择结构D) 循环结构
10. 下列四组选项中,均不是C语言关键字的是A 。
A) define IF type B) getc char printf
C) include case scanf D) while go pow
11. 下列四组选项中,均是不合法的标识符的是B 。
A) W P 0 do B) b-a goto int
C) float la0 A D) -123 abc TEMP
12. 下列可用于C语言标识符的一组是B 。
A) void, define, WORD B) a3 b3, 123, Car
C) For, -abc, IF Case D) 2a, DO, sizeof
13. 以面的C程序中,错误的是D 。
A) main() B) main()
{ int x,y,z; { int x,y,z;
x=0;y=x-1; x=0;y=x+1;
z=x+y;} z=x+y;}
C) main() D) main()
{ int x,z; { int x,y,z;
int y; x=0;y=x+1;
x=0;y=x+1; z=x+y,}
z=x+y;}
14. C语言中的标识符只能由字母,数字和下划线三种字符
组成,且第一个字符C 。
A) 必须为字母
B) 必须为下划线
C) 必须为字母或下划线
D) 可以是字母,数字和下划线中任一字符
15. 下面各选项中,均是C语言标识符的选项组是B 。
A) 33 we auto B) 23 me 3ew
C) 43 3e else D) ER -DF 32
二、填空题
1. 国际上C语言常见的三个标准是: 标准C 、ANSI C 和ISO C 。
2. C语言源程序的文件格式为*.c和*.h 。
3. 请描述C程序中main函数的作用: 接受系统调用,开始程序的执行,直至程序结束。
三、程序编写题(请在本页背面作答)
1. 编写一个C程序,输出以下信息
*******************************
Very Good!
*******************************
2. 编写程序,实现求整数10、20和35的平均值(提示:注意给出的是三个整数,求出的平均值不是整数)
1
No.: Name:
第2讲C语言基本数据类型
一、选择题
1. 若x、i、j、k都是int型变量, 则计算下面表达式
后,x的值为C 。
x=(i=4,j=16,k=32)
A) 4 B) 16 C) 32 D) 52
2. 下列四组选项中,均是合法转义字符的是A 。
A) ‘\"’ ‘\\’ ‘\n’ B) ‘\’ ‘\017’ ‘\"’
C) ‘\018’ ‘\f’ ‘xab’ D) ‘\\0’ ‘\101’ ‘xlf’
3. 下面正确的字符常量是D 。
A) "c" B) ‘\\’’ C) ‘’ D) ‘K’
4. 以下叙述不正确的是D 。
A) 在C程序中,逗号运算符的优先级最低
B) 在C程序中,MAX和max是两个不同的变量
C) 若a和b类型相同,在计算了赋值表达式a=b后,
b中的值将放入a中,b中的值不变
D) 从键盘输入数据时,对于整型变量只能输入整型
数值,对于实型变量只能输入实型数值
5. 以下叙述正确的是C 。
A) 在C程序中,每行只能写一条语句
B) 若a是实型变量,C程序中允许赋值a=10,因此
实型变量中允许存放整型数
C) 在C程序中,%是只能用于整数运算的运算符
D) 在C程序中,无论是整数还是实数,都能被准确
无误地表示
6. 已知字母A的ASCII码为十进制数65,且c2为字符型,
则执行语句c2=‘A’+‘6’-‘3’后,c2的值为A 。
A) D B) 68 C) 不确定的值D) C
7. sizeof(float)是B 。
A) 一个双精度型表达式B) 一个整型表达式
C) 一种函数表达式D) 一个不合法的表达式
8. 设C语言中,一个int型数据在内存中占2个字节,
则unsigned int 型数据的取值范围为C 。
A) 0~255 B) 0~32767
C) 0~65535 D) 0~2147483647
9. 设有说明:char w; int x; float y; double z;则
表达式w*x+z-y值的数据类型D 。
A) float B) char C) int D) double
10. 设以下变量均为int类型,则值不等于7的表达式
是C 。
A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)
C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)
11. C语言中的基本数据类型包括B 。
A) 整型、实型、逻辑型B) 整型、实型、字符型
C) 整型、字符型、逻辑型D) 字符型、实型、逻辑型
12. 若变量已正确定义并赋值,以下符合C语言语法的表达
式是B 。
A) a:=b+1 B) a=b=c+2
C) int 18.5%3 D) a=a+7=c+b
13. C语言中运算对象必须是整型的运算符是A 。
A) %= B) / C) = D) <=
14. 若变量a,i已正确定义,且i已正确赋值,合法的语句
是B 。
A) a==1 B) ++i; C) a=a++=5; D) a=int(i);
15. int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)
(x+y)%2/4的值是A 。
A) 2.500000 B) 2.750000
C) 3.500000 D) 0.000000
16. 在16位C编译系统上, 若定义long a;, 则能
给a赋40000的正确语句是D 。
A) a=20000+20000; B) a=4000*10;
C) a=30000+10000; D) a=4000L*10L;
17. 设有int x=11;则表达式(x++*1/3)的值是A 。
A) 3 B) 4 C) 11 D) 12
18. 下列数据中,不合法的C语言实型数据的是C 。
A) 0.123 B) 123e3 C) 2.1e3.5 D) 789.0
19. 若变量a是int类型,并执行了语句:a=‘A’+1.6;,则正
确的叙述是D 。
A) a的值是字符C
B) 不允许字符型和浮点型相加
C) a的值是浮点型
D) a的值是字符‘A’的ASCII值加上1
20. 设变量n为float类型,m为int类型,则以下能实现
将n中的数值保留小数点后两位,第三位进行四舍五
入运算的表达式是B 。
A) n=(n*100+0.5)/100.0 B) m=n*100+0.5,n=m/100.0
C) n=n*100+0.5/100.0 D) n=(n/100+0.5)*100.0
21. 下面四个选项中,均是不正确的8进制数或16进制数的
选项是D 。
A) 016 0x8f 018 B) 0abc 017 0xa
C) 010 -0x11 0x16 D) 0a12 7ff -123
22. 以下选项中,与k=n++完全等价的表达式是A 。
A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1
23. 下面均是合法整型常量的选项是A 。
A) 160 -0xffff 011 B) -0xcdf 01a 0xe
C) -01 986012 0668 D) -0x48a 2e5 0x
24. 假定x和y为double型, 则表达式x=2,y=x+3/2的值
是D 。
A) 3.500000 B) 3 C) 2.000000 D) 3.000000
25. 以下变量x,y,z均为double类型且已正确赋值,不能
正确表示数学式子xyz的C语言表达式是A 。
A) x/y*z B) x*(1/(y*z) C) x/y*1/z D) x/y/z
26. 已知int k,m=1;执行语句k=-m++;后,k的值是A 。
A) -1 B) 0 C) 1 D) 2
27. 已知int m;float k;正确的语句是D 。
A) (int k)%m B) int(k)%m
C) int(k%m) D) (int)k%m
28. 不能进行++和--运算的数据类型为D 。
A) 指针B) 整型C) 长整型D) 常量
2
No.: Name:
29. putchar函数可以向终端输出一个D 。
A) 整型变量表达式B) 实型变量值
C) 字符串D) 字符或字符型变量值
30. printf函数中用到格式符%5s,其中数字5表示输出的字
符串占用5列。字符串长度大于5,则输出按方式B ;
如果字符串长度小于5,则输出按方式C 。
A) 从左起输出该字符串,右补空格
B) 按原字符长从左向右全部输出
C) 右对齐输出该字符串,左补空格
D) 输出错误信息
31. 阅读以下程序,当输入数据的形式为:25,13,10,则
正确的输出结果为D 。
main()
{ int x,y,z;
scanf( "%d%d%d",&x,&y,&z);
printf( "x+y+z=%d\n",x+y+z);}
A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定
32. 根据下面的程序及数据的输入和输出形式,程序中输入
语句的正确形式应该为A 。
main()
{ char ch1,ch2,ch3;
输入语句
printf( "%c%c%c",ch1,ch2,ch3);}
输入形式:A B C
输出形式:A B
A) scanf("%c%c%c",&ch1,&ch2,&ch3);
B) scanf("%c,%c,%c",&ch1,&ch2,&ch3);
C) scanf("%c %c %c",&ch1,&ch2,&ch3);
D) scanf("%c%c",&ch1,&ch2,&ch3);
33. 已知ch是字符型变量,下面不正确的赋值语句是A 。
A) ch=‘a+b’; B) ch=‘\0’;
C) ch=‘7’+‘9’; D) ch=5+9;
34. 若变量已正确说明为float型,要通过语句scanf
("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋
予33.0,下列不正确的输入形式是B 。
A) 102233 B) 10.0,22.0,33.0
C) 10.022.0 33.0 D) 10 2233
35. 下列程序段的输出结果是: C 。
int a=1234; float b=123.456;
double c=12345.54321;
printf("%2d,%2.1f,%2.1f",a,b,c);
A) 无输出B) 12,123.5,12345.5
C) 1234,123.5,12345.5 D) 1234,123.4,1234.5
36. 已有定义int a=-2;和输出语句printf("%8lx",a);以
下正确的叙述是D 。
A) 整型变量的输出形式只有%d一种
B) %x是格式符的一种,可适用于任何一种类型的数据
C) %x是格式符的一种,其变量的值按十六进制输出,
但%8lx是错误的
D) %8lx不是错误的格式符,其中数字8规定了输出字
段的宽度
二、填空题
1. 若有定义:int m=5,y=2;,则计算表达式y+=y-=m*=y后的y值是-16 。
2. 在C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768˜32767 。
3. 若a是int型变量,则计算表达式a=25/3%3后a的值为2 。
4. 若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为10 ,n的值为6 。
5. 若有定义:char c="\0108F\0";则字符串c中包含的字符个数为5 。
6. 定义int a=5,b;,则执行表达式b=++a*--a之后,变量b的值为25 。
7. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=‘a’+‘8’-‘3’的值为102或‘f’ 。
8. 以下程序段的输出结果是i:dec=-4,oct=177774,hex=fffc,unsigned=65532 。
main(){ short i; i=-4; printf( "\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);}
9. 假设变量a和b均为整型,请填空使得以下语句可以不借助任何变量把a、b中的值进行交换。
a+= b ; b=a- b ; a-= b ;
10. 有一输入语句scanf("%d",k); 则不能使float类型变量k得到正确数值的原因是:
(1) k应该加上取地址符号&,成为&k 和(2) float型数据不能用%d格式来输入。
三、程序编写题(请在本页背面作答)
1. 输入圆半径(5)和圆心角(60_C),输出圆的周长、面积和扇形周长、面积。
2. 输入一个华氏温度,要求输出摄氏温度。公式为C _ 5
9 pF _ 32q,输出要有文字说明,取2位小数。
3
No.: Name:
第3讲算法与程序基本结构
一、选择题
1. 如下程序的输出结果是A 。
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
2. 以下程序执行后输出结果是C 。
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
3. 如下程序的输出结果是C 。
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
4. 设int x=1,y=1;表达式(!x||y--)的值是B 。
A) 0 B) 1 C) 2 D) -1
5. 若运行时给变量x输入12,则以下程序的运行结果
是A 。
main()
{ int x,y;
scanf("%d",&x);
y=x>12?x+10:x-12;
printf("%d\n",y);}
A) 0 B) 22 C) 12 D) 10
6. 在C程序中,判逻辑值时,用”非0”表示逻辑值”真”,
又用”0”表示逻辑值”假”。在求逻辑值时,逻辑表达式
值为”真”和”假”分别用A 表示。
A) 1和0 B) 0和1 C) 非0和非0 D) 1和1
7. 以下4个选项中,不能看做一条语句的是D 。
A) ; B) a=5,b=2.5,c=3.6;
C) if(a<5) ; D) if(b!=5) x=2;y=6;
8. 能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式
是D 。
A) a>=10 or a<=0 B) a>=0|a<=10
C) a>=10&&a<=0 D) a>=10||a<=0
9. 如下程序的输出结果是C 。
main()
{ int a=2,b=-1,c=2;
if(ab)&&
(n=c>d)后n的值是B 。
A) 1 B) 2 C) 3 D) 4
14. 下面程序D 。
main()
{ int a=5,b=0,c=0;
if(a=b+c) printf("***\n");
else printf("$$$\n");}
A) 有语法错不能通过编译
B) 可以通过编译但不能通过连接
C) 输出***
D) 输出$$$
15. 当k的值不为0时,在下列选项中能够将k的值赋给变
量m和n的是B 。
A) m=k=n B) (m=k)&&(n=k)
C) (m=k)||(n=k) D) (k=m)&&(n=k)
16. 已知int t=0; while (t=1) {...}则以下叙述正确的
是B 。
A) 循环控制表达式值为0 B) 循环控制表达式值为1
C) 循环控制表达式不合法D) 以上说法都不对
17. 下面程序输出结果是B 。
main()
{ int n=9;
while(n>6) {n--; printf("%d",n);}}
A) 987 B) 876 C) 8765 D) 9876
18. 在下列程序段中,没有构成死循环的是D 。
A) B) C) D)
int i=10; for(;;); int k=10; int s=36;
while(1) do{k++;} while(s)
{i=i%3+1; while(k>10); --s;
if(i>10)
break;}
19. 以下程序段的描述,正确的是C 。
x=-1; do { x=x*x; }while(!x);
A) 是死循环B) 循环执行两次
C) 循环执行一次D) 有语法错误
4
No.: Name:
20. 在下述程序中,判断i>j共执行的次数是D 。
main()
{ int i=0,j=10, k=2, s=0;
{ for (;;)
{ i+=k;
if(i>j) {printf("%d",s); break;}
s+=i;}}
A) 4 B) 7 C) 5 D) 6
21. 下面程序的功能是把316表示为两个加数的和,使两个
加数分别能被13和11整除,请选择填空。满足题意的选
项是B 。
#include main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while( );
j=k/11;
printf("316=13*%d+11*%d",i,j);}
A) k/11 B) k%11 C) k/11==0 D) k%11==0
22. 下面程序的运行结果是B 。
#include main()
{ int a=1,b=10;
do {b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);}
A) a=3,b=11 B) a=2,b=8
C) a=1,b=-1 D) a=4,b=9
23. 执行语句for(i=1;i++<4;);后变量i的值是C 。
A) 3 B) 4 C) 5 D) 不定
24. 关于程序段int k=10; while(k=0) k=k-1;下面描述
中正确的是C 。
A) while循环执行10次B) 循环是无限循环
C) 循环体语句一次也不执行D) 循环体语句执行一次
25. 表达式for(表达式1; ;表达式3)可理解为B 。
A) for(表达式1;0;表达式3)
B) for(表达式1;1;表达式3)
C) for(表达式1;表达式1;表达式3)
D) for(表达式1;表达式3;表达式3)
26. 以下程序的输出结果是B 。
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
27. 以下描述中正确的是C 。
A) 因do-while循环中循环体语句只能是一条可执行语句,
所以循环体内不能使用复合语句
B) do-while循环由do开始,用while结束,在while(表达
式)后面不能写分号
C) 在do-while循环体中,先执行一次循环,再进行判断
D) do-while循环中,根据情况可以省略while
28. 针对下列语句说法正确的是A 。
int i,x;
for(i=0,x=0;i<=9&&x!=876;i++) scanf("%d",x);
A) 最多的执行10次B) 最多执行9次
C) 是无限循环D) 循环体一次也不执行
29. C语言中while 和do-while循环的主要区别是A 。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while更严格
C) do-while允许从外部转到循环体内
D) do-while 的循环体不能是复合语句
30. 执行程序段int k=1; while(++k<4);后k值为A 。
A) 4 B) 5 C) 6 D) 8
二、填空题
1. 执行程序段int a=1234; printf ("%2d\n",a);的输出结果是1234 。
2. 以下程序的输出结果是16 。
main()
{int a=0; a+=(a=8); printf("%d\n",a);}
三、程序编写题(如本页空间不够请在背面作答)
1. 编写程序求解求和公式S _ 1 1
2 1
3 1
4 . . .的前10项。要求画出流程图(ANSI流程图和NS流程图)。
2. 编写程序实现输入整数n,输出如下所示数字组成的菱形(如n=5)。要求画出流程图(ANSI流程图和NS流程图)。
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
展开阅读全文