c语言高手进入!解释switch case语言问题的答案。

我先跟你调一下格式,我看晕了!

int x=0,y=2,z = 3;

开关(x)

{

案例0:

开关(y==2)

{

case 1:printf(" * ");打破;

案例二:printf(" % ");打破;

}

案例1:开关(z)

{

case 1:printf(" ");

案例二:printf(" ");打破;

案例三:printf(" # ");

}

主()

{

//2473

//668977

int c;

while((c=getchar())!='\n ')

{开关(c-'2 ')

{

案例0:

案例1:putchar(c+4);

案例二:putchar(c+4);打破;

案例三:putchar(c+3);

默认值:putchar(c+2);打破;

}

}

printf(" \ n ");

}

问题1:

因为switch(y==2)的结果为真,所以C中的实值为1,所以运行。

case 1:printf(" * ");

打破;//退出最近的交换机。

继续跑

案例1:switch(z)//z的值为3,那么运行案例3:printf(" # ");

最终结果是:* #

问题2:

程序遇到' \n '就退出,输入字符' 2 ',ASCII码表中数字0-9相邻。所以在这里可以作为数值使用。

输入2,开关(c-'2 ')的结果是0。当交换机没有遇到中断和结束时,它将继续运行,因此它应该输出66。

输入4,switch (C-'2 ')的结果是2,然后直接运行。

案例二:putchar(c+4);打破;输出(' 4'+'4'):8

输入7,开关(c-'2 ')的结果是5。因为没有case 5,所以执行默认的default:putchar(c+2)。打破;输出(' 9'+'2'):9

输入3,开关(c-'2 ')的结果是1。执行。

案例1:putchar(c+4);

案例二:putchar(c+4);打破;遇到一个中断结束开关,所以输出:77。

上面已经详细解释过了。如果还是不明白,可以加我百度嗨。