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。
上面已经详细解释过了。如果还是不明白,可以加我百度嗨。