计算机等级 百分网手机站

计算机二级考试C语言习题及答案(2)

时间:2018-01-09 11:43:25 计算机等级 我要投稿

2017计算机二级考试C语言习题及答案

  (21)有以下程序

  #include

  main()

  { chars[]="012xy\08s34f4w2";

  int i,n=0;

  for(i=0;s[i]!=0;i++)

  if(s[i]>='0'&&s[i]<='9')n++;

  printf("%d\n",n);

  }

  程序运行后的输出结果是

  A)0

  B)3

  C)7

  D)8

  (22)若i和k都是int类型变量,有以下for语句

  for(i=0,k=-1;k=1;k++)printf("*****\n");

  下面关于语句执行情况的叙述中正确的是

  A)循环体执行两次

  B)循环体执行一次

  C)循环体一次也不执行

  D)构成无限循环

  (23)有以下程序

  #include

  main()

  { char b,c;int i;

  b='a'; c='A';

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

  { if(i%2) putchar(i+

  B);

  else putchar(i+

  C);

  }

  printf("\n");

  }

  程序运行后的输出结果是

  A)ABCDEF

  B)AbCdEf

  C)aBcDeF

  D)abcdef

  (24)设有定义:double x[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是

  A)scanf("%f",&x[6]);

  B)scanf("%lf",*(x+6));

  C)scanf("%lf",p+6);

  D)scanf("%lf",p[6]);

  (25)有以下程序(说明:字母A的ASCII码值是65)

  #include

  voidfun(char *s)

  { while(*s)

  { if(*s%2) printf("%c",*s);

  s++;

  }

  }

  main()

  { char a[]="BYTE";

  fun(a);

  printf("\n");

  }

  程序运行后的输出结果是

  A)BY

  B)BT

  C)YT

  D) YE

  (26)有以下程序段

  #include

  main()

  { …

  while( getchar()!='\n');

  …

  }

  以下叙述中正确的是

  A)此while语句将无限循环

  B) getchar()不可以出现在while语句的条件表达式中

  C)当执行此while语句时,只有按回车键程序才能继续执行

  D)当执行此while语句时,按任意键程序就能继续执行

  (27)有以下程序

  #include

  main()

  { int x=1,y=0;

  if(!x) y++;

  else if(x==0)

  if (x) y+=2;

  else y+=3;

  printf("%d\n",y);

  }

  程序运行后的输出结果是

  A)3

  B)2

  C)1

  D) 0

  (28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是

  A)p=s;

  B)p=k;

  C)p=s[0];

  D)k=s;

  (29)有以下程序

  #include

  voidfun(char *

  C)

  { while(*

  C)

  {if(*c>='a'&&*c<='z') *c=*c-('a'-'A');

  c++;

  }

  }

  main()

  { chars[81];

  gets(s);

  fun(s);

  puts(s);

  }

  当执行程序时从键盘上输入HelloBeijing<回车>,则程序的输出结果是

  A)hello beijing

  B)Hello Beijing

  C)HELLO BEIJING

  D)hELLO Beijing

  (30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

  #include

  #define N 10

  void fun(intx[N])

  { int i=0;

  while(i}

  在程序中下划线处应填入的是

  A)x+i

  B)&x[i+1]

  C)x+(i++)

  D)&x[++i]

  (31)有以下程序

  #include

  main()

  { chara[30],b[30];

  scanf("%s",a);

  gets(

  B);

  printf("%s\n %s\n",a,

  B);

  }

  程序运行时若输入:

  how areyou? I am fine<回车>

  则输出结果是

  A)how areyou?

  B)how

  I am fine are you? I am fine

  C)how areyou? I am fine

  D)how are you?

  (32)设有如下函数定义

  int fun(intk)

  { if(k<1) return 0;

  elseif(k==1) return 1;

  else returnfun(k-1)+1;

  }

  若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是

  A)2

  B)3

  C)4

  D)5

  (33)有以下程序

  #include

  int fun (int x,int y)

  { if(x!=y) return ((x+y)/2);

  else return (x);

  }

  main()

  { inta=4,b=5,c=6;

  printf("%d\n",fun(2*a,fun(b,

  C)));

  }

  程序运行后的输出结果是

  A)3

  B)6

  C)8

  D)12

  (34)有以下程序

  #include

  int fun()

  { static intx=1;

  x*=2;

  return x;

  }

  main()

  { int i,s=1;

  for(i=1;i<=3;i++) s*=fun();

  printf("%d\n",s);

  }

  程序运行后的输出结果是

  A)0

  B)10

  C)30

  D)64

  (35)有以下程序

  #include

  #define S(x)4*(x)*x+1

  main()

  { intk=5,j=2;

  printf("%d\n",S(k+j));

  }

  程序运行后的输出结果是

  A)197

  B)143

  C)33

  D)28

  (36)设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是

  A)t1=t2;

  B)t2.num1=t1.num1;

  C)t2.mark=t1.mark;

  D)t2.num2=t1.num2;

  (37)有以下程序

  #include

  struct ord

  { int x,y;}dt[2]={1,2,3,4};

  main()

  {

  struct ord *p=dt;

  printf("%d,",++(p->x));printf("%d\n",++(p->y));

  }

  程序运行后的输出结果是

  A)1,2

  B)4,1

  C)3,4

  D)2,3

  (38)有以下程序

  #include

  struct S

  { inta,b;}data[2]={10,100,20,200};

  main()

  { struct Sp=data[1];

  printf("%d\n",++(p.a));

  }

  程序运行后的输出结果是

  A)10

  B)11

  C)20

  D)21

  (39)有以下程序

  #include

  main()

  { unsignedchar a=8,c;

  c=a>>3;

  printf("%d\n",

  C);

  }

  程序运行后的输出结果是

  A)32

  B)16

  C)1

  D)0

  (40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是

  A)写操作结束后可以从头开始读

  B)只能写不能读

  C)可以在原有内容后追加写

  D)可以随意读和写