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

 我来答
仝恒冠夏
2019-10-31 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:805万
展开全部
首先指出程序中的三处错误,第一个是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子句可以省略不用。
令运旺冉培
2019-10-11 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:920万
展开全部
输出结果是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语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
止其英农己
2019-10-07 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:1175万
展开全部
结果为: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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式