C语言典型试题
2013级测控技术与仪器一班复习资料
选择题
1、有以下定义:int a;long b;double x、y;,则以下选项中正确的表达式是()
  A )a%(int)(x/y)    B)a=x!=y    C)(a*y)%b    D)y=x+y=x
答案) B    A中若x、y相等,分母为0,出现除0错误 ;C中double 类型不能进行取余操作;D 中赋值号“=”右侧不能是表达式
2、以下选项中能表示合法常量的是()
  A)整数:1,200  B)实数:1.5E2.0    C)字符:‘\’  D)字符串:“\007”
答案)D      选项A 1200中间不能有逗号,否则编译出错; 选项B 2.0错误,必须为整数;选项C 要表示字符斜杠常量’\’应该在反斜杠前面再加上一个反斜杠
3、以下C语言用户标识符中,不合法的是()
  A)_1            B)AaBc      C)a_b        D)a--b
答案)  D
4表达式a+=a-=a=9值是()
  A)9              B)-9        C)18          D0
答案)D    第一步a=9,然后计算a-a的值,并将此值赋给a,此时a=0,a+a的值赋给a.最终结果为0
5、#include<stdio.h>
  main
  {  int k=011;
    printf(“%d\n”,k++)
  }
程序运行后输出结果()
A)12        B)11        C)10          D)9
答案) D    011为八进制数,对应的十进制为9,k++;先使用k再对其加1,++k;先对k进行加1赋值给k,再使用k
6、以下选项中合法的标识符是()
  A 1_1      B 1--1      C _11          D 1__
答案)C
7、若有定义语句:int x=10 ;,则表达式x-=x+x的值为()
  A -20        B -10      C 0          D 10
答案)B 表达式为x-(x+x)=10-20=-10
8、C语言规定,在一个C程序中,main()函数的位置()
  A 必须在系统调用的库函数之后            B 必须在程序的开头
  C 必须在程序的最后                      D 可以在任意位置
答案) D
9、#include<stdio.h>
  main()
  { int a=1,b=0;
if(!a) b++;
else if (a==0)  if (a) b+=2;
else b+=3;
pringtf (“%d\n,b”);
}
程序运行后的输出结果是()
A 0            B 1            C 2            D 3
答案) A  考查if else 语句,开始a=1,b=0;此时if(!a)不成立,转执行 else if (a==0)
由于a=1,之后的语句都不执行。所以b值不变。注意else if 语句的嵌套,else总是和最近的if成套使用
10、#include<stdio.h>
  void main
  {
  int n=2,k=0;
  while(k++&&n++>2);
  printf (“%d  %d\n ”,k,n);
  }
程序运行后的输出结果是()
A m=6        B m=2          C m=4          D m=5
答案) D 在程序中整型变量n的初始值等于2,整型变量k的初始值等于0,在执行while语句时,由于表达式k++的值等于0,在“与”运算中,全1才是1,有0即为0 ,故“&&”后边的语句不用再判断(即不执行)所以whlie语句中条件不满足,循环语句不会执行,但变量k值加1,输出变量值分别为1、2
11、#include<stdio.h>
main(0
int y=10 ;
while (y--);
printf (“y=%d\n”,y);
}
程序执行后的输出结果是()
A y=0        B y=-1        C y=1        D while构成无限循环
答案) B while循环中每次变量y值减1,先判断y值,再将y减1,执行一次循环后,再判断y值。y值为0时退出循环,这是y值再减1 变为-1
12、#include<stdio.h>
main()
{  int a=1,b=2,c=3,d=0;
  if(a==1&&b++==2)
  if(b!=2 | | c--!=3)
          printf(“%d,%d,%d\n”, a,b,c);
      else    printf(“%d,%d,%d\n”,a,b,c);
      else  printf(“%d,%d,%d\n”,a,b,c);
    }
    程序运行后输出结果是()
  A 1,2,3          B 1,3,2        C 1,3,3        D 3,2,1
答案) C  a,b,c,d 的初始值分别为1,2,3,0.第一个if语句中,a==1成立,但由于运算符是&&,还需判断第二个表达式,b++==2,它同时也成立,之后b=b+1,此时b=3,执行第二个if语句,此时b!=2成立,由于运算符是||,不管后面的表达式的值是不是1,其整个表达式的值总为1因此第二个表达式不执行,最后输出的值是1,3,3
13、设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其他三个不同的是()
A if(a>b)c=a,a=b,b=c;            B if(a>c){c=a,a=b,b=c}
C if(a.>c)c=a;a=b;b=c            D if(a>b){c=a;a=b;b=c}
答案) C (这题错了绝对说明你们基础掌握不牢,好好认真复习,加油!)
14、#include<stdio.h>
main()
{ int x=1,y=2,z=3;
if(x>y)
if(y<z)  printf (“%d”,++z);
else    printf(“%d”,++y);
printf(“%d\n”,x++);
}
程序运行结果是()c语言字符常量有哪些
A 331        B 41        C 2          D 1
答案) D (此题不解释)
15、以下程序运行后的输出结果是()
#include(stdio.h)
main()
{ int m=1,n=0,i=0,j=0;
  switch (m)
  { case 1:
      switch(n)
      {  case 0: i++;break:
          Case 1:j++;break;}
    case 2 :i++;j++;beak;}
  printf(“i=%d,j=%d\n”,i,j);
}
A i=2,j=1        B i=1,j=0        C i=1,j=1      D i=2,j=2
答案)A  本题考查switch语句的嵌套应用。m=1执行外层switch语句的case1,此时进入内层switch语句,因为n=0,执行i++,遇到break退出内层switch语句,回到外层。由于外层语句没有break语句,继续执行case2 后面的i++;j++.最后输出i=2,j=1.
16、若运行以下程序时,输入以下指定数据,则正确的运行结果是()
  #include<stdio.h>
  main()
{  int i;
while( (i=getchar() )!=‘\n’)
{  switch(i)
    { case’0’:
      case’1’:putchar (i+4);
      case’2’:putchar(i+4);break;
      Case’3’:putchar(i+4);
      default:putchar(i+2);break;
  }
}printf(“\n”);
}
输入数据(第一列):2473<回车>
A 6688766        B 66975        C 66778777        D 668966
答案) B (亲,这个举一反三啊!)
17、下面的函数调用语句中func函数的实参个数是()
    func( f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
  A 3            B 4            C 5            D 8
答案) A
18、在C程序中,下列说法正确的是()
  A函数的定义和调用均不可嵌套
  B函数的定义和调用均可以嵌套
  C函数的定义可以嵌套,但函数的调用不可以嵌套
  D函数的定义不可以嵌套,但函数的调用可以嵌套
答案)  D
指针和数组,由于你们考得不深,我就没题了。以上题都是典型题,可以很好的帮你们理解并记忆相关知识点。你们能弄懂了最好,死记是没用的。我不喜欢投机取巧,如果你们抱定了作弊、死记的心,那这题,你可以选择不看。我提几点建议:
1、程序题多上机练习,运行查错。特别注意语句结尾的符号“;”不要丢;
2、大题主要还是考查循环、选择、嵌套结构的,它们的熟练运用一定要掌握,实现程序循环和判断的关键语句要到或者填出;
3、课后习题很重要,大题可能会出现在哪些习题里的。
    最后,希望大家好好复习,考试全过!
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。