《C程序设计》1~6章测试题
请在下课前把答案以邮件形式(不要把答案放到附件里)发到下面的两个邮箱中:
c-program@hotmail.com, xteacher.he@gmail.com
一、选择题(每题
1
分,共
40
分)
1.
以下说法中正确的是
【
】
A) C
语言程序总是从第一个的函数开始执行
B)
在
C
语言程序中
,
要调用的函数必须在
main()
函数中定义
C) C
语言程序总是从
main()
函数开始执行
D) C
语言程序中的
main()
函数必须放在程序的开始部分
2. 下列关于C语言用户标识符的叙述中正确的是
【
】
A) 用户标识符中可以出现在下划线和中划线(减号)
B) 用户标识符中不可以出现中划线,但可以出现下划线
C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D) 用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头
3. 以下有4组用户标识符,其中合法的一组是
【
】
A) For B) 4d C) f2_G3 D) WORD
-sub DO IF void
Case Size abc define
4. 下面四个选项中,均是不正确的八进制数或十六进制数的选项是
【
】
A) 016 0x8f 018 B) 0abc 017 0xa
C) 010 -0x11 0x16 D) 0a12 7ff -123
5. 以下正确的叙述是
【
】
A) 在C程序中,每行中只能写一条语句
B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C) 在C程序中,无论是整数还是实数,都能被准确无误地表示
D) 在C程序中,%是只能用于整数运算的运算符
6. 下面四个选项中,均是合法的浮点数的选项是
【
】
A) +1e+1 5e-9.4 03e2 B) -.60 12e-4 -8e5
C) 123e 1.2e-.4 +2e-1 D) -e3 .8e-4 5.e-0
7
、已知各变量的类型说明如下:
int k, a, b, w=5; float x=1.42;
则以下不符合C语言语法的表达式是
【
】
A) x%(-3) B) w+=-2
C) k=(a=2, b=3, a+b) D) a+=a-=(b=4)*(a=3)
8. 以下不正确的叙述是
【
】
A) 在C程序中,逗号运算符的优先级最低
B) 在C程序中,APH和aph是两个不同的变量
C) 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
9. sizeof(double)
是 【
】
。
A
)一种函数调用
B
)一个双精度型表达式
C
)一个整型表达式
D
)一个不合法的表达式
10.
设有语句
char a='\72';
则变量
a
【
】 。
A
)包含
1
个字符
B
)包含
2
个字符
C
)包含
3
个字符
D
)说明不合法
11.
执行下面程序中的输出语句,
a
的值是【
】
A) 65 B) 20 C) 15 D) 10
main()
{ int a;
printf("%d\n",(a=3*5,a*4,a+5));}
12.
设有语句
int a=3;
则执行了语句
a+=a-=a*a;
后,变量
a
的值是 【
】
A
)
3 B
)
0 C
)
9 D
)
-12
13. 下列关于单目运算符++、--的叙述中正确的是
【
】
A) 它们的运算对象可以是任何变量和常量
B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D) 它们的运算对象可以是char型变量、int型变量和float型变量
14.
在
C
语言中,如果下面的变量都是
int
类型,则输出的结果是
【
】
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
15.
以下程序的输出结果是
【
】
# include <stdio.h>
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
A) 11,10 B) 9,10 C) 010,9 D) 10,9
16.
已知在
ASCII
代码中,字母
A
的序号为
65
,以下程序的输出的结果是
【
】
。
# include <stdio.h>
main()
{ char c1='A', c2='Y';
printf("%d,%d\n",c1,c2); }
A)
因输出格式不合法,输出错误信息
B
)
65
,
90 C
)
A
,
Y D
)
65
,
89
17.
以下程序的输出结果是 【
】
。
# include <stdio.h>
# include <math..h>
main()
{ int a=1,b=4,c=2;
float x=10.5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf("%f\n",z); }
A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
18.
以下程序的输出结果是 【
】
。
# 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
19.
以下程序的输出结果是 【
】
。
# include<stdio.h>
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
A) 6,1 B) 2,1 C) 6,0 D) 2,0
20.
已知字母
A
的
ASCII
码为十进制的
65
,下面程序的输出是【
】
A) 67,D B) B,C C) C,D D)
不确定的值
main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);}
21.printf 函数中用格式符 %5s 规定字符串的输出格式。如果字符串长度大于5,则输出按方式
【
】
;如果字符串长度小于5,则输出按方式
【
】
A) 从左起输出该字符串,右补空 B) 按原字符长从左向右全部输出
C) 右对齐输出该字符串,左补空 D) 输出错误信息
22.对如下定义和输入语句,若使a1, a2, c1, c2 的值分别为10, 20, A, B,正确的数据输入方式是
【
】
。
(注:Δ表示空格,<CR>表示回车,下同)。
int a1, a2; char c1, c2;
scanf (" %d%c%d%c ", &a1, &c1, &a2, &c2);
A) 10A
Δ
20B<CR>B) 10
Δ
A
Δ
20
Δ
B<CR> C) 10A20B D) 10A20
Δ
B
23.
由给出的数据输入和输出形式,程序中输入输出语句的正确内容是
【
】
main( )
{ int x; float y;
printf (" enter x, y: ")
输入语句
输出语句 }
输入形式 enter x, y: 2 3.4
输出形式 x+y=5.40
A) scanf (" %d, %f ", &x, &y); B) scanf (" %d%f ", &x, &y);
printf (" \nx+y=%4.2f ", x+y); printf (" \nx+y=%4.2f ", x+y);
C) scanf (" %d%f ", &x, &y); D) scanf (" %d%3.1f ", &x, &y);
printf (" \nx+y=%6.1f ", x+y); printf (" \nx+y=%4.2f ", x+y);
24. 以下关于运算符优先顺序的描述中正确的是
【
】
A) 关系运算符<算术运算符<赋值运算符<逻辑运算符
B) 逻辑运算符<关系运算符<算术运算符<赋值运算符
C) 赋值运算符<逻辑运算符<关系运算符<算术运算符
D) 算术运算符<关系运算符<赋值运算符<逻辑运算符
25.
语句
while(!E);
中的条件
!E
等价于 【
】
。
A
)
E = = 0 B
)
E
!
=1 C
)
E
!
=0 D
)
~E
26.
与
y=(x>0?1:x<0?-1:0);
的功能相同的
if
语句是
【
】
A) if (x>0) y=1; B) if(x)
else if(x<0) y=-1; if(x>0) y=1;
else y=0; else if(x<0) y=-1;
C) y=-1 D) y=0;
if(x) if(x>=0)
if(x>0)y=1; if(x>0)y=1;
else if(x==0) y=0; else y=-1;
else y=-1;
27.对下面三条语句(其中s1和s2为内嵌语句),正确的论断是
【
】
(1)if (a) s1;else s2; (2) if (a= =0) s2;else s1;
(3)if (a!=0) s1;else s2;
A)
三者相互等价
B)
(1)
和
(2)
等价
,
但与
(3)
不等价
C)
三者互不等价
D)
(1)
和
(3)
等价
,
但与
(2)
不等价
28.若x,y,z的初值均为1,则执行表达式w =++x || ++ y && ++ z后,x,y,z的值分别为。
A. x=1, y=1, z=2 B. x=2, y=2, z=2
C. x=1, y=2, z=1 D. x=2, y=1, z=1
29
以下的
for
循环
【
】
。
for(x=0,y=0; (y!=123)&&(x<4); x + + );
A)
是无限循环
B
)循环次数不定
C
)执行
4
次
D
)执行
3
次
30. C
语言中 【
】
。
A
)
不能使用
do-while
语句构成的循环
B
)
do-while
语句构成的循环必须用
break
语句才能退出
C
)
do-while
语句构成的循环,当
while
语句中的表达式值为非零时结束循环
D
)
do-while
语句构成的循环,当
while
语句中的表达式值为零时结束循环
31.
以下程序的输出结果是 【
】
。
# include <stdio.h>
main()
{ int i;
for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf("#");}
printf("$\n"); }
A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
32.
下面的程序【
】
A)
输出的是
1 B)
输出的是
1
和
-2 C
)
输出的是
3
和
0 D)
是死循环
main()
{ int x=3;
do {
printf("%d\n",x-=2);
}while(!(--x));}
33.
若执行下面的程序时从键盘上输入
5
,则输出是【
】
A) 7 B) 6 C) 5 D) 4
main()
{ int x;
scanf("%d",&x);
if(x++>5) printf("%d\n",x);
else printf("%d\n",x--);}
34.
下面程序的输出是【
】
A) -1 B) 0 C) 1 D)
不确定的值
main()
{ int x=100, a=10, b=20, ok1=5, ok2=0;
if(a<b)
if(b!=15)
if(! ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("%d\n",x);}
35.
为表示关系
x
≥
y
≥
z,
应使用
C
语言表达式【
】
A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)
C) (x>=y>=z) D) (x>=y)&(y>=z)
36.
假定有以下变量定义
:
int k=7 ,x=12;
则能使值为
3
的表达式是
【
】
A ) x%=(K%=5) B) x%=(k-k%5)
C ) x%=k-k%5 D) (x%=k)-(k%=5)
37.
以下叙述中正确的是
【
】
A )
输入项可以是一个实型常量
,
如
: scanf("%f",3.5);
B)
只有格式控制
,
没有输入项
,
也能正确输入数据到内存
,
例如
: scanf("a=%d ,b=%d")'
C)
当输入一个实型数据时
,
格式控制部分可以规定小数点后的位数
,
例如
: scanf("%4.2f",&d);
D)
当输入数据时
,
必须指明变量地址
,
例如
: scanf("%f",&f);
38.
在下列选项中
,
没有构成死循环的程序是
【
】
A)
int i =100;
while(1)
{ i=i%100+1;
if (i>100)break;
}
B)
for (;;);
C)
int k=1000;
do {--k;} while(k>=1000);
D)
int s=36;
while (s);--s;
39.
执行语句
: for (i=1;i++<4;);
后
,
变量
i
的值是
【
C
】
A) 3 B) 4 C) 5 D)
不定
40.
能正确表示
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
二、填空题(每空
2
分,共
16
分)
1.
一个
C
源程序中至少应包括一个
_____________
2.
结构化程序设计所规定的三种基本控制结构是
__________________________
3.
以下程序的功能是
:
人键盘上输入若干个学生的成绩
,
统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。
main()
{ int x, max, min;
scanf("%d",&x);
max=x; min=x;
while(
_____________
)
{ if(x>max) max=x;
if(
_____________
) min=x;
scanf("%d",&x); }
printf("\nmax=%f\nmin=%f\n",max, min); }
4.
设
i,j,k
均为
int
型变量
,
则执行完下面的
for
循环后
,k
的值为
_____________
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
5.
下面程序的功能是
:
计算
1
到
10
之间奇数之和及偶数之和
,
请填空。
#include <stdio.h>
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i<=10;i+=2)
{ a+=i;
_____________
;
c+=b;
}
printf("
偶数之和
=%d\n",a);
printf("
奇数之和
=%d\n",c-11);
}
6.
下面程序的功能是
:
输出
100
以内能被
3
整除且个位数为
6
的所有整数
,
请填空。
#include <stdio.h>
main()
{ int i, j;
for(i=0;
_____________
; i++)
{ j=i*10+6;
if(
_____________
) continue;
printf("%d",j);
}
}
三、阅读下面的程序,写出每个程序的运行结果(第
1
题
4
分,第
2,3
题各
5
分,共
14
分)
1.
main()
{ int i=10, j=0;
do
{ j=j+i; i--;}
while(i>2);
printf("%d\n",j);
}
2.
有以下程序:
# include<stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf("\n"); }
输入以下数据,
<CR>
代表一个回车符。
2743<CR>
写出程序的输出结果。
3.
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; }
printf("a=%d\n",a) ;
}
四、程序设计题(每题
15
分,共
30
分)
1.
判断
100-200
之间有多少个素数,并输出所有素数。
2.
求分数序列:
1/2,2/3,3/5,5/8,8/13/13/21/
……的前
20
项之和。