#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n;
char ans, cont;
ans = 'y';
while (true){
if (ans == 'y' || ans == 'Y'){
cout << "Enter a price:" << endl;
cin >> n;
n++;
cout << "do you want to continue? y/n" <<endl;
cin >> ans;
switch (n) {
//Vat Prices
case 1:
if (n<300)
cout << "You have to pay" << endl << n * 1.1 << " $" << endl <<endl;
break;
case 2:
if (n==300)
cout << "You have to pay" << endl << (n * 1.05) * 1.1 << " $" << endl <<endl;
break;
case 3:
if (n>=301 && n <= 500)
cout << "You have to pay" << endl << (n * 1.1) * 1.1 << " $" << endl <<endl;
break;
case 4:
if (n>= 501 && n <= 1000)
cout << "You have to pay" << endl << (n * 1.2)*1.1 << " $" << endl <<endl;
case 5:
if (n>1000)
cout << "You have to pay" << endl << (n * 1.3)* 1.1 << " $" << endl <<endl;
break;
}
}
}
return 0;
}
如果我把n
程序不通过交换机,它在一小时前工作正常,我不知道发生了什么
答案 0 :(得分:3)
你的缩进也没有帮助你。那个switch语句没有做你想象的那样。当你做这样的事情时:
switch (n) {
case 1:
//do stuff
break;
case 2:
//do stuff
break
default:
//do stuff
}
上述情况中的1和2是您正在接通的n的值,即当n == 1
时,它将执行第一种情况;当n == 2
它会做第二种情况时;否则它会执行默认阻止。
在if
语句的情况下,完成交换机没有为您做的任何事情。 1有效,因为当n == 1
条件n < 300
自动为真时。但是你所有的其他情况都依赖于n为1,2,3,4或5,因此,其他测试都不可能通过。
你真正想要的是:
if (n < 300) {
// do stuff
} else if (n == 300) {
// do stuff
} else if (n > 300) {
// do stuff
} etc...
答案 1 :(得分:1)
这不是交换机的工作原理。由于您是根据范围做出决策,因此您只需要一个简单的if / else if / else链。有关如何使用开关的更多信息,请阅读this。
答案 2 :(得分:0)
你可能想放 cout&lt;&lt; “你想继续吗?y / n”&lt;&gt; ANS;
在while
循环结束时。
此外,我还建议只是说出来
while (ans == 'y' || ans == 'Y')
然而,最大的问题是,只有当n == 1时,switch
语句才有效。摆脱整个switch
语句,只需使用if
s。
答案 3 :(得分:0)
如果输入的价格为switch
,则您的1, 2, 3, 4 or 5
语句只会出现问题。开关不能用于你如何使用它们,你最好使用if-else
控制结构。
if(n<300)
cout << "You have to pay" << endl << n * 1.1 << " $" << endl <<endl;
else if(n==300)
cout << "You have to pay" << endl << (n * 1.05) * 1.1 << " $" << endl <<endl;
else if(n <= 500)
cout << "You have to pay" << endl << (n * 1.1) * 1.1 << " $" << endl <<endl;
else if (<= 1000)
cout << "You have to pay" << endl << (n * 1.2)*1.1 << " $" << endl <<endl;
else
cout << "You have to pay" << endl << (n * 1.3)* 1.1 << " $" << endl <<endl;
此外,每次循环时,您只是覆盖n
变量。然后将其递增1,n++
。这没有多大意义。