C语言选择题(含答案)
选择题
 1.    以下叙述正确的是_____。
A) 在C程序中,main函数必须位于程序的最前面。
B) C语言本身没有输入输出语句。
C) C程序的每行只能写一条语句。
D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
 
2.    下面四个选项中,均是不合法的用户标识符的选项是。
    A)  A            B) float      C) b-a      D) _123
        P_0            1a0            goto        temp
do              _A            int          INT
 3、 下列四个选项中都是合法的转义字符的     
A)    \’’        \\      \n            B)    \      \017      \”’
C)    \018      \f    xab            D)    \\0    \101      x1f
4、 设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是:
A)7    B)8  C)6  D)2
 5、 若有代数式,则不正确的C语言表达式是:
    A) a/b/c*e*3      B) 3*a*e/b/c
    C) 3*a*e/b*c      D) a*e/c/b*3
6、 若希望当A的值为奇数时,表达式的值为, A的值为偶数时,表达式的值为。则以下不能满足要求的表达式是_________。
A) A%2==1              B) !(A%2==0)
C) !(A%2)            D) A%2
7、 以下程序的运行结果是 :
    main()   
{
int m=6;
          if(m++> 6) printf(" %d\n",m);
          e1se    printf("%d\n",--m );
      }
    A)4    B)5  C) 7    D) 6
 8、 当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 :
        if(a<b)
      if(c<d) x=1;
      else
          if(a<c)
            if(b<d) x=2;
            else x= 3;
          else x=6;
      else x=7;
      A)1          B)2      C)3      D)6
  9、 阅读以下程序,当输入数据的形式为25,13,10<CR>正确的输出结果为 
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+y+z=35          D)不确定值
10、          已知各变量的类型说明如下
  int  k,a,b;
  unsigned  long  w= 5;
  double    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)
11、          设有:int a=1, b=2, c=3, d=4, m=2, n=2;
执行 (m=a>b)&&(n=c>d)后n的值为_______。
A) 1        B) 2        C) 0        D) 4
 12、          判断char型变量ch是否为大写字母的正确表达式是________。
          A)' A' <=ch<='Z'                B)(ch> = 'A')&(ch<='Z' )
          C)(ch>=' A' )&&(ch<='Z')          D)(' A' < = ch)AND('Z'> = ch)
 13、          以下描述中正确的是_________:
    A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
    B) 在while循环体中,循环体至少要执行一次。
    C)在do一while循环体中,循环体至少无条件的执行一次
    D) do一while循环由do开始,用while结束,在while(表达式)后面不能写分号
14、          已知int x=10,y=20,z=30; 以下语句执行后x, y, z的值是_______。
if (x>y)
z=x;  x=y;  y=z;
 
A) x=10, y=20, z=30            B) x=20, y=30, z=20
C) x=20, y=30, z=10            D) x=20, y=30, z=30
 
15、          若i为整型变量,则以下循环执行次数是:
    for  ( i=2; i!=0; )  printf("%d",i- - ); 
    A)无限次    B) 0次    C) 1 次      D)  2次
 16、          下面程序段:   
for  (t=1; t<=100;t++)
    { scanf("%d",&x); 
      if(x<0)  continue; 
printf("%3d",t);
  A) 当x<0时整个循环结束
  B) x>=0时什么也不输出
  C) printf函数永远也不执行
  D)最多允许输出100个非负整数
17、          若有说明:int a[3][4];则对a数组元素的正确引用是______。
A) a[2][4]        B) a[1,3]      C) a[1+1][0]        D) a(2)(1)
 
18、          定义如下变量和数组: 
    int k; 
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    则下面语句的输出结果是:
    for(k=0;k<3;k++)  printf  ("%d",a[2-k][ k]);
      A) 3  6  9          B) 7  5  3    C) 9  6  3        D)  3  5  7
 19、          判断字符串a和b是否相等,应当使用_______.
A)  if  (a= =b)                B)  if  (a=b)
C)  if  (strcpy (a,b) )        D)  if  (strcmp (a,b) )
 20、          对两个数组a和b进行如下初始化       
  char  a[ ]="ABCDEF";
  char  b[ ]={’A’,’B’,’C’,’D’,’E’,’F’};
  则以下叙述正确的是 __.   
  A)  a与b数组完全相同      B)  a与b长度相同
  C)  a和b中都存放字符串    D)  a数组比b数组长度长
 21、          有两个字符数组a和b,则以下正确的输入语句是_________:
