用考网 > 计算机类 > 计算机等级 > 资讯 > 《2015年计算机二级《C语言》考前押题密卷(2)》正文

2015年计算机二级《C语言》考前押题密卷(2)

用考网【资讯】 编辑:家辉 发布时间:2015-09-11 10:14:07

  27有以下程序:

  main()

  {int a=0,b=10,c=0,d=0;

  if(a=1)b=1;c=2;

  else d=3:

  printf(”%d,%d,%d,%d\n”,a,b,c,d);

  }

  程序输出(  )。

  A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

  参考答案:D

  参考解析:语法错误。else与if之间不应再用其他语句,如果满足if条件,则继续执行if后面的语句;不满足就执行else语句。

  28下列程序输出结果是(  )。

  #include%stdio.h>

  main()

  {char aE3一{'a','b','c','d','e','f','\o');

  int i,j;

  A.7,7B.7,6C.6,6D.6.7

  参考答案:B

  参考解析:本题要注意sizeof()和strlen()的区别,sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串长度,'\o'是一个转义符,它占存储空间,但不计入串的长度。

  29有以下程序

  #include

  int a=1:

  int f(int c)

  { static int a=2;

  c=c+1.

  return(a++)+c;

  }

  main()

  { int i,k=0;

  for(i=0;i<2;i++){int a=3;k+=f(a);)

  k+=a;

  printf(”%d\n”,k);

  程序运行结果是(  )。

  A.14B.15C.16D.17

  参考答案:A

  参考解析:在主函数中,k的初值为0,首先调用函数f(3),返回值为6,k的值变为6,而函数intfun(intc)中的局部静态变量a等于3。第二次调用函数f(3)时,返回值为7,所以k-6+7—13。退出循环语句,k再加上全局变量a的值1,其最终的值为14。

  30按照“先进后出”原则组织数据的结构是(  )。

  A.队列B.栈C.双向链表D.二叉树

  参考答案:B

  参考解析:栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素按先进后出的原则组织数据,它是最后被插入的元素,不是最后被删除的元素。

  31若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a

  A.1B.2C.3D.4

  参考答案:C

  32若有定义:“int*P,x=0,*P,P=&x;”,则语句“printf(”%d\n”,*p);”的输出结果是(  )。

  A.随机值B.0C.x的地址D.P的地址

  参考答案:B

  参考解析:*P的意思是取其指向地址的内容,P是指向x地址的指针,因此输出*P也就是输出X的内容,即0,故选择B选项。

  33下列程序中C的二进制值是( )。

  char a=2,b=4,c;

  c=a^b>>2;

  A.00000011B.00010100C.00011100D.00011000

  参考答案:A

  参考解析:本题主要考查右移运算和按位异或。把b化为二进制数为00000100,右移两位后为00000001,a的二进制为00000010,两者异或为00000011。

  34有下列程序:

  main()

  {char*p[]={¨3697”.”2584”);

  int i,j;long ntlm=0;

  for(i=0;i<2;i++)

  { j=0;

  while(p[i][j]!='\0')

  {if((p[i][j]-'\0')%2)num=10*num+p

  [j][j]-'0';

  j+=2;

  }

  }

  print[(“%d\n”,num);

  程序执行后的输出结果是(  )。

  A.35B.37C.39D.3975

  参考答案:D

  参考解析:执行第一次for循环时,用表达式p[i][j]!=’\o=来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][i]-\o’)除2的余数不为0时,即字符串所有奇数执行后面的语句。所以退出第l次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

  35有下列二叉树,对此二叉树前序遍历的结果为(  )。

2015年计算机二级《C语程序设计》考前押题密卷

  A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ

  参考答案:D

  参考解析:所谓二叉树的前序遍历是指先访问根结点,访问左子树,最后访问右子树,可知选项D正确。本题中序为DYBEAFCZX,后序为YDEBFZXCA。

  36设有如下关系表:

2015年计算机二级《C语程序设计》考前押题密卷

  则下列操作中正确的是(  )。

  A.T=RnSB.T=RUSC.T—R×SD.T—R/s

  参考答案:B

  参考解析:关系代数中的集合运算分4种:并、差、交和笛卡尔。①并(U);②差(一),R和S的差是由属于R但不属于s的元组构成的集合;③交(n):由既属于R又属于S的元组构成的集合;④笛卡尔积(×):对两个关系R和S进行合并操作,产生的关系中元组个数为两个关系中元组个数之积。根据关系T中的元组可知,T关系是关系R和关系S进行合并操作所得到的。

  37若有定义:“int a[2][3];”,则对a数组的第i行第j列元素的正确引用为(  )。

  A.*(*(a+i)+j)B.(a+i)[j]C.*(a+j+j)D.*(a+i)+j

  参考答案:A

  参考解析:通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+J);③*(*(a+i)+j);④*(aEiJEj]);⑤(&a[o]EoJ+3*i十j)。故A正确。

  38设有以下语句:

  int a=1,b=2,c;

  c=a^(b<<2);

  执行后,c的值为( )。

  A.6B.7C.8D.9

  参考答案:D

  参考解析:本题考查两个知识点,按位异或左移把b左移2位化成二进制c=a^(b<<2)=a^(oooolo<<2)=a^o01000=0000001^001000=9,故选择D。

  39若二维数组a有m列,则在a[i][j]前的元素个数为(  )。

  A.i*m+j-1B.i*m+jC.j*m+iD.i*m+j+1

  参考答案:B

  参考解析:二维数组的元素可以看成是按矩阵形式存放的,数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。

  40已知大写字母A的ASCIl码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是(  )。

  A.c=(c-'A')%26+'A'

  B.C=c+32

  C.c=c-'A'+'A'

  D.c=('A'+C)%26—'a'

  参考答案:B

  参考解析:根据ASCIl码选项可知大写字符A与小写字符a的ASCIl码相差32,而选项D中应该是加上'a’,选项A和C左侧的表达式都是大写字符c与大写字符A的差与…a的ASCIl代码的和就是小写字符c的ASCIl代码。

  二、程序填空题

  41str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组1,b中,函数返回数组bh的长度。

  例如.str=”abc123de45f967”.结果为:1234567。

  注意:部分源程序给出如下。

  请勿改动main()函数和其他函数中的任何内容.仅在函数proc()的横线上填入所编写的若干表达式或语句。

  试题程序:

  #include

  #define M 80

  int bb[M];

  int proc(char str[].int bh[],int num)

  {

  int i.n=0;

  for(i=0;i

  {

  if( 【1】 )

  {

  bb[n]=【2】;

  n++:

  )

  return 【3】 ;

  }

  void main()

  {

  char str[M];

  int num=0.n,i:

  printf(”Enter a string:n”);

  gets(str);

  while(str[num])

  num++o

  n=proc(str,bb,num);

  prinlf(”\nbb=”);

  for(i=0;i

  printf(”%d”,bb[i]);

  )

  参考解析:

  【1】str[i]:>='0’&&str[i]<=79’【2】str[i]-'0’ 【3】n

  【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应判断字符串str中每个字符是否是数字字符。因此,【l】处填“str[i]>='0’&&str[i]<='9“’;将每一个数字字符转化为数字放在整型数组bb中,因此,[21处填“str[i]-'0”’;由函数proc()可知,变量n存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,[31处填“n”。第41题 笔记记录我的笔记(0) | 精选笔记(2)选择笔记标签:试题内容(2)答案解析(0)

  三、程序改错题

  42下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为123456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。

  注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

  试题程序:

  #include

  #include

  #include

  //****found****

  void proc(1ong s,long t)

  {long s1=10;

  s/=10:

  *t=s;

  //****found****

  while(s<0)

  { s=s/100;

  *t=s*s1+*t;

  s1=s1*10:

  }

  void main()

  {long S,t;

  system(”CLs”);

  printf(”\nPlease enter s:”);

  scanf(”%ld”,&s);

  proc(s,&t):

  printf(”The result is:%ld\\n”,t);

  }

  参考解析:

  (1)错误:voidproc(10ngS,longt)正确:voidproc(10ngS,lon9“t)(2)错误:while(s<0)

  正确:while(s>O)

  【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此“voidproc(10ngS,longt)”应改为“voidproc(10ngS,long*t)”;要从低位开始取出长整型变量s中偶数位上的数,每次变量S要除以100,然后判断其是否大于0来决定是否要继续,因此“while(S<0)”应改为“while(s>0)”。第42题 笔记记录我的笔记(0) | 精选笔记(3)选择笔记标签:试题内容(3)答案解析(0)

  四、程序设计题

  43请编写函数proc(),其功能是:将str所指字符串中除下标为偶数,同时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为ABCDEFGl2345,其中字符8的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除。依次类推,最后t所指的数组中的内容应是ACEG。

  注意:部分源程序给出如下。

  请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所写的若干语句。

  试题程序:

  #include

  #include

  #include

  #include

  void proc(char*str,char t[])

  {

  )

  void main()

  (

  char str[100],t[100];

  system(”CLS”);

  printf(”\nPlease enter string str:");

  scanf(”%s”,str);

  proc(str,t);

  printf(”\nThe result is:%s\n”,t):

  )

  参考解析:

  voidproc(char*sir。chart[])1

  inti,j=0;

  for(i=0;slr[,i]!=’\0’;i++)//从数组的第一个元素开始,到其最后一个

  {if(i%2==0&.&str[i]!=o)//下标为偶数、同时ASCIl码值为奇数的字符

  t[j++]=str[i];}//如果成立,则把它放到t数组中

  t[j]=’\0’;//字符串结束标志为’\0’}

  【解析】题目中要求将字符串sir中下标为偶数,同时ASCIl码值为奇数的字符放在数组t中。首先,需要检查字符串str中下标为偶数的字符的ASCIl码值是否为奇数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。

Copyright @ 2006 - 2017 用考网 All Rights Reserved

用考网 版权所有 粤ICP备17065803号-4

回到顶部