我该如何修复此代码

时间:2016-04-08 01:30:29

标签: c++

这个代码有些错误。我输入“gender-m,age-20,tickets-10” 它给了我3200.它应该是3500.我不知道它有什么问题,你能帮我吗? iiiiiiiiiiiiiiiiiiii

#include<iostream>
using namespace std;
int main()
{
char gender;
int age, numTix, premium;

cout << "Enter your gender: ";
cin >> gender;

cout << "Enter your age: ";
cin >> age;

cout << "Tickets you have gotten: ";
cin >> numTix;

if (gender == 'M')
{
    if (age < 21)
    {
        premium = 1500 + 200 * numTix;
    }
    else if (age >= 21 && age < 30)
    {
        premium = 1200 + 100 * numTix;
    }
    else
    {
        premium = 1000 + 100 * numTix;
    }
}
else
{
    if (age < 21)
    {
        premium = 1200 + 200 * numTix;
    }
    else
    {
        premium = 1000 + 100 * numTix;
    }
    cout << "Your premium is $" << premium << endl;
}
    system("pause");

    return 0;
}

3 个答案:

答案 0 :(得分:1)

'm'与'M'不同。

答案 1 :(得分:1)

问题是字符大小写:您输入了m,但您的代码正在检查M,这是一个完全不同的字符。

有两种常见的解决方法:

  • 在比较前致电topuuer,即gender = toupper(gender);
  • mM进行比较,即if (gender == 'M' || gender == 'm')

答案 2 :(得分:1)

输入'M'而不是'm'。 Ascii值对于两者都不相同,因此正在执行的逻辑给出3200。