C语言程序设计测试2 (附参考答案)
范围: 1~6章
试题
一、单项选择题(1~30题,每题1分;31~40题,每题2分;共50分)
1. 若有以下定义:
char s='/072';
则该语句:
(A) 使s的值包含1个字符 (B) 定义不合法,s的值不确定
(C) 使s的值包含4个字符 (D) 使s的值包含3个字符
2.以下的选项中,非法的C语言转义字符是:
(A)'/t' (B) '/017' (C) '/n' (D)'/0xaa'
3.不能正确表示数学表达式a*b/(c*d)的C语言表达式是:(注:以“*”代替小圆点)
(A) a*b/c*d (B) a/(c*d)*b (C) a*b/c/d (D)a*b/(c*d)
4.下列标识符中,不能作为用户自定义标识符的是:
(A)ab_2 (B) if (C) _123 (D)a_3
5.组成C语言程序的是:
(A) 子程序 (B) 过程 (C) 函数 (D)主程序和子程序
6.以下各标识符中,合法的用户标识符为:
(A)p#a (B)a10 (C) void (D) 10a
7.以下数据中,不正确的数值是:
(A) 0.0 (B) 5L (C) 3e3.5 (D) 986
8.以下数据中,不正确的字符常量是:
(A) "c" (B) '/n' (C) '/041' (D) 'c'
9.以下整数中,不正确的八进制或十六进制数是:
(A) 0x16 (B) 016 (C) -16 (D) 0xaaaa
10.已知各变量的类型定义如下:
int i=8,k,a,b;
unsigned long w=5;
double x=1.42,y=5.2;
则以下选项中,不符合C语言语法的表达式是:
(A) k=i++; (B) (int)x+0.4 (C)y+=x++; (D)a=2*a=3
11.以下选项中,不符合C语言语法的赋值语句是:
(A) a=1,b=2 (B) ++i; (C) a=b=5; (D) y=(a=3,6*5);
12.以下选项中,合法的C语言关键字是:
(A) integer (B) Char (C) int (D) real
13.以下不正确的叙述是:
(A) 在C程序中所用的变量必须先定义后使用
(B) 在C程序中,APH和aph是两个不同的变量
(C) 若a和b类型相同,在执行了赋值语句a=b;后,b中的值将放入a中,
b中的值不变
(D) 当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只
能输入实型值
14.已知字符a的ASCII码为十进制的97,下面程序的输出是:
main()
{
char c1,c2;
c1='a'+'6'-'2';
c2='a'+'6'-'3';
printf("%c,%d/n",c2,c1);
}
(A) 输出无定值 (B) d,100 (C)d,c (D)d,101
15.在C语言中,为了结束由while语句构成的循环,while后一对圆括号中
表达式的值应该为:
(A) 0 (B) 1 (C) true (D) 非0
16.在C语言中,为了结束由do-while语句构成的循环,while后一对
圆括号中表达式的值应该为:
(A) 0 (B) 1 (C) false (D) 非0
17.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式是:
(A) 只能用逻辑表达式 (B) 只能用关系表达式
(C) 只能用逻辑表达式或关系表达式 (D) 可用任意表达式
18.在以下运算符中,优先级别最高的运算符是:
(A) <= (B) / (C) != (D) &&
19.在以下运算符中,优先级别最高的运算符是:
(A) ! (B) = (C) + (D) ||
20.在以下给出的表达式中,与do…while(E)语句中的(E)不等价的表达式是:
(A) (!E==0) (B) (E>0||E<0) (C) (E==0) (D) (E!=0)
21.在C语言中,switch语句后一对圆括号中表达式的类型:
(A) 可以是任何类型 (B) 只能为int类型
(C) 可以是整型或字符型 (D) 只能是整型或实型
22.C语言源程序的扩展名为:
(A) .c (B) .bat (C) .exe (D) .lib
23.下面表达式中不能满足:当x的值为偶数时其值为真,为奇数时其值为假的是:
(A) x%2==0 (B) !x%2!=0 (C) (x/2*2-x)==0 (D) !(x%2)
24.在C语言中,能代表逻辑值“真”的是:
(A) true (B) 大于0的数 (C)非0整数 (D) 非0的数
25.设a、b和c都是int型变量,且a=3,b=4,c=5,则以下表达式中,
值为0的表达式是:
(A) 'a'&&'b' (B) a<=b
(C) a||b+c&&b-c (D) !((a<b)&&!c||1)
26.若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y));
上面程序片段的输出结果是:
(A) 200 (B) 100
(C) 100 200 (D) 输出格式符不够,输出不确定的值
27.若k是int型变量,且有下面的程序片段:
k=-3;
if(k<=0)printf("####");
else printf("&&&&");
上面程序片段的输出结果是:
(A) #### (B) &&&&
(C) ####&&&& (D) 有语法错误,无输出结果
28.在C语言中,要求运算数必须是整型的运算符是:
(A) % (B) / (C) < (D)!
29.下面程序的输出是:
(A) 0 (B) 1 (C) 3 (D) 不确定的值
main()
{
int x=10,y=3;
printf("%d/n",y=x/y);
}
30.执行下面程序中输出语句后,a的值是:
(A) 65 (B) 20 (C) 15 (D) 10
main()
{
int a;
printf("%d/n",(a=3*5,a*4,a+5));
}
31.下面程序的输出是
(A) 0 0 3 (B) 0 1 2
(C) 1 0 3 (D) 1 1 2
main()
{
int a=-1,b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d/n",k,a,b);
}
32.下面的程序片段所表示的数学函数关系是
(A) -1(x<0) (B) 1(x<0)
y= 0(x=0) y=-1(x=0)
1(x=0) 0(x>0)
(C) 0(x<0) (D) -1(x<0)
y= -1(x=0) y= 1(x=0)
1(x>0) 0(x>0)
y=-1;
if(x!=0)
if(x>0) y=1;
else y=0;
33.下面程序的输出是:
(A) 741 (B) 852 (C) 963 (D) 875421
main()
{ int y=9;
for(;y>0;y--)
{
if(y%3==0)
{printf("%d",--y);continue;}
}
}
34.C语言中最简单的数据类型包括:
(A) 整型、实型、逻辑型 (B) 整型、实型、字符型
(C) 整型、实型、逻辑型 (D) 整型、实型、逻辑型、字符型
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.以下程序的输出结果是:
main()
{
int x=10,y=10;
printf("%d %d/n",x--,--y);
}
(A) 10 10 (B) 9 9 (C) 9 10 (D) 10 9
37.以下程序段的输出结果是:
int x=3;
do
{
printf("%3d",x-=2);
}
while(!(--x));
(A) 1 (B) 3 0 (C) 1 -2 (D) 死循环
38.若k为整型,则while循环
k=0;
while(k=0)k=k-1;
(A) 执行1次 (B) 无限循环
(C) 一次也不执行 (D) 执行2次
39.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main()
{
int x;
scanf("%d",&x);
if(x++>5)printf("%d/n",x);
else printf("%d/n",x--);
}
(A) 7和5 (B)6和3 (C)7和4 (D) 6和4
40.能正确表示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、d相同,本题稍作修改)
二、写出程序或程序段的运行结果。(每题4分,共20分)
1. main()
{
int num=0;
while(num<=2)
{
num++;
printf("%d/n",num);
}
}
上面程序的输出结果是_______________。
2. main()
{
float x,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x<10.0) y=1.0/x;
else y=10.0;
printf("%f/n",y);
}
若运行时从键盘键入2.0,则上面程序的输出结果为_______________。
3. main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:
a++;b++;break;
}
printf("a=%d,b=%d/n",a,b);
}
上面程序的输出结果是______________________________。
4. 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("%d/n",a)
}
上面程序的输出结果是______________________________。
5. main()
{
int a=-1;b=4;k;
k=(++a<0)&&!(b--<=0);
printf("%d %d %d /n",k,a,b);
}
上面程序的输出结果是______________________________。
三填空题(1~10空,每空1分;11~20空,每空2分,共30分)
1. 设C语言中,int型数据占2个字节,则long型数据占(1)_____个字节,
short型数据占(2)_______个字节, float型数据占(3)______个字节,
double型数据占(4)_______个字节,char型数据占(5)_______个字节。
2. 设有如下定义:
int a=12; 分别写出下面表达式运算后a的值:
a. a+=a 则a的值为(6)_________________。
b. a+=a-=a*=a 则a的值为(7)_________________。
3. 设有一字符串"ab/ncd/x12",则该字符串的长度为(8)___________。
4. 将下列表达式改写成C语言中合法的表达式:
a.b*b-4ac 改写成(9)_________________。
b.(1/2)(ax-(a+x)/4a) 改写成(10)________________。
5. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩
和最低成绩,
当输入负数时结束输入,请填空。
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while((11)__________)
{
if(x>amax)amax=x;
if((12)__________)amin=x;
(13)__________
} printf("/namax=%f/namin=%f/n",amax,amin);
}
6. 以下程序段要求从键盘输入字符,输入字母为Y时,停止循环。请填空。
ch='/0';
while (14)__________ch=getchar();
7. π的近似值可用下面公式求得:
π×π/6 ≈1/(1×1)+1/(2×2)+1/(3×3)+……+1/(n×n)
若n取值10000,则最后一项的值约为1/10000,认为可达到精度要求。
用下面的程序求π的近似值,请填空。
#include <stdio.h>
#include <math.h>
main()
{
long i;
(15)__________pi;
pi=0.0;
for(i=1;i<=10000;i++)
pi+=(16)__________;
pi=sqrt(6.0*pi); /*sqrt():求平方根函数*/
printf("pi=%f/n",pi);
}
8. 斐波纳契数列中的头两个数是0和1,从第3个数开始,每个数字
等于前两个数的和,即:
0,1,1,2,3,5,8,13,21,……
求斐波纳契数列的前20个数。要求每行输出5个数。请填空。
#include <stdio.h>
main()
{
int f,f1,f2;
printf("Fibonacci series:/n");
f1=0;f2=1;
printf("%6d%6d",f1,f2);
for(i=3;i<=20;(17)__________)
{
f=(18)__________;
printf("%6d",f);
if((19)__________)printf("/n");
f1=f2;f2=(20)__________;
}
printf("/n");
}
附参考答案:
一、单项选择。
01~10 A D A B C B C A C D
11~20 A C D D A A D B A C
21~30 C A B D D A A A C C
31~40 C C B B A D C C A C
二、写出程序或程序段的运行结果。
1. 1 2 3
2. 0.5
3. a=2,b=1
4. 8
5. 0 0 4
三、填空题。
1. (1)~(5) 4 2 4 8 1
2. (6) 24
(7) 0
3. (8) 7
4. (9) b*b-4*a*c
(10) (a*x+(a+x)/(4*a))/2
5. (11) x>=0
(12) x<amin
(13) scanf("%f",&x);
6. (14) (ch!='Y')
7. (15) float或double
(16) 1.0/(i*i)
8. (17) i++
(18) f1+f2
(19) i%5==0
(20) f
C语言程序设计测试及参考答案
这是一份关于C语言程序设计的测试题目,包含选择题、程序输出及填空题,涵盖变量定义、转义字符、表达式运算、逻辑判断、循环控制等多个方面。测试还提供了参考答案,帮助学习者检验自己的C语言知识掌握情况。
1255





