您现在的位置: 中国IT实验室 >> 计算机等级考试 >> 考前密卷 >> 文章正文
05年9月等级考试二级C语言考前密卷2(五)

ChinaITLab收集整理  2005-9-7  保存本文  推荐给好友  QQ上看本站  收藏本站



  (28)有如下程序
  main()
  { int x=3;
  do
  { printf("%d",x--);}
  while(!x);
  }
  该程序的执行结果是________。
  A)321  B)3  C)不输出任何内容  D)陷入死循环
  答案:B
  评析:本题x赋初值为3,当执行printf("%d",x--);时,由于X--的作用是先运算x,再将x的值减l,所以,printf输出的x值为3,等输出后,x的值减1变为2,继续执行,判断条件!x为假,循环只被执行一次。
  
  (29)设有声明语句:char a='\72';则变量a__________
  A)包含1个字符  B)包含2个字符
  C)包含3个字符  D)声明不合法
  答案:A
  评析:转义字符常量'\xx'可以把'\'后面的数字转换为对应的ASCII字符。
  
  (30)有以下程序段:
  main()
  {
  int a=5,*b,**c
  c==&b;b=&a;
  }
  程序在执行了c=&b;b=&a;语句后,表达式ttc的值是__________。
  A)变量a的地址  B)变量b中的地址
  C)变量a中的值  D)变量b的地址
  答案:C
  评析:指针变量是用来存放地址的。&:取地址运算符。+:指针运算符。**c为指针变量*c所指向的存储单元,*c为指针指针变量c所指向的存储单元,而c=&b表示c为变量b的地址,b=&a表示b为变量a的地址。表达式一c的值就是变量a中的值。
  
  (31)有如下函数调用语句
  func(recl,rec2+rec3,(rec4,rec5));
  该函数调用语句中,含有的实参个数是________。
  A)3  B)4  C)5   D)有语法错误
  答案:A
  评析:(rec4,rec5)是逗号表达式,它的值是rec5的值。所以该函数调用语句含有的实参个数是3。
  
  (32)有如下程序
  main()
  {
  char s[115]={.tabc","de","fgh"};
  printf("%e",s[2][6]);
  }
  其输出为__________。
  A)不确定  B)编译错误  C)g    D)输出null字符
  答案:A
  评析:由于s[2116]表示字符串已超出了数组s的表示范围,在c中不会对数组越界进行检查,当数组越界时,会得到一个不确定的值。
  
  (33)有如下程序
  int rune(ira a,int b)
  { remm(a+b);}
  main()
  { int x=2,y=5,z=8,r;
  r=func(func(x,y),z);
  primf("%d\n",r);
  }
  该程序的输出结果是________。
  A)12  B)13  C)14    D)15
  答案:D
  评析:调用函数func(x,y),返回x+y,即7;再调用函数func(7,z),返回7+z,即15。
  
  (34)有如下程序段
  int  *p,a=10,b=l;
  p=&a; a=*p+b;
  执行该程序段后,a的值为_________。
  A)12  B)11  C)10  D)编译出错
  答案:B
  评析:执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11。
  
  (35)有以下程序:
  int*f(int*x,int*y)
  {  if(*x<*y)return x;
  else returny;
  }
  main()
  {
  int a=7,b=8,*p,*q,*r;
  p=&a;q=&b;
  r=f(p,q);
  printf("%d,%d,%d\n",*p,*q,*r);
  }
  程序运行后输出结果是_________。
  A)7,8,8  B)7,8,7  C)8,7,7  D)8,7,8
  答案:B
  评析:f函数的功能是返回地址为x,y的两个数中值较的数的地址,本题输出结果是7,8,7。
  
  (36)有如下程序
  long fib(im n)
  { if(n>2) return(fib(n-1)+fib(n-2));
  else return(2);
  )
  main()
  { printf(%ld\n",fib(3));}
  该程序的输出结果是_________。
  A)2  B)4  C)6  D)8
  答案:B
  评析:函数舶内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-I)+fib(n-21的值为4。
  
  (37)下面程序的输出结果是_________。
  main()
  {
  char str[10],c='a';
  inti=0:
  for(;i<5;i++)
  str[I]=c++;
  printf("%s",str);
  }
  A)abcde  B)a  C)不确定  D)bcdef
  答案:C
  评析:字符串少一个结束标志,所以输出的结果不确定。
  
  (38)在c语言中,函数中变量的隐含存储类别是__________。
  A)auto  B)static  C)extern  D)无存储类别
  答案:A
  评析:函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。A
  评析:函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。
  
  (39)有如下程序
  #define n 2
  #define m N+I
  #define NUM  2*m+l
  main()
  { int i;
  for(i=1;i<=NUM;i++)printtf("%d\n",i);
  }
  该程序中的for循环执行的次数是_________。
  A)5  B)6  C)7  D)8
  答案:B
  评析:在c语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+l+l,即2*2+1+1,值为6。因此,for循环执行的次数为6。
  
  (40)假设在turboc2.0采用small模式编译如下程序
  main()
  {
  char a[4]:{'a','b'};
  char%="abc.t:
  printf("%d,%d",sizeof(a),sizeof(b));
  }
  其输出结果为_________。
  A)4,2  B)4,4  C)4,3  D)2,2
  答案:A
  评析:用small模式编译,指针变量占2个字节。sizeof(array):数组名array代表数组本身,sizeof函数测出的是整个数组的大小。a数组的大小为4,b指针变量的大小为2。
  
  (41)有以下函数
  char *fun(char *p)
  {  retum p; }
  该函数的返回值是_________。
  A)无确切的值        B)形参p中存放的地址值
  C)一个临时存储单元的地址  D)形参p自身的地址值
  答案:B
  评析:p本身就是一个字符型指针变量,返回p也就是返回变量p中存放的地址值。
  
  (42)有如下程序段:
  #include<stdio.h>
  #define Max(a,b)a>b?a:b
  main()
  {
  int a=5,b=6,c=4,d;
  d=c+Max(a,b);
  printf("%d",d);
  }
  其输出结果为__________。
  A)10  B)5  C)6  D)编译错误
  答案:B
  评析:在c语言中,宏定义是直接替换的,所以在c+a>b?a:b这个条件表达式中,c+a>b为真,所以用a的值作为整个表达式的值,而a的值为5,所以整个表达式的值为5。
  
  (43)有如下程序段
  int a=14,b=l 5,x;
  char c='A':
  x=(a&&b) &&(c<'B');
  执行该程序段后,x的值为________。
  A)true  B)false  C)0  D)l
  答案:D
  评析:a&&b的值为true,c<'B'的值也为true,所以(a&&b)&&(c<'B')的值为true。但x是int型变量,所以(披&b)&&(c<'B')的值最后要从bool型转换为int型赋给x。这样x的值应为l。
  
  (44)下述关于C语言文件的操作的结论中,正确的是________。
  A)对文件操作必须先关闭文件
  B)对文件操作必须先打开文件
  C)对文件操作顺序无要求
  D)对文件操作前必须先测文件是否存在,然后再打开文件。
  答案:B
  评析:在c中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,.因此在C中打开文件前不必对其检查文件是否存在,故答案为B。
  
  (45)下列关键字中,不属于C语言变量存储类别的是________。
  A)register  B)auto  C)extem  D)public
  答案:D
  评析:变量的存储类别具体包含四种:自动的(auto),静态的(statiC),寄存器的(register),外部的(extern)。
  
  (46)有如下说明
  im a[10]={l,2,3,4,5,6,7,8,9,10},*p=a;
  则数值为9的表达式是________。
  A)木p+9  B)半(p+8)  C)牛p+=9  D)p+8
  答案:B
  评析:p是指针,p+8是地址值,D是错的;*p是p的目标变量,即a[0],值为1,所以+p+9的值是lO,而*p+=9值是重新给a[O]赋了值(1+9);所以A和C也是错的。p+8是地址值,指向a[8],那么*(p+8)。的值就是a[81的值,即9。
  
  (47)若有以下定义:int t[3][2];能正确表示t数组元素地址的表达式是________。
  A)&t[3][2]  B]t[3]  C]t[1]  D]*t[2]
  答案:C
  评析:A和B两个表达式都已越界了;*t[2]是目标变量,即一个整数,而不是地址值。
  
  (48)下面程序运行后的输出结果是________。
  struct abc
  {
  int a,b,c;
  }
  main()
  {
  struct abc s[2]={{1,2,3},{4,5,6}};
  int t=-s[0].a+s[1].b;
  printf("%d\n",t);
  }
  A)5  B)6  C)7  D)8
  答案:B
  评析:在main函数中定义了一个struct abc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[O].a=l,s[1].b=5,所以本题输出为6。
  
  (49)有如下程序
  main()
  {
  in




 相关文章  热门文章
计算机等级考试三级网络复习资料总录
05年9月等级考试二级C语言考前上机密卷1
05年9月等级考试二级C语言考前上机密卷2
05年9月等级考试二级C语言考前密卷2(十一)
05年9月等级考试二级C语言考前密卷1(十一)
05年9月等级考试二级C语言考前密卷2(十)
05年9月等级考试二级C语言考前密卷1(十)
05年9月等级考试二级C语言考前密卷2(九)
05年9月等级考试二级C语言考前密卷1(九)
05年9月等级考试二级C语言考前密卷2(八)

 文章评论


认证培训
热门专题       more
相关下载
论坛新帖
博 客