C语言高手进!switch case语言问题给解释一下答案

[复制链接]
查看11 | 回复3 | 2016-9-25 12:31:40 | 显示全部楼层 |阅读模式
1.若变量以正确定义,以下语句段输出结果是( )
x=0;y=2;z=3;
switch(x)
{case 0:switch(y==2)

{case 1:printf("*");break;

case 2:printf("%");break;

}
case 1:switch(z)

{case 1:printf("");

case 2:printf("");break;

case 3:printf("");
答案是*#,给我答案解释...怎么执行的啊详细点
2程序如下
#include
main()
{int c;
while((c=getchar())!='\n')
{switch(c-'2')

{case 0:

case 1:putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

default:putchar(c+2);break;

}

}printf("\n");
}
从第一列开始输入数据:2473,代表ENTER键,程序输出结果是
668977为什么看不懂,程序操作过程详细解释谢谢,好的话再追加15分哦

回复

使用道具 举报

千问 | 2016-9-25 12:31:40 | 显示全部楼层
先把格式跟你调一下,看着头晕! int x=0,y=2,z=3;switch(x){ case 0:switch(y==2)
{ case 1:printf("*");break;
case 2:printf("%");break;
}case 1:switch(z)
{ case 1:printf("");
case 2:printf("");break;
case 3:printf("#");
} main(){//2473//668977int c; while((c
回复

使用道具 举报

千问 | 2016-9-25 12:31:40 | 显示全部楼层
x=0;y=2;z=3; switch(x) 相当与switch(0)``选择从case0处执行{case 0:switch(y==2) 相当与switch(1)``执行case1`{case 1:printf("*");break; 输出*后跳出switch(y==2)case 2:printf("%");break; }case
回复

使用道具 举报

千问 | 2016-9-25 12:31:40 | 显示全部楼层
2、getchar()函数的意思是从输入流中一个一个的读取数据,然后进行运算由于你的switch()用的是ASII进行运算的那么就有2的ASII码是50,那么程序执行的是switch(c - ‘2’) = switch(50-50)执行case0、1、2,程序写c+4,c+4 66 到输出流中,然后break;对于4同样的程序运行的是switch(52-50
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行