1.以下选项中不合法的标识符是(  )
A)  &a
B)  FOR
C)  print
D)   00
参考答案:A【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B)选项中的"FOR"可以作为标识符来用。A)选项中含有非法字符&,所以选择A)
2.以下选项中,合法的一组C语言数值常量是(  )
A)  12. 0Xa23 4.5e0
B)  028 .5e3 -0xf
C)  .177 4e1.5 0abc
D)  0x8A 10,000 3.e5
参考答案:A【解析】C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头数字是0xC语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以"e""E"后跟一个整数来表示以10为底数的幂数,且规定字母eE之前必须要有数字,且eE后面的指数必须为整数。B)选项中 028错误,八进制中没有数字8C)选项中4e1.5e后面的指数不是整数。D)选项中3.e5小数点后面缺少数字。
若有定义:double a22int i0k18;,则不符合C语言规定的赋值语句是(  )
A)  i(ak)<(ik)
B)  ia%11
C)  aa++,i++
D)  i=!a
    参考答案:B
【解析】取模运算符"%",二元运算符,具有左结合性,参与运算的量均为整型。选项    B中的a变量是double实型,所以B)不符合规定。
有以下程序:
#include  <stdio.h>
main()
{  int stA10 double B6
  ssizeof(A) tsizeof(B)
  printf("%d%d\n"st)
}
VC6.0平台上编译运行,程序运行后的输出结果是(  )
A)  10,6
B)  4,4
C)  2,4
D)  4,8
    参考答案:D
【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,double型数据占有8个字节。
有以下程序:
#include  <stdio.h>
main()
{   char  abcd
  scanf("%c%c"&a &b)
  cgetchar()    dgetchar()
  printf("%c%c%c%c\n"abcd)
}
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)
12<CR>
34<CR>
则输出结果是(  )
A)  12
34
B)  12
C)  1234
D)  12
3
    参考答案:D
【解析】按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D)选项。
下关于逻辑运算符两侧运算对象的叙述中正确的是(  )
A)  可以是任意合法的表达式
B)  只能是整数0或非0整数
C)  可以是结构体类型的数据
D)  只能是整数01
    参考答案:A
【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)
有以下程序:
#include  <stdio.h>
main()
{  int  a0b0c0d0
  if(a1)  b1c2
  else    d3
  printf("%d%d%d%d\n"abcd)
}
程序输出(  )
A)  1,1,2,0
B)  0,0,0,3
C)  编译有错
D)  0,1,2,0
    参考答案:C
【解析】本题中if(a1)b1;与else d3 之间多了语句c2;所以会出现else语句的位置错误的编译失败提示。
以下程序段中的变量已正确定义:
    for( i0 i<4 i++,i++ )
      for( k1 k<3 k++ ) printf("*" )
程序段的输出结果是(  )
A)  **
B)  ****
C)  *
D)  ********
    参考答案:C
【解析】由于内层循环    for( k1 k<3 k++)后面直接跟了空语句""所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个"*",选择C)
有以下程序段:
#include  <stdio.h>
int  i n
for( i0 i<8 i++ )
{  n rand() % 5
  switch (n)
  { case 1
case 3  printf("%d \n" n)  break
case 2
case 4  printf("%d \n" n)  continue
case 0  exit(0)
  }
  printf("%d \n"n)
}
以下关于程序段执行情况的叙述,正确的是(  )
A)  for循环语句固定执行8
B)  当产生的随机数n4时结束循环操作
C)  当产生的随机数n12时不做任何操作
D)  当产生的随机数n0时结束程序运行
    参考答案:D
【解析】case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。简单的说break是结束整个循环体,而continue是结束单次循环。B)选项中当产生的随机数n4时要执行打印操作。C)选项中当产生的随机数为12时分别执行case3case4后面语句的内容。由于存在break语句所以f
or循环不是固定执行8次,执行次数与产生的随机数n有关系。
有以下程序:
#include  <stdio.h>
int f(int x)
main()
{ int n1m
 mf(f(f(n))) printf("%d\n"m)
}
int f(int x)
{ return x*2 }
程序运行后的输出结果是(  )
A)  8
B)  2
C)  4
D)  1
sizeof 指针    参考答案:A
【解析】第一次调用mf(f(f(1))),第二次为mf(f(2)),第三次为mf(4),即返回值为8
以下叙述中错误的是(  )
A)  可以给指针变量赋一个整数作为地址值
B)  函数可以返回地址值
C)  改变函数形参的值,不会改变对应实参的值
D)  当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
    参考答案:A
【解析】不能将一个整数直接赋给指针变量作为地址,所以A)是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。
设已有定义:float  x;,则以下对指针变量p进行定义且赋初值的语句中正确的是(  )
A)  int  *p(float)x
B)  float  *p&x
C)  float  p&x
D)  float  *p1024
    参考答案:B
【解析】指针是用来存放地址的变量,用 (类型名 *指针变量名)的形式定义。赋值时应将某个变量地址即&x 赋给指针变量,所以选择B)
有以下程序:
#include  <stdio.h>
void fun( int  a[] int  n)
{  int  i t
  for(i0 i<n/2 i++)  { ta[i]  a[i]a[n1i]  a[n1i]t }
}
main()
{  int  k[10]{ 1,2,3,4,5,6,7,8,9,10}i
  fun(k,5)
  for(i2 i<8 i++) printf("%d"k[i])

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