第三题 阅读以下代码和问题,回答问题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组合即可。
你可能感兴趣的试题

- 
                
- A.V(S2)和P(S4)
 - B.P(S2)和V(S4)
 - C.P(S2)和P(S4)
 - D.V(S2)和V(S4)
 
 - 查看答案
 

- 
                
- A.V(S1)P(S2)和V(S3)
 - B.P(S1)V(S2)和V(S3)
 - C.V(S1)V(S2)和V(S3)
 - D.P(S1)P(S2)和V(S3)
 
 - 查看答案
 

- 
                
- A.P(S4)和V(S4)V(S5)
 - B.V(S5)和P(S4)P(S5)
 - C.V(S3)和V(S4)V(S5)
 - D.P(S3)和P(S4)V(P5)
 
 - 查看答案
 

- 
                
- A.P(S3)和V(S4)V(S5)
 - B.V(S3)和P(S4)P(S5)
 - C.P(S3)和P(S4)P(S5)
 - D.V(S3)和V(S4)V(S5)
 
 - 查看答案
 

- 
                
- A.P(S2)和P(S4)
 - B.P(S2)和V(S4)
 - C.V(S2)和P(S4)
 - D.V(S2)和V(S4)
 
 - 查看答案