A) gets(a,b);                B) scanf(%s%s,a,b);
C) scanf(%s%s,&a,&b);  D) gets(a),gets(b);
 22、          下面程序段的运行结果是______
    char  str[ ]="ABC" , *p=str ;
printf ("%d\n",*(p+2));
 
    (A) 0    (B) 字符'C'的ASCII码    (C) 字符'C'的地址  (D) 字符'C'
 
23、          下面描述正确的是_______。
A)  两个字符串所包含的字符个数相同时,才能比较字符串
B)  字符个数多的字符串比字符个数少的字符串大
C)  字符串STOP (注:有一个空格)与STOP相等
D)  字符串That小于字符串The
 24、          下面判断正确的是_______。
A)char *a= china;      等价于 char *a;  *a= china;
B)char str[10]={china};等价于 char str[10];  str[ ]={china};
C)char *s= c++字符串是什么“china;      等价于 char *s;  s= china;
D)char c[4]= abc, d[4]= abc;  等价于 char c[4]=d[4]= abc;
25、          若用数组名作为函数调用的实参,传递给形参的是_______。
A)  数组的首地址
B)  数组第一个元素的值
C)  数组中全部元素的值
D)  数组元素的个数
 26、          下面函数调用语句含有实参的个数为_______。
  y = func  ( a, b, max(d ,e));
A)5          B) 2            C) 3            D) 4
27、          C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。
A)float型
B)int 型
C)long 型
D)double 型
28、          在C语言中,形参的缺省存储类是
A) auto        B) register    C) static      D) extern
 29、          以下正确的函数定义形式是__________:
A)  double  fun(int x,int y)
B)  double  fun(int x;int y)
C)  double  fun(int x,int y);
D)  double  fun(int x,y);
30、          在宏定义 #define PI  3.14159中,用宏名PI代替一个_______。
A) 常量      B)单精度数        C)双精度数      D)字符串
31、          #define  ADD(x)  x+x
main( )
{
  int m=1,n=2,k=3;
  int sum=ADD(m+n)*k;
  printf(sum=%d,sum);
}
上面的程序运行结果是_________:
A) sum=9    B) sum=10    C) sum=12    D) sum=18
 32、          以下有关宏替换和函数的调用叙述不正确的是________:
A)  宏替换和函数的调用均占用运行时间。
B)  宏名无类型,函数有类型
C)  宏替换只是字符替换,不分配内存,但函数调用要分配内存
D)  再调用宏时程序的长度要加长,而函数调用不变
33、          以下程序的输出的结果是
main( )
{ int i;
for (i=1;i<=2;i++)  incre();
}
incre()
{ static  int  x=1;
x*=x+1;
printf("%d",x);
}
A) 3  3            B) 2  2        C) 2  6        D) 2  5
34、          有如下定义
struct person{char name[9]; int age;};
strict person class[10]={"Johu", 17,
"Paul", 19,
"Mary", 18,
"Adam, 16,};
根据上述定义,能输出字母M的语句是
A) prinft("%c\n",class[3].mane);
B) pfintf("%c\n",class[3].name[1]);
C) prinft("%c\n",class[2].name[1])
D) printf("%c\n",class[2].name[0]);
35、          以下程序的输出结果是哪一项?
#include <stdio.h>
main()
{
  int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;
  for(i=0;i<4;i++)
      p[i]=&a[i*3];
  printf("%d\n",p[3][2]);
}
    A. 输出项不合法    B. 6
    C. 8              D. 12
36、          以下程序的输出结果是
union myun
{ struct
{
int x, y, z;
} u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=1;
printf("%d\n",a.u.y);
}
A) 4    B) 5    C) 6    D) 1
37、          以下关于结构体与共用体的说法,其中正确的是
A) 共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。
B) 结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。
C) 共用体每个成员分别占有自己的内存单元。
D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。
 38、          以下程序的输出结果是
long fun( int n)
{
long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{
printf("%ld\n", fun(5));
}
A) 1        B) 2      C) 3        D) 4
39、          下列程序段的输出结果为
int arr[]={6,7,8,9,10};
int * ptr;
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
A) 8,10        B) 6,8        C) 7,9        D) 6,10
 
40、          设有如下定义:
int (*ptr)( );
则以下叙述中正确的是
A) ptr是指向一维组数的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是指向函数的指针变量,该函数返回一个int型数据
D) ptr是一个函数名,该函数的返回值是指向int型数据的指针
 
  1-5:BCABC    6-10:CDBDA
 11-15:BCCDD  16-20:BCBDD
 21-25:BBDBA  26-30:CBAAD
 31-35:BACDD  36-40:DABD

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