计算机c语言试题及答案

时间:2021-08-31

  1.

  #include "stdio.h"

  main()

  {char c;

  c=get);

  while(c!='?') {putc);c=get); }

  }

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

  运行结果为:abcde

  2.

  #include

  main()

  { char c;

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

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

  else if(‘a’<=c&&c<=‘z’)putc-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( )

  {char ch;

  ch=get );

  switch(ch)

  {case‘A’ : printf(“%c”,’A’);

  case‘B’ : printf(“%c”,’B’); break;

  default: printf(“%s”,”other”);

  } }

  当从键盘输入字母A时,运行结果为:AB

  详见教材p103,switch语句

  switch(表达式)

  { case常量1 :语句1

  case常量2 :语句2

  ┇┇ ┇

  case常量n :语句n

  default :语句n+1

  }

  其中表达式,常量1,…,常量n都为整型或字符型

  case相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开始往下执行程序,不再匹配常量,直至遇到break或switch结束

  本题过程:

  首先从键盘接收一个字符’A’并将其放在变量ch中。

  执行switch语句。Switch后面的条件表达式为ch,因此表达式的值即为字符’A’. 用字符’A’依次与下面的 case中的常量匹配。

  与第1个case后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行printf(“%c”,’A’),屏幕上输出A;再往下继续执行printf(“%c”,’B’),屏幕上输出B;再继续执行break, 此时跳出switch语句。

  5.

  #include

  main( )

  { int a=1,b=0;

  scanf(“%d”,&a);

  switch(a)

  {case 1: b=1;break;

  case 2: b=2;break;

  default : b=10;}

  printf("%d ", b);

  }

  若键盘输入5,运行结果为:10

  本题过程:

  首先用scanf函数为变量a赋值为5。

  执行switch语句。switch后面的条件表达式为a,因此表达式的值即为5. 用5依次与下面 case中的常量匹配。没有找到匹配的常量,因此两个case后的语句都不执行。执行default后面的语句b=10;将10赋给变量b。

  输出变量b,结果为10

  6.

  #include

  main()_

  { char grade=’C’;

  switch(grade)

  {

  case ‘A’: printf(“90-100”);

  case ‘B’: printf(“80-90”);

  case ‘C’: printf(“70-80”);

  case ‘D’: printf(“60-70”); break;

  case ‘E’: printf(“<60”);

  default : printf(“error!”);

  }

  }

  运行结果为:

  70-80

  60-70

  本题过程:

  首先从键盘接收一个字符’C’并将其放在变量grade中。

  执行switch语句。switch后面的条件表达式为grade,因此表达式的值即为字符’C’. 用字符’C’依次与下面的 case中的常量匹配。

  与第3个case后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行printf(“70-80”);,屏幕上输出70-80,并换行;再往下继续执行printf(“60-70”),屏幕上输出60-70,并换行;再继续执行break, 此时跳出switch语句。

  7.

  #include

  main()

  { int y=9;

  for(;y>0;y- -)

  if(y%3==0)

  { printf(%d”,- -y);

  }

  }

  运行结果为:

  852

  详见教材p53,自增自减符号

  此题 表达式1被省略,表达式2(循环条件)为y>0,表达式3为y--

  初值y为9,循环条件(即表达式2)y>0成立,进入循环体

  第1次循环

  执行if语句。9%3==0,if语句的条件表达式成立,执行printf(%d”,- -y),即y先自减1变为8,然后在输出,因此屏幕上输出8

  转向表达式3,执行y--,y=y-1=8-1=7。循环条件y>0成立,进入第2次循环