第三题 阅读以下代码和问题,回答问题1至问题3,将解答填入答题纸的对应栏内。

题库2022-08-02  30

问题 第三题 阅读以下代码和问题,回答问题1至问题3,将解答填入答题纸的对应栏内。【代码 1】typedef enum {A,B,C,D} EnumType;EnumType f(int yr){       if(0 == yr%400) {               return A;       }       else if (!(yr%4)) {                  if(0!=yr%100)                     return B;                  else                     return C;        }        return D;}【代码2 】#include<stdio.h>int main(){    int score;     scanf("%d",&score);     switch (score)     {           case 5: printf("Excellent!\n");           case 4: printf("Good!\n"); break;           case 3: printf("Average!\n");           case 2:           case 1:           case 0: printf("Poor!\n");           default: printf("Oops,Error\n");      }      return 0;}【代码3】#include<stdio.h>int main(){    int i,j,k;            for(i=0; i<2; i++)                 for(j=0; j<3;j++)                      for( k=0; k<2;k++) {                            if(i!=j&&j!=k)                                  printf("%d %d %d\n", i,j,k);                       }            ruturn 0;}      问题:3.1   (4分)对于代码1,写出下面的函数调用后x1 、x2、x3和x4的值。x1 = f(1997);x2 = f(2000);x3 = f(2100);x4 = f(2020);      问题:3.2   (5分)(1)写出代码2进行时输入为3的输出结果;(2)写出代码2进行时输入为5的输出结果。      问题:3.3   (6分)写出代码3运行后的输出结果。

选项

答案

解析 x1=3;x2=0;x3=2;x4=1

第一个条件 0==yr%400, 2000满足,返回为A;其余都不满足,继续进行判断;
第二个条件 !yr%4, 1997不满足,返回为D;其余满足,继续进行判断;
第三个条件 0!=yr%100,2020满足,返回为B;2100不满足,返回为C。
枚举类型中列出的每一个枚举符都对应着一个整数值,枚举类型实际上是一个整型符号常量的集合。当定义枚举类型时,枚举符都已经被系统隐含地赋予了一个整型值,默认情况下,第一个元素为0,第二个元素为1,依此类推。所以相应的A=0,B=1,C=2,D=3,故返回为:x1=3;x2=0;x3=2;x4=1。

Average!
poor!
Oops,Error
(2)Excellent!
Good!

控制传递给与开关的值匹配的 case 语句。switch 语句可以包括任意数目的 case 实例,但是任何两个 case 语句都不能具有相同的值。语句体从选定的语句开始执行,直到 break 将控制传递到 case 体以外。case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即"只是开始执行处的入口标号". 因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行,而且执行完一个case后面的语句后,若没遇到break语句,就自动进入 下一个case继续执行,而不在判断是否与之匹配,直到遇到break语句才停止执行,退出break语句.因此,若想执行一个case分之后立即跳出 switch语句,就必须在此分支的最后添加一个break语句。  0 1 0
0 2 0
0 2 1
1 0 1
1 2 0
1 2 1

【解析】

此题考察多重for循环再加上一个判定条件,i的取值为(0,1),j的取值为(0,1,2),k的取值为(0,1),只要按顺序找到i!=j且j!=k的组合即可。
转载请注明原文地址:https://tihaiku.com/congyezige/2425950.html

最新回复(0)