C语言程序设计测试2 (附参考答案)

C语言程序设计测试及参考答案
这是一份关于C语言程序设计的测试题目,包含选择题、程序输出及填空题,涵盖变量定义、转义字符、表达式运算、逻辑判断、循环控制等多个方面。测试还提供了参考答案,帮助学习者检验自己的C语言知识掌握情况。

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
 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值