首页>计算机等级考试>模拟试题>正文
09年计算机等级考试二级笔试样题:二级C笔试考前练习习题(27)

www.zige365.com 2009-6-15 14:11:52 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
 (1)以下程序的输出结果是________。
  #include
  #define SQR(x)x*x
  main()
  { int a,k=3;
  a=++SQR(k+1);
  printf("%d\n",a);
  }
  A)8
  B)9
  C)17
  D)20
  答案:B
  评析:本题宏替换中遇到形参x以实参k+l代替,其它字符不变。sQR(k+1)展开后应为字符串k+l*k+l。

  (2)下面是对宏定义的描述,不正确的是_______。
  A)宏不存在类型问题,宏名无类型,它的参数也无类型
  B)宏替换不占用运行时间
  C)宏替换时先求出实参表达式的值,然后代入形参运算求值
  D)宏替换只不过是字符替代而已
  答案:C
  评析:宏替换实质上就是字符替代,它不可能进行计算,故c错误。带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。

  (3)以下程序(程序左边的数字为附加的行号)________。
  1#include
  2#include
  3main()
  4{char s[]="string";
  5 puts(s);
  6 strcpy(s,"hello");
  7 printf("%3s\n",s);}
  A)没有错
  B)第1行有错
  C)第6行有错
  D)第7行有错
  答案:B
  评析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第l行文件包含命令是错误的。

  (4)若有如下说明,则__________的叙述是正确的。
  struct st
  { int a;
  int b[2l;
  }a;
  A)结构体变量a与结构体成员a同名,定义是非法的
  B)程序只在执行到该定义时才为结构体st分配存储单元
  C)程序运行时为结构体st分配6个字节存储单元
  D)类型名struct st可以通过extern关键字提前引用(即引用在前,说明在后)
  答案:D
  评析:结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的"层次"上,系统完全能够分清。st是一个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。

  (5)若有以下结构体定义,则________是正确的引用或定义。
  struct example
  { int x;
  int y;
  }v1;
  A)example.x=10B)example v2.x=10
  C)struct v2;v2.x=lO
  D)struct example v2={10};
  答案:D
  评析:在定义结构体变量时,不能只用结构体名example或关键字strum进行定义,必需要用结构体类型名struct example定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  (6)下列程序的执行结果是_________。
  #include
  union un
  { int i;
  char c[21;
  };
  void main()
  { union un x;
  x.c[0]=10:
  x.c[1]=1:
  printf("\n%d",x.i);
  }
  A)266
  B)ll
  C)265
  D)138
  答案:A
  评析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[O]位于低字节,c[1]位于高字节,所以x.i的值为266。

  (7)已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_______。
  struct link
  Data next
  {  char data;
  }node;
  A)struct link next
  B)link*next
  C)struct next link
  D)struct link*next
  答案:D
  评析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为struct link*next。

  (8)已知小写字母a的ASCII码为97,大写字母A的ASCII.码为65,以下程序的结果是__________。
  main()
  { unsigned int a=32,b=66;
  printf("%c\n",at
  B);
  }
  A)66
  B)98
  C)b
  D)B
  答案:C
  评析:位运算符"l"的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为l。最后以字符型输出, 98对应的字符"b"。

本新闻共2页,当前在第1页  1  2  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
09年计算机等级考试二级笔试样题:二级C笔试考前练习习
09年计算机等级考试二级笔试样题:二级C笔试考前练习习
09年计算机等级考试二级笔试样题:二级C笔试考前练习习
2009年计算机等级考试二级笔试样题:二级C语言程序设计
2009年计算机等级考试二级笔试样题:二级C语言程序设计