代码占用了我一半的输入

时间:2018-08-29 08:03:32

标签: c++ if-statement

我在编程课上学习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

我只是监督什么吗?我不知道怎么回事。

谢谢!

1 个答案:

答案 0 :(得分:3)

(category != 'A' || 'a')等-

我怀疑您的意思是“类别不是'A'或'a'”;尝试((category != 'A') && (category != 'a'))

提示:编译器正在评估两个语句category != 'A' OR 'a'

由于'a不为零,它将求值为true并弄乱您的逻辑

此外,您可以通过将category的大写字母与“ A”进行比较来简单地做到这一点,因此只需要一个比较即可。