计划是遇1输出*其他输出空格,可是都只输出*
#include<iostream.h>
void main()
{
int i,j;
int l[3][3]={1,0,1,1,1,0,0,0,1};
cout<<"is"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<l[i][j];
switch (l[i][j]='1')
{
case'1':cout<<"*";
break;
default:cout<<" ";
}
if(j-1%3==1)
{
cout<<endl;
}
}
}
}
c++开关语句的问题?
答案:4 悬赏:0 手机版
解决时间 2021-02-18 02:09
- 提问者网友:寂寞梧桐
- 2021-02-17 13:12
最佳答案
- 五星知识达人网友:逃夭
- 2021-02-17 13:42
switch (l[i][j])
{
case 1:cout<<"*";
break;
default:cout<<" ";
}
这里这样写
{
case 1:cout<<"*";
break;
default:cout<<" ";
}
这里这样写
全部回答
- 1楼网友:行雁书
- 2021-02-17 16:24
1、全部输出*的原因:
switch (l[i][j]='1') // 这里用的"="是赋值的意思,这个执行之后l[i][j]=='1'了(实际是'1'的ASCII码值49),且等式l[i][j]='1'的值为'1',所以必然进入下面的 case '1'了,打印出*
{
case'1':cout<<"*";
break;
default:cout<<" ";
}
2、修改建议
像这种只有两个分支的,用不着用switch呀,if就可以了。
if (1==l[i][j]) //此处等于的判定推荐把常数放在前面,这样如果把“==”误写作"=",编译时会报错
{
cout<<"*";
}
else
{
cout<<" ";
}
- 2楼网友:猎心人
- 2021-02-17 15:29
switch 判断的不对。应该是
switch(l[i][j])
{
case 1:
....
}
你的l[i][j]是个整数,你如果写'1'则是一个char,类型不一样。
- 3楼网友:西岸风
- 2021-02-17 14:12
楼上的说用i==3;可以执行,因为i的值不确定,所以i==3这个判断语句的值要么为0,要么为1
所以程序最后输出的结果为abcd
switch()里面可以放表达式,case后面不能为表达式.
程序运行结果为bcdabcd
switch(i=3)i=3的表达式的值为3
所以case 2不执行,从case 3开始执行,一直到遇到break或者switch结束为止.所以就输出bcdabcd
准确的应为:
switch(i=3)
{
case 2 :cout<<"a";
case 3 :cout<<"b";
case 4 :cout<<"c";
case 5 :cout<<"d";
default : cout<<"abcd";
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