在条件声明中接受和使用char

时间:2017-10-17 09:28:05

标签: c++

您好我正在查看我的基本编程,在此代码中我试图获得3等级的平均值,但它不接受字符作为输入并跳转到程序的结尾输入Yy后。任何帮助将不胜感激:))

#include <iostream>
using namespace std;

int g1,g2,g3;
int AVG = (g1+g2+g3)/3;

int main ()
{
    cout << " Hi! Do you want to calculate the average? (Y/N)?";
    char a;
    cin >> a;
    if ((a == 'Y' && a == 'y'))
     {
       cout << "Enter three grades \n";
       cin >> g1 >> g2 >> g3;
       cout << "Your average grade is : " << AVG;
     }
    else 
     {
       cout << "THANK YOU!";
     }
  return 0;
}

3 个答案:

答案 0 :(得分:3)

首先,在||条件中使用&&代替if。喜欢:

if ((a == 'Y' || a == 'y'))

此外,在获得用户输入后进行平均操作。喜欢:

if ((a == 'Y' || a == 'y'))
{
       cout << "Enter three grades \n";
       cin >> g1 >> g2 >> g3;
       AVG = (g1+g2+g3)/3; // <========= here
       cout << "Your average grade is : " << AVG;
}

在C和C ++中,在分割两个整数时切断十进制扩展。自5 / 2 = 2.5起,它会切断.5并仅打印2

  

[C ++ 11:5.6 / 4]:二进制/运算符产生商,而   binary %运算符从第一个除法中产生余数   表达由第二个。如果/%的第二个操作数为零   行为未定义。 对于整数操作数,/运算符产生   代数商与任何小数部分丢弃; 如果商   a / b可以在结果类型中表示,(a/b)*b + a%b是相等的   到了。

答案 1 :(得分:1)

下面:

if ((a == 'Y' && a == 'y'))

您需要使用||运算符,而不是&&

答案 2 :(得分:1)

对于初学者,变量AVG声明为

int AVG = (g1+g2+g3)/3;
全局范围中的

始终等于0,因为它在程序中没有更改。

无需在全局范围内声明这些变量AVG,g1,g2,g3。每个变量都应在使用它的位置声明。

对象也不能同时与两个不同的值相等。所以这个条件

if ((a == 'Y' && a == 'y'))

错了。你的意思是(我已经沉迷于删除多余的括号)

if (a == 'Y' || a == 'y')

考虑到所有这些因素,程序可以通过以下方式查找

#include <iostream>

int main() 
{
    while ( true )
    {
        std::cout << "Hi! Do you want to calculate the average (Y/N)? ";

        char c;

        if ( not ( std::cin >> c ) or not ( c == 'Y' || c == 'y' ) ) 
        {
            std::cout << "THANK YOU!" << std::endl;
            break;
        }           

        std::cout << "\nEnter three grades: ";

        int x, y, z;

        std::cin >> x >> y >> z;

        std::cout << "Your average grade is : " << ( x + y + z ) / 3  << "\n\n"; 
    }

    return 0;
}

它的输出可能看起来像

Hi! Do you want to calculate the average (Y/N)? y
Enter three grades: 1 5 6 
Your average grade is : 4

Hi! Do you want to calculate the average (Y/N)? n
THANK YOU!