求高人解决C语言迷惑

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:10:55
#include <stdio.h>
main(){
int i=5;
do
{switch(i%2)
{case 4:i--;break;
case 6:i--;continue;
}
i--;i--;
printf("%d\n",i);
}
while(i>0);
}

为什么运行的结果是 3 1 -1??

#include <stdio.h>
main(){
{int a,y;
a=10;y=0;
do
{a+=2;y+=a;
if(y>=50) break;}
while(a=14);
printf("a=%d y=%d",a,y);
}

为什么运行结果是 a=16 b=60??

1.switch语句不起作用。i mod 2,结果不可能大于2.因此,每次循环i=i-2,依次就是3,1,-1;

2.a=14,这个条件永远为真。一般情况下,如果系统无错误,赋值是永远可行的。我怀疑你是不是把a==14写成了a=4。
第一次,y+=a,则y=12,以后每次都是y=y+16,所以,当y>=50的时候,循环运行了4次,y=60.然后break,所以,a=14+2=16,y=12+16+16+16=60.