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

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



  (28)有以下程序
  Void f(int *x, int *y)
  {
  int t;
  t= *x; *x=*y;'*y=t;
  )
  main( )
  {
  int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
  p=a;q=&a[7];
  while(p<q)
  {f(p,q); p++; q--;}  。
  for(i=0;i<3;i++) printf("%d",a[1][i]);
  }
  程序运行后的输出结果是________。
  A)8,2,3,4,5,6,7,1,  B)5,6,7,8,1,2,3,4.
  C)1,2,3,4,5,6,7,8,  D)8,7,6,5,4,3,2,l,
  答案:D
  评析;本程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。
  
  (29)有以下程序
  main()
  {
  im a[3][3],*p,i;
  p=&a[0][o];
  for(i=0;j<9;i++) p[i]=I;
  for(i=0;j<3;i++)printf("%d",a[1][i]);
  )
  程序运行后的输出结果是________。
  A)012  B)123  C)234  D)345
  答案:D
  评析:本题赋值后,a的数组元素的值分别为a[01[0]=0,a[0][1]=1,a[0][2]=2,a[1][0]=3,a[1][1]=4,a[1][2]=5,a[2][0]=6,a[2][1]=7,a[2][2]=8,故本题输出的值为345。
  
  (30)以下叙述中错误的是________。
  A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
  B)数组名代表的是数组所占存储区的首地址,其值不可改变
  C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越
  界"的出错信息
  D)可以通过赋初值的方式确定数组元素的个数
  答案:C
  评析:在c语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出"下标越界"的错误提示。
  
  (31)有以下程序
  #define N20
  fun(int a[],int n,int m)
  {  int i,j;
  for(i=m;i>=n;i--)a[i+1]=a[i];
  }
  main()
  {
  int i,a[N]={1,2,3,4,5,6,7,8,9,10};
  fun(a,2,9);
  for(i=O;i<5;i++) printf("%d",a[i]);
  }
  程序运行后的输出结果是________。
  A)10234  B)12344  C)12334  D)12234
  答案:C
  评析:本题函数fun的作用是将指定的数组元素(从下标n到下标m)向后移一位。由函数调用"fun(a,2,9);"可知,函数fun用于将a[2]到a[9]的各元素依次向后移一位,移完后,a数组中各元素的值分别为1,2,3,3,4,5,6,7,8,9,10,故输出的前5个数组元素为12334。
  
  (32)有以下程序
  main()
  {
  int a[3][2]={0},(*ptr)[2],i,j;
  for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++;}
  for(i=0;i<3;i++)
  { for(i=0;j<2;j++) printf("%2d",a[i][j]);
  printf("\n");
  }
  }
  若运行时输入:1 2 3<回车>,则输出结果是________。
  A)产生错误信息
  B)l 0  C)l 2  D)l 0
  2 O   3 0   2 0
  0 0   0 O   3 0
  答案:B
  评析:二维数组a,通过a[3][2]={0}将数组中的各个元素初始化为0,指针变量ptr,指向包含2个元素的一维数组。a[0][0]:l,a[1][0]=2,故本题的输出选B。
  
  (33)有以下程序
  prt(int *m, int n)
  { int i;
  for(i=O;i<n;i++) m[i]++;
  )
  main()
  {
  int a[]={ 1,2,3,4,5 },i;
  prt(a,5);
  for(i=O;i<5;i++)
  printf("%d,",a[i]);
  程序运行后的输出结果是________。
  A)l,2,3,4,5,  B)2,3,4,5,6,  C)3,4,5,6,7,  D)2,3,4,5,1,
  答案:B
  评析:用数组名作函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。
  
  (34)有以下程序
  main()
  { int a[]={1,2,3,4,5,6,7,8,9,0},*p;
  for(p=a;p<a+10;p++)printf("%d,",*p);
  }
  程序运行后的输出结果是________。
  A)l,2,3,4,5,6,7,8,9,0,  B)2,3,4,5,6,7,8,9,10,1,
  C)0,1,2,3,4,5,6,7,8,9,  D)l,l,1,l,l,l,l,l,l,l,
  答案:A
  评析:c语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出,即为l,2,3,4,5,6,7,8,9,0,。
  
  (35)有以下程序
  #define P 3
  void F(int x){return(P*x*x);}
  main()
  {printf("%d\n",F(3+5));}
  程序运行后的输出结果是________。
  A)192  B)29  C)25  D)编译出错
  答案:D
  评析:return语句用于从被调函数带回一个函数值。void关键字表示"无类型",即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。
  
  (36)有以下程序
  main()
  {int c=35;printf("%d\n",c&C);}
  程序运行后的输出结果是________。
  A)0  B)70  C)35  D)1
  答案:C
  评析:按位"与"时,1&1=1,其他都等O。因为本题中相与的两个值相等,即对应位上的二进制值相等,所以"与"的结果也即为其值本身。
  
  (37)以下叙述中正确的是________。
  A)预处理命令行必须位于源文件的开头
  B)在源文件的一行上可以有多条预处理命令
  C)宏名必须用大写字母表示
  D)宏替换不占用程序的运行时间
  答案:D
  评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。
  
  (38)若有以下说明和定义
  union dt
  {int a;har b;ouble c;}data;
  以下叙述中错误的是________。
  A)data的每个成员起始地址都相同
  B)变量data所占的内存字节数与成员c所占字节数相等
  C)程序段:data.a=5;pintf("%f\n",data.C);输出结果为5.000000
  D)data可以作为函数的实参
  答案:C
  评析:union是表示共用体的关键字,成员a,b,c共占用同一个内存空间,data的每个成员起始地址都相同;共用体变量所占的内存长度等于最长的成员的长度,故变量'data所占的内存字节数与成员c所占字节数相等;执行"data.a=5;printf("%f\n",data.C);"printf函数只是将内存中的数据以不同的类型输出,而不能将内存中的整型数据自动转换为等值的浮点数,故C是错误的。
  
  (39)以下语句或语句组中,能正确进行字符串赋值的是________。
  A)char*sp;*sp="right!";  B)char s[lO];s="right! ";
  C)char s[10];*s="right! ";  D)char*sp="right! ";
  答案:D
  评析:选项A定义了字符型的指针变量sp,则*sp存储的是第一个字符,而给它赋的是字符串,故错;
  选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误;
  选项c定义了一个字符型的数组s[10],再通过+s给数组元素赋初值,这时是与选项A相同的错误。
  
  (40)设有如下说明
  typedef struct ST
  {long a; int b; char c[2];}NEW;
  则下面叙述中正确的是________。
  A)以上的说明形式非法  B)ST是一个结构体类型
  C)NEW是一个结构体类型  D)NEW是一个结构体变量
  答案:C
  评析:typedef关键字用于声明一个新的类型名代替已有的类型名。
  本题中如果没有用typedef进行定义的话,则struct ST为结构体类型,现在用typedef定义后,相当于用NEW代表了struct ST这一结构体类型,故NEW为结构体类型。
  
  (41)有以下程序
  main()
  {  int a=1,b;
  for(b=l;b<10;b++)
  { if(a>=8)break;
  if(a%2==1){a+=5;continue;}
  a-=3;
  )
  printf("%d\n",b);
  }
  程序运行后的输出结果是________。
  A) 3   B) 4   C) 5   D) 6
  答案:B
  评析:break和continue的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,.不再判断执行的条件是否成立。
  
  (42)有以下程序
  main()
  { char s[]="l 59",*p;
  p=s;
  printf("%c",*p++);printf("%c",*p++);
  }
  程序运行后的输出结果是________。
  A)15  B)16  C)12  D)59
  答案:A
  评析:本题通过"p=s"将指针变量p指向字符数组s,在第一次输出时,由于++和*为同一优先级,"*p++"相于"+(p++)"。p指向s[1],输出为s[1]的值。
  
  (43)有以下函数
  fun(char*a,char*b)
  { while((*a!='\0')&&(*b!='\0')&&(*a==b))
  {a++;b++; }
  return(*a-*b);
  }
  该函数的功能是________。
  A)计算a和b所指字符串的长度之差
  B)将b所指字符串连接到a所指字符串中
  C)将b所指字符串连接到a所指字符串后面
  D)比较a和b所指字符串的大小
  答案:D
  评析:字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。
  
  (44)有以下程序
  main()
  { int num[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16}},i,j;
  for(i=O;i<4;i++)
  {  for(j=0;j<=i.j++)printf("%4c",' ');
  for(j_




 相关文章  热门文章
计算机等级考试三级网络复习资料总录
05年9月等级考试二级C语言考前上机密卷1
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(八)
05年9月等级考试二级C语言考前密卷1(八)

 文章评论


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