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

#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 语句)
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
已改,看注前神脊释

#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;
}