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

简答题

第三题

 

阅读以下代码和问题,回答问题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 的解析中,我们根据代码中的逻辑判断,对每一个年份进行条件判断,得到对应的枚举值。问题 3.2 的解析中,我们根据输入的分数,使用switch语句进行匹配,执行相应的case语句,得到输出结果。问题 3.3 的解析中,我们根据代码中的三重for循环和判定条件,输出符合条件的i、j、k的值。

创作类型:
原创

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

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

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

分享考题
share