计算机等级 百分网手机站

下半年计算机2级c语言题库

时间:2017-06-29 12:20:27 计算机等级 我要投稿

2017下半年计算机2级c语言题库

  C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。下面是小编收集的计算机2级c语言题库,希望大家认真练习!

  1.

  #include "stdio.h"

  main()

  {char c;

  c=getchar();

  while(c!='?') {putchar(c);c=getchar(); }

  }

  如果从键盘输入abcde?fgh(回车)

  运行结果为:abcde

  2.

  #include

  main()

  { char c;

  while((c=getchar())!=’$’)

  { if(‘A’<=c&&c<=‘Z’)putchar(c);

  else if(‘a’<=c&&c<=‘z’)putchar(c-32);}

  }

  当输入为ab*AB%cd#CD$时,运行结果为:ABABCDCD

  3.

  #include

  main()

  { int x, y =0;

  for(x=1;x<=10;x++)

  { if(y>=10)

  break;

  y=y+x;

  }

  printf(“%d %d”,y,x);

  }

  运行结果为:10 5

  详见教材p120for语句

  详见教材p126~128break,continue语句

  for( 表达式1;表达式2;表达式3)

  {

  }

  (1) 先求解表达式1

  (2) 求解表达式2,若其值为真,执行循环体,然后执行 (3). 若为假,则结束循环,转到(5)

  (3) 求解表达式3

  (4) 转回上面 (2)继续执行

  (5) 循环结束,执行for语句下面的一个语句

  break ,跳出循环体;continue,结束本次循环(第i次循环),继续执行下一次循环(第i+1次循环)

  此题 表达式1为x=1,表达式2(循环条件)为x<=10,表达式3为x++

  初值x为1,y为0,循环条件(即表达式2)x<=10成立,进入循环体

  第1次循环

  执行if语句。0小于10,if语句的条件表达式不成立,不执行break;

  执行y=y+x; y=0+1=1

  转向表达式3,执行x++,x=x+1=1+1=2。循环条件x<=10成立,进入第2次循环

  第2次循环

  执行if语句。1小于10,if语句的条件表达式不成立,不执行break;

  执行y=y+x; y=1+2=3

  转向表达式3,执行x++,x=x+1=2+1=3。循环条件x<=10成立,进入第3次循环

  第3次循环

  执行if语句。3小于10,if语句的'条件表达式不成立,不执行break;

  执行y=y+x; y=3+3=6

  转向表达式3,执行x++,x=x+1=3+1=4。循环条件x<=10成立,进入第4次循环

  第4次循环

  执行if语句。6小于10,if语句的条件表达式不成立,不执行break;

  执行y=y+x; y=6+4=10

  转向表达式3,执行x++,x=x+1=4+1=5。循环条件x<=10成立,进入第5次循环

  第5次循环

  执行if语句。10等于10,if语句的条件表达式成立,执行break,跳出循环。

  从break跳出至for语句的下一条语句。执行printf(“%d %d”,y,x);

  输出当前的y与x.结果为10 5

  4.

  #include

  main()

  { float a,b,c,t;

  a=3;

  b=7;

  c=1;

  if(a>b)

  {t=a;a=b;b=t;}

  if(a>c)

  {t=a;a=c;c=t;}

  if(b>c)

  {t=b;b=c;c=t;}

  printf("%5.2f,%5.2f,%5.2f",a,b,c);

  }

  运行结果为:1.00,2.00,7.00

  详见教材p72数据的输出形式

  本题包含了3个if语句,每个if语句后的{ }都不可省略,因为每个{ }中都包含了多条语句

  若表达式a>b成立,则执行{t=a;a=b;b=t;}

  若表达式a>c成立,则执行{t=a;a=c;c=t;}

  若表达式b>c成立,则执行{t=b;b=c;c=t;}

  输出a,b,c中的值,要求输出的每个数据宽度为5个空格,小数部分保留2位,数据右对齐

  3小于7,因此表达式a>b不成立,因此不执行{t=a;a=b;b=t;}

  3大于1,因此表达式a>c成立,则执行{t=a;a=b;b=t;}。第一句,将a中的3拷贝,粘贴到t中;第二句,将c中的1拷贝,粘贴到a中,覆盖掉先前的3;第三句。将t中的3拷贝到c中,覆盖掉c中先前的1. 执行完复合语句后实现了a,c元素的值的互换,a为1,c为3,t为3,。

  7大于c中的3,因此b>c成立,执行则执行{t=b;b=c;c=t;},过程同上,执行后b为3,c为7,t为7

  此时输出a,b,c中的值为1.00,2.00,7.00

  5.

  #include< stdio .h >

  main ( )

  {floatc=3.0 , d=4.0;

  if ( c>d ) c=5.0;

  else

  if ( c==d ) c=6.0;

  elsec=7.0;

  printf ( “%.1f\n”,c ) ;

  }

  运行结果为:7.0

  此题为if...else...语句的嵌套,第二if...else...作为第一个if...else...语句else部分的复合语句。

  若表达式c>d成立,则执行c=5.0;

  否则(表达式c>d不成立)

  若表达式c==d成立,则执行c=6.0;

  否则,执行c=7.0;

  输出c中的值

  3.0小于4.0,因此表达式c>d不成立,执行第二个if…else…。

  3.0不等于4.0,因此表达式c==d不成立,执行c=7.0,将7.0赋给c, 覆盖掉c中的3.0,此时c中的值为7.0

  输出此时的c中的值