switch 不起作用了?

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:26:01
#include<iostream>
using namespace std;

int main()
{
int x,y,z;
x=y=z=0;
do
{
cin>>x;
switch(x)
{
case'1': {y++;cout<<y<<endl;break;}
case'2': {z++;cout<<z<<endl;break;}
}
}while(x!=0);
}

那个switch根本不起作用,到底是怎么回事??
如果是这样的呢?
##include<iostream>
using namespace std;

int main()
{
char a[3];
int x,y,z;x=y=z=0;
do
{
cin>>a;
switch(a)
{
case'all':x++;break;
case'bll':y++;break;
default:z++;}
}
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl;
}while(a!='aaa');
}
好像问题更多了,都不能运行,是怎么回事啊?

看来什么是字符什么是数字你还没搞清楚,不过char和int还是可以互转的
case'1'表是要输入字符1,那样的话x也要声明为char才行

case'1':这样的条件是得不到满足的,除非你输入49,如果你输入的是1,那么应该改为:
case 1:

也就是删除引号。

第一个LS已有答案了,是'1'的问题
补充部分问题是,字符串不能直接用“==”进行比较的。有专门用于比较字符串的函数strcmp

你的x是整型,而你的case中有' ',那是字符型的表示方法哈,把' '去掉就ok了