我在编程课上学习C ++。我们必须处理if和else语句问题。下面是我的代码,我试图弄清楚为什么将它减半。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int age;
double price;
char category;
double finalPrice;
cin >> price;
cin >> age;
cin >> category;
if (age <= 0) {
cout << "Wrong input";
}
if (age > 0 && age <= 5) {
if (category != 'A' || 'a') {
finalPrice = price - (( price * 100)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
else if(category == 'A' || 'a') {
finalPrice = price - (( price * 0)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
}
if (age > 5 && age <= 12) {
if (category != 'B' || 'b') {
finalPrice = price - (( price * 50)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
else if(category == 'B' || 'b') {
finalPrice = price - (( price * 0)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
}
if (age > 12 && age <= 26) {
if (category != 'C' || 'c') {
finalPrice = price - (( price * 60)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
else if(category == 'C' || 'c') {
finalPrice = price - (( price * 0)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
}
if (age > 26 && age <= 60) {
if (category != 'D' || 'd') {
finalPrice = price - (( price * 70)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
else if(category == 'D' || 'd') {
finalPrice = price - (( price * 0)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
}
if (age > 60) {
if (category != 'E' || 'e') {
finalPrice = price - (( price * 80)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
else if(category == 'E' || 'e') {
finalPrice = price - (( price * 0)/100);
cout << fixed;
cout << setprecision(2) << finalPrice;
}
}
return 0;
}
上面是我分配学校作业的代码。
当我输入值 14.56 25 C 我得到的输出为 5.8.2
但是我的预期输出应该只是 14.56
我只是监督什么吗?我不知道怎么回事。
谢谢!
答案 0 :(得分:3)
(category != 'A' || 'a')
等-
我怀疑您的意思是“类别不是'A'或'a'”;尝试((category != 'A') && (category != 'a'))
提示:编译器正在评估两个语句category != 'A'
OR 'a'
。
由于'a
不为零,它将求值为true
并弄乱您的逻辑
此外,您可以通过将category
的大写字母与“ A”进行比较来简单地做到这一点,因此只需要一个比较即可。