急求答案

include "iostream.h"
void main()
{ char *s="213142";
int a=0,b=0,c=0,d=0;
int k;
for(k=0;s[k];k++)
switch(s[k])
{ default : d++;
case '1': a++;
case '3': c++;
case '2': b++;
}
cout<<"a="<<a<<",b="<<b<<",c="<<c<<",d="<<d<<endl;
}
输出结果是多少?并说明原因

答案:a=3,b=6,c=4,d=1
第一次循环:s[0]==2,即做b++,b==1;
第二次循环:s[1]==1,即做a++,a==1,因为没有break,所以继续往下做,那么c==1,b==2;
第三次循环:s[3]==3,即做c++,c==2,因为没有break,所以继续往下做,那么b==3;
第四次循环:s[4]==1,即做a++,a==2,因为没有break,所以继续往下做,那么c==3,b==4;
第五次循环:s[5]==4,即做default,d==1,因为没有break,所以继续往下做,那么a==3,b==5,c==4;
第六次循环:s[6]==2,即做b++,b==6;
所以,a=3,b=6,c=4,d=1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-29
a=3 b=6 c=4 d=1
s[k]是1时a++;c++;b++;
s[k]是2时b++;
s[k]是3时c++;b++;
s[k]是4时a++;c++;b++;d++;
找到case以后,从上至下执行,直到遇到break退出
第2个回答  2011-03-29
首先include前缺一个#,应为#include.
a=3,b=6,c=4,d=1
当s[k]=‘4’时,要执行d++,a++,c++,b++;
当s[k]='1'时,要执行a++,c++,b++;
当s[k]='3'时,要执行c++,b++;
当s[k]='2'时,只执行b++
你如果在每句后面加上break;程序在执行该语句后就跳回到switch(s[k]),可能是你要的结果
{ default : d++;break;
case '1': a++;break;
case '3': c++;break;
case '2': b++;break;
}
a=2,b=2,c=1,d=1;
希望对你有帮助
相似回答