#include "stdio.h"
void main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1:switch(y)
{case 0: a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++,b++;
}
printf("a=%d,b=%d\n",a,b);
}
----------------------------------------------------------------------------------------------
#include "stdio.h"
main()
{int a=2,b=7,c=5;
switch(a>0)
{ case 1:switch(b<0)
{case 1:printf("#");printf("\n");break;
case 2:printf("&");printf("\n");break;
}
case 0:switch(c==5)
{case 0:printf("*");printf("\n");break;
case 1:printf("@");printf("\n");break;
default:printf("$");printf("\n");break;
}
default:printf("!");
}
printf("\n");
}
-----------------------------------------------------------------------
这两个程序怎么也运行不起来,老是有错误,但是我看书上的答案又不理解,高手帮我解决下
格式弄好比较好分析:
#include "stdio.h"
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++,b++;
}
printf("a=%d,b=%d\n",a,b);
}
首先说明,一个case后面没有break,会继续执行接下来的case.
过程分析:x=1,运行case1里面的,case1里又是个switch,y=0,执行case 0的a++(a的值为1).
从最外面的case来看.现在case1的内容执行完了,由于没有break,会执行下面的case2,a++,b++(a的值为2,b的值为1),由于case2后面有break,跳出,case3不被执行.所以结果为a=2,b=1;
不得不强调,格式真的很重要....
希望是粘的时候变形了,不是一开始在编译器里就写成这样....
#include "stdio.h"
main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:
switch(b<0)
{
case 1:printf("#");printf("\n");break;
case 2:printf("&");printf("\n");break;
}
case 0:
switch(c==5)
{
case 0:printf("*");printf("\n");break;
case 1:printf("@");printf("\n");break;
default:printf("$");printf("\n");break;
}
default:printf("!");
}
printf("\n");
}
分析:最大的switch里分3项,case1,case0,default;
首先a>0为真,那么a>0这个表达式的值为1,执行case1,case1里的switch,由于b<0为假,所以表达式b<0的值为0,由于无case0,所以这个大的case1执行完毕,由于没有break,将执行下面的case0
c==5为真,表达式的值为1,所以执行case0里的switch里的case1,输出@,然后break掉,外层的case0执行完毕,由于这个外层的case0无break,所以执行case0下面的default,输出!,然后switch结束,执行最下面的那个printf,打印一个回车 结束.
#include "stdio.h"
void main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
{
switch(y)
{
case 0:
{
a++;
break;
}
case 1:
{
b++;
break;
}
}
break;
}
case 2:
{
a++;
b++;
break;
}
case 3:
{
a++;
b++;
break;
}
}
2.
#include "stdio.h"
void main()
{
int a=2,b=7,c=5;
switch(a>0)
{
case 1:
{
switch(b<0)
{
case 0:
{
printf("#");printf("\n");break;
}
case 1:
{
printf("&");printf("\n");break;
}
}
break;
}
case 0:
{
switch(c==5)
{
case 0:
{
printf("*");printf("\n");break;
}
case 1:
{
printf("@");printf("\n");break;
}
default:
{
printf("$");printf("\n");
}
}
break;
}
default:printf("!");
}
printf("\n");
}
printf("a=%d,b=%d\n",a,b);
}
我猜你的程序意思表达错了
正确的解答如上:
输出和你想的有差异的话
敬请赐教
你指的运行不起来是什么意思,说清楚点啊。如果你只是看不到结果的话就想上面说的一样,在后面加上一个getch();,如果你用的turboc还可以按alt+F5看到结果。