c++ switch case 语句 里面能用 if else循环语句吗?该怎么用?

#include<iostream>usingnamespacestd;intmain(){charletter;while((letter=getchar())!='y... #include<iostream>
using namespace std;
int main()
{
char letter;
while((letter=getchar())!='y') // 当输入y时 结束循环
{
switch(letter)
{
case 'M': // 为什么第一个case可以用 case('n'||'M'): 而不报错,而后面的case就不能这样?
cout<<"Monday!"<<endl;break; // 当我输入M 时,输出为 Monday!\n Data ERROR!
case 'F':cout<<"Friday!"<<endl;break; // 输出类似 M 的输出
case 'S':cout<<"请输入第二个字母:"<<endl;
{
if((letter=getchar())=='a') // 输入a
{
cout<<"Saturday!"<<endl;break;
}
else
{
if((letter=getchar())=='u')
{
cout<<"Sunday!"<<endl;break;
}
else
{
cout<<"Data ERROR!"<<endl;break;
}
}
}
case 'T':cout<<"请输入第二个字母:"<<endl;
{
if((letter=getchar())=='h') // 输出 两次 Data ERROR!
{
cout<<"Thursday!"<<endl;break;
}
else
{
if((letter=getchar())=='u') // 输出 Tuesday!\n Data ERROR!
{
cout<<"Tuesday!"<<endl;break;
}
else
{
cout<<"Data ERROR!"<<endl;break;
}
}
}
case 'W':cout<<"Wednesday!"<<endl;break; // 输出类似 M 的输出
default:cout<<"Data ERROR!"<<endl;break; // 当我输入 全不符合以上情况时,输出也是两个 Data ERROR!
}
}
return 0;
}
原题目是这样的:
(要求采用switch case 语句)
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
展开
 我来答
terranlong
推荐于2016-06-25 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:4001万
展开全部
已改,看注释

#include<iostream>
using namespace std;
int main()
{
char letter;
while((letter=getchar())!='y') // 当输入y时 结束循环
{
getchar(); // 需要把你输入的换行吃掉
switch(letter)
{
case 'M': // case('n'||'M')肯定不报错,||意思就是或的意思,'n'和'M'都是非0的,因此非0就执行这个case,不过不是你想要的目的
cout<<"Monday!"<<endl;break; // 当我输入M 时,输出为 Monday!\n Data ERROR!
case 'F':cout<<"Friday!"<<endl;break; // 输出类似 M 的输出
case 'S':cout<<"请输入第二个字母:"<<endl;
{
letter=getchar(); // 这个不要放if里面,下面的一样
getchar(); // 需要把你输入的换行吃掉
if(letter=='a') // 输入a
{
cout<<"Saturday!"<<endl;break;
}
else
{
if(letter=='u')
{
cout<<"Sunday!"<<endl;break;
}
else
{
cout<<"Data ERROR!"<<endl;break;
}
}
}
case 'T':cout<<"请输入第二个字母:"<<endl;
{
letter=getchar();
getchar();
if(letter=='h') // 输出 两次 Data ERROR!
{
cout<<"Thursday!"<<endl;break;
}
else
{
if(letter=='u') // 输出 Tuesday!\n Data ERROR!
{
cout<<"Tuesday!"<<endl;break;
}
else
{
cout<<"Data ERROR!"<<endl;break;
}
}
}
case 'W':cout<<"Wednesday!"<<endl;break; // 输出类似 M 的输出
default:cout<<"Data ERROR!"<<endl;break; // 当我输入 全不符合以上情况时,输出也是两个 Data ERROR!
}
}
return 0;
}
追问
非常感谢!!
我想继续问两个问题,那个case('n' ||'N')只能分开来判断了吗?向我想象的那种类似的用法不存在吗?
还有就是“吃掉换行的getchar();”,意思是我每次输入M或F 后敲的回车键就算是同时也输入了一个换行符吗?它也对这个回车的动作也进行了判断是吗?
追答
分开那就用两个case
case 'n':
...
break;
case 'N':
...
break;

你在哪里输入换行,后面如果还要输入,那么中间就必须把你输入的那个换行吃掉
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式