刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

第三题

 

阅读以下代码和问题,回答问题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


解析:

问题 3.1 的解析:
对于代码1中的函数 f,它根据传入的年份值来判断并返回对应的枚举值。根据函数的逻辑判断,我们可以得到以下结果:
x1 = f(1997) 返回 D(或 3),因为 1997 不满足闰年的条件。
x2 = f(2000) 返回 A(或 0),因为 2000 是闰年。
x3 = f(2100) 返回 C(或 2),因为虽然 2100 能被4整除,但不能被400整除。
x4 = f(2020) 返回 B(或 1),因为虽然不满足闰年的条件但它能被4整除且不被100整除。 因此得出答案 x1=D(或 3),x2=A(或 0),x3=C(或 2),x4=B(或 1)。 关于枚举类型中每个枚举符对应的整数值的解释也已在答案中给出。 对于其他部分的解释已在答案中详细阐述。 对于问题 3.2 的解析:代码段是一个简单的 switch-case 结构,根据输入的分数值判断并输出对应的结果。输入为特定值时执行的分支已在答案中详细列出。 对于问题 3.3 的解析:这是一个嵌套的三重循环结构,结合条件判断输出符合条件的组合值。具体的输出已在答案中列出并解释。

创作类型:
原创

本文链接:第三题 阅读以下代码和问题,回答问题1至问题3,将解答填入答题纸的对应栏内。【代码 1】typede

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share