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

1.若变量以正确定义,以下语句段输出结果是()x=0;y=2;z=3;switch(x){case0:switch(y==2){case1:printf("*");bre... 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<sedio.h>
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<CR>,<CR>代表ENTER键,程序输出结果是
668977为什么看不懂,程序操作过程详细解释谢谢,好的话再追加15分哦
展开
 我来答
百度网友d6ea8fae9
推荐于2016-09-25 · TA获得超过553个赞
知道答主
回答量:52
采纳率:0%
帮助的人:46.7万
展开全部
先把格式跟你调一下,看着头晕!
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
//668977
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");
}

第1题:
因为switch(y==2)的结果为真,在C里面真的值是1,所以运行
case 1:printf("*");
break;//退出最近的switch
继续运行
case 1:switch(z)//z的值是3,所以运行case 3:printf("#");
最终结果为:*#

第2题:
当程序遇到'\n'则退出,输入的是字符,运算的也是字符'2',而在ASCII码表里面0-9的数字是挨着的.所以在这里完全可以当作数值来运算.
输入2,switch(c-'2')结果是0,switch在没有遇到break和结束时会继续运行,所以要输出66.
输入4,switch(c-'2')结果是2,然后直接运行
case 2:putchar(c+4);break; 即输出('4'+'4'):8
输入7,switch(c-'2')结果是5,因为没有case 5,所以执行缺省default:putchar(c+2);break;即输出('9'+'2'):9
输入3,switch(c-'2')结果是1,执行
case 1:putchar(c+4);
case 2:putchar(c+4);break;遇到了break结束switch,所以输出:77

上面已经讲得很详细了,如果还不明白可以加我百度HI
后仲0eq
2008-07-25 · TA获得超过1225个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:0
展开全部
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 1:switch(z) 相当与switch(3)`执行case 3
{case 1:printf("");
case 2:printf("");break;
case 3:printf("#"); 输出# 你题目没写完啊```

2 `输入2473```首先2!='\n'
执行switch(c-'2') 也就是switch(0)`'2'代表字符2`

执行case0直到break
case 1:putchar(c+4);
case 2:putchar(c+4);break; `输出66
然后是4`!='\n'
执行switch(c-'2') 也就是switch(2)`
执行case2直到break
case 2:putchar(c+4);break; 输出8``
然后是7!='\n'
执行switch(c-'2') 也就是switch(5)`
执行case5没有就是default:putchar(c+2);break;
输出7```
最后3`执行case1到break输出77
答案668977
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
布什不死
2008-07-25 · TA获得超过421个赞
知道小有建树答主
回答量:749
采纳率:0%
帮助的人:0
展开全部
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)case2,程序输出的是c+4 = 4+4 =8 ,对于7运行的是55 - 50 = 5执行缺省的7+2 = 9,对于3运行51 -50 case1 case2,输出的是77
因此程序总的输出内容是668977,你可以试一下如果你单独的输入2,那么程序输出的是66
哦msdn中对于putchar的解释是Writes a character to a stream,意思是写一个字符到数据流中。

对于第一个我实在看不懂你写的啥东西。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式