有以下程序 #include<stdio.h> main() { char i,j,n; for(i=’1’;i<=’9’;i++) { if(i<’3’)continue; for(j=’0’;j<=’9’;j++) { if(j<~2llJ>=…4)c

admin2020-11-27  20

问题 有以下程序
#include<stdio.h>
main()
{
char i,j,n;
for(i=’1’;i<=’9’;i++)
{
if(i<’3’)continue;
for(j=’0’;j<=’9’;j++)
{
if(j<~2llJ>=…4)continue;
n=(i-’0’)*10+j-’0’;
printf("%d",n);
}
if(i==’4’)break;
}
printf("\n");
}
程序运行后的输出结果是(    )。

选项 A、32 33 42 43
B、30 31 40 41
C、34 35 44 45
D、35 36 45 46

答案A

解析 数字字符‘0’—‘9’的ASCII码值是连续递增的,即‘1’比‘0’的ASCII码值大1……所以题意中,外层for循环的循环变量i取值为‘1’、‘2’、……‘9’;内层for循环的循环变量j取值为‘0’、‘1’……‘9’;另外外层for循环的循环体中if(i<‘3’)语句表示当i的ASCII码小于字符‘3’的ASCII码值时,执行continue语句跳入下一次循环(i的ASCII码值自增1);if(i==‘4’)语句表示当i是字符‘4’时,执行break语句跳出循环;同理,内层for循环中的if(j<’2’||j>=’4’)语句在j的值不等于‘2’、‘3’时,执行continue跳入下一次循环;综上,只有在i取值为‘3’或‘4’,j取值为‘2’或‘3’时,才执行语句:n=(i-’0’)*10+j-’0’;和printf("%d",n);所以当i取值为‘3’时,j取值为‘2’,n的值为3*10+2=32,输出32(空格),j取值为‘3’,n的值为3*10+3=33,输出33(空格);当i取值为‘4’时,j取值为‘2’,n的值为4*10+2=42,输出42(空格);j取值为‘3’,n的值为4*10+3=43,输出43(空格);所以程序最终输出结果为:32 33 42 43,答案为A。
转载请注明原文地址:https://jikaoti.com/ti/JuD0FFFM
0

最新回复(0)