c++程序 帮忙error C2046: illegal case

2024-12-25 22:04:49
推荐回答(4个)
回答1:

眼睛都找花了,终于才运行出来。

while ( ( code = cin.get() ) != 0) {这句不能运行,=是赋值,不是判断,判断应该是==。另外cin.get()获取的是char类型,转换成int后成很大的数了,而且没有赋值,所以switch里的case不能执行。

switch 后面没有括起来。
cout << "你的工资为:" << a2 << endl;执行时a2还没有定义,应改为a1

改后:

#include
int main()
{
int code; float a1, a2, a3, a4, t1, t2, t3, sales, geshu, b1, b2, b3 = 250, b4;

cout << "请输入工资代码:";
cin >> code;
cout<<"请再次输入工资代码:";
cin.get();

while ( ( code == (cin.get()-48) ) != 0) {
switch (code)
{
case 1:
cout << "请输入工作时间,单位周:" << endl;
cin >> t1;
cout << "请输入每周工资数:" << endl;
cin >> b1;
a1 = b1*t1;
cout << "你的工资为:" << a1 << endl;
break;

case 2:
cout << "请输入工作时间,单位小时:" << endl;
cin >> t2;
cout << "请输入每小时工资数:" << endl;
cin >> b2;
if (t2 <= 40)
a2 = b2*t2;

else
a2 = 1.5*b2*(t1-40.0) + 40*b2;
cout << "你的工资为:" << a2 << endl;
break;

case 3:
cout << "请输入工作时间,单位月:" << endl;
cin >> t3;
cout << "请输入每月销售额:" << endl;
cin >> sales;
a3 =(250 + sales*0.057)*t3;
cout << "你的工资为:" << a3 << endl;
break;

case 4: cout << "请输入生产产品件数,单位件:" << endl;
cin >> geshu;
cout << "请输入每件工资数:" << endl;
cin >> b4;
a4 = b4*geshu;
cout << "你的工资为:" << a4 << endl;
break;

default:
cout << "工资代码输入错误,请重新输入:" << endl;
break;

}

}
return 0;
}

回答2:

眼睛都找花了,终于才运行出来。
while((code=cin.get())!=0){这句不能运行,=是赋值,不是判断,判断应该是==。另外cin.get()获取的是char类型,转换成int后成很大的数了,而且没有赋值,所以switch里的case不能执行。
switch后面没有括起来。
cout<<"你的工资为:"<改后:
#include
intmain()
{
intcode;floata1,a2,a3,a4,t1,t2,t3,sales,geshu,b1,b2,b3=250,b4;
cout<<"请输入工资代码:";
cin>>code;
cout<<"请再次输入工资代码:";
cin.get();
while((code==(cin.get()-48))!=0){
switch(code)
{
case1:
cout<<"请输入工作时间,单位周:"<cin>>t1;
cout<<"请输入每周工资数:"<cin>>b1;
a1=b1*t1;
cout<<"你的工资为:"<break;
case2:
cout<<"请输入工作时间,单位小时:"<cin>>t2;
cout<<"请输入每小时工资数:"<cin>>b2;
if(t2<=40)
a2=b2*t2;
else
a2=1.5*b2*(t1-40.0)+40*b2;
cout<<"你的工资为:"<break;
case3:
cout<<"请输入工作时间,单位月:"<cin>>t3;
cout<<"请输入每月销售额:"<cin>>sales;
a3=(250+sales*0.057)*t3;
cout<<"你的工资为:"<break;
case4:cout<<"请输入生产产品件数,单位件:"<cin>>geshu;
cout<<"请输入每件工资数:"<cin>>b4;
a4=b4*geshu;
cout<<"你的工资为:"<break;
default:
cout<<"工资代码输入错误,请重新输入:"<break;
}
}
return0;
}

回答3:

swith语句结构是这样的
swith(表达式)
{
case a:
case b:
default:
}
你的少了大括号{ },另外,case后的语句比较复杂时最好也加{},避免歧义

回答4:

switch后面的语句必须要用{}括起来的
必须要将switch后面一直到default中的break;都括起来。