以下运行程序后的输出结果是#include<stdio.h>main(){int x=1,y=1;int m n;m=n=1,

以下运行程序后的输出结果是#include<stdio.h>main(){intx=1,y=1;intmn;m=n=1;switch(m){case0:x=x*2;cas... 以下运行程序后的输出结果是
#include<stdio.h>
main()
{
int x=1,y=1;
int m n;
m=n=1;
switch(m)
{
case 0:x=x*2;
case 1:{
swtich(n)
{case 1:x=x*2;
case 2:y=y*2;break;
case 3:x++;
}}
case 2:x++,y++;
case 3:x*=2;y*=2;break;
default:x++;y++;}
printf("%x=%d,y+%d",x,y);
}
新手求详解!
展开
 我来答
MyOpen
2019-05-23 · TA获得超过2861个赞
知道答主
回答量:68
采纳率:0%
帮助的人:4.1万
展开全部

首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。

代码运行结果如下图所示:

程序运行过程解析:

1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。

2、执行第一个switch(m),因为m=1,所以进入case 1分支。在这个分支里,执行第二个switch(n),因为n=1,所以进入case 1分支,运行x=x*2=1*2=2。由于case 1没有break语句,因此继续执行case 2,y=y*2=1*2=2。

3、由于第一个case 1分支也没有break语句,继续执行case 2:x++,y++,执行后的结果是:x=3,y=3。

4、由于case 2分支也没有break语句,因此执行case 3:x*=2,y*=2,执行后的结果是:x=6,y=6。

5、跳出switch语句后打印,输出x和y此时的值,也就是x=6,y=6。

扩展资料:

多分支选择switch语句, 其格式形式为:

switch(表达式){ 

case 常量表达式1:  语句1;

case 常量表达式2:  语句2;

… 

case 常量表达式n:  语句n;

default:  语句n+1;

}

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

为了避免不断向下执行的情况,C语言提供了一种break语句,专用于跳出switch语句。

在case后的各常量表达式的值不能相同,否则会出现错误。在case后,允许有多个语句,可以不用{}括起来。各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。

城露莫9827
高粉答主

2020-12-31 · 关注我不会让你失望
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kingfeng588
2012-06-26 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1797万
展开全部
结果为:6=6,y+0

//printf("%x=%d,y+%d",x,y);// 这里应该写错了。
printf("x=%d,y=%d",x,y);

修改后结果为:x=6,y=6

同时注意代码规范。

步骤:

#include<stdio.h>
main()
{
int x=1,y=1;
int m n;
m=n=1;
switch(m)// m=1
{
case 0:x=x*2;
case 1:{ // 由于m=1,执行这里。
swtich(n) // n=1
{case 1:x=x*2; // 由于m=1,执行这里。由于x=1,所以x=x*2=2;
case 2:y=y*2;break;// 由于case 1没有break,执行这里。由于y=1,所以y=y*2=2;此处有break跳出swtich(n)
case 3:x++;
}}
case 2:x++,y++; // 由于case 1:没有break语句,执行这里,执行后:x=3,y=3
case 3:x*=2;y*=2;break;// 由于case 2:没有break语句,执行这里,执行后:x=6,y=6,此处有break,跳出switch(m)
default:x++;y++;}
printf("%x=%d,y+%d",x,y);
}

代码进行了修改:
#include<stdio.h>

void main()
{
int x=1,y=1;
int m,n;

m=n=1;
switch(m)
{
case 0:x=x*2;
case 1:
{
switch(n)
{
case 1:
x=x*2;
case 2:
y=y*2;
break;
case 3:
x++;
}
}
case 2:
x++,y++;
case 3:
x*=2;y*=2;
break;
default:
x++;y++;
}
//printf("%x=%d,y+%d",x,y);
printf("x=%d,y=%d",x,y);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暮云wwc
推荐于2018-05-18 · 超过14用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:36.1万
展开全部
输出结果是6=6,y+0
程序运行过程是:
1.赋值为x=1,y=1,m=1,n=1。
2.第一个switch(m),m=1,进入case 1分支。在这个分支里,switch(n),n=1,进入case 1分支,x=x*2,此时x=2。由于case 1没有break,因此继续执行case 2,y=y*2,此时y=2。
3.由于第一个case 1分支也没有break,因此执行case 2,x++,y++,此时x=3,y=3。
4.由于case 2分支没有break,因此执行case 3,x*=2,y*=2,此时x=6,y=6。
5.跳出switch语句后打印,printf函数应该有三个参数,但是后面只给出了两个,在VC6.0环境下默认第三个为0,故打印为%x:以16进制打印6,%d:以10进制打印6,%d:以10进制打印默认的0。

程序里有一些问题,int m n中间应该有逗号,swtich拼写有错误,main应该有返回值类型void或int,并在最后写上return语句。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦纷雪sunny
2012-06-26
知道答主
回答量:1
采纳率:0%
帮助的人:1602
展开全部
6=6,y+0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式