自考计算机真题能解释一下吗
发布网友
发布时间:2022-04-28 13:33
我来回答
共1个回答
热心网友
时间:2023-10-10 15:52
这代码是有问题的。switch(x)—— x 不能是浮点型数据的。
计算机类出题者,应该所有题目都在计算机上调试过,再考试。
这里只做出题者目的和考核要点来分析。
(1)输入115.5 输出1 , 2
switch(x/10-5)人为x/10-5 暗含强制转换为整型115.5 / 10 - 5 = 6 所以执行过程如下:
case 6:a++;printf("%d,",a); //这里a = 1 所以 输出 1
case 5:a++;break; 这里a =2 ,没有输出。
注意case 6 执行后没有 break语句,所以会继续执行case5,case5 后面有break语句,所有switch执行结束。
然后执行最后一行语句 printf("%d\n",a); 这里输出 2
所以结果是1,2。
(2)输入45 输出1 , 3
switch(x/10-5)人为x/10-5 暗含强制转换为整型45 / 10 - 5 = 负数,结果与所有case都不匹配,执行缺省值, 所以执行过程如下:
default:(缺省值,因为负数在case列表中没有)
a++; //a=1 同上,没有break ,不会结束
printf("%d,",a); //输出 1
case 1:
a+=2; //a = 3
到此switch 按顺序执行结束。
然后执行
printf("%d\n",a);// 输出3
所以结果是1,3。追问再问一个问题
追答?
热心网友
时间:2023-10-10 15:52
这代码是有问题的。switch(x)—— x 不能是浮点型数据的。
计算机类出题者,应该所有题目都在计算机上调试过,再考试。
这里只做出题者目的和考核要点来分析。
(1)输入115.5 输出1 , 2
switch(x/10-5)人为x/10-5 暗含强制转换为整型115.5 / 10 - 5 = 6 所以执行过程如下:
case 6:a++;printf("%d,",a); //这里a = 1 所以 输出 1
case 5:a++;break; 这里a =2 ,没有输出。
注意case 6 执行后没有 break语句,所以会继续执行case5,case5 后面有break语句,所有switch执行结束。
然后执行最后一行语句 printf("%d\n",a); 这里输出 2
所以结果是1,2。
(2)输入45 输出1 , 3
switch(x/10-5)人为x/10-5 暗含强制转换为整型45 / 10 - 5 = 负数,结果与所有case都不匹配,执行缺省值, 所以执行过程如下:
default:(缺省值,因为负数在case列表中没有)
a++; //a=1 同上,没有break ,不会结束
printf("%d,",a); //输出 1
case 1:
a+=2; //a = 3
到此switch 按顺序执行结束。
然后执行
printf("%d\n",a);// 输出3
所以结果是1,3。追问再问一个问题
追答?