C++ 在条件语句中接受和使用字符

C++ 在条件语句中接受和使用字符,c++,C++,您好,我目前正在回顾我的基本编程,在这段代码中,我试图获得3等级的平均值,但它不接受字符作为输入,并在输入Y或Y后跳到程序的末尾。任何帮助都将不胜感激:) #包括 使用名称空间std; int g1、g2、g3; 平均积分=(g1+g2+g3)/3; int main() { cout>a; 如果((a='Y'&&a='Y')) { cout>g1>>g2>>g3; cout此处: 您需要在此处使用|运算符,而不是&&: 您需要使用|操作符,而不是&首先,在if条件中使用|而不是和。例如: if

您好,我目前正在回顾我的基本编程,在这段代码中,我试图获得
3
等级的平均值,但它不接受字符作为输入,并在输入
Y
Y
后跳到程序的末尾。任何帮助都将不胜感激:)

#包括
使用名称空间std;
int g1、g2、g3;
平均积分=(g1+g2+g3)/3;
int main()
{
cout>a;
如果((a='Y'&&a='Y'))
{
cout>g1>>g2>>g3;
cout此处:

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


您需要使用
|
操作符,而不是
&

首先,在
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;
}
if((a=='Y'| | a=='Y'))
{
cout>g1>>g2>>g3;

AVG=(g1+g2+g3)/3;//首先,在
条件下使用
|
而不是
中的
&&
。例如:

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;
}
if((a=='Y'| | a=='Y'))
{
cout>g1>>g2>>g3;

AVG=(g1+g2+g3)/3;//首先,变量
AVG
声明为

int AVG = (g1+g2+g3)/3;
在全局范围中,它始终等于0,因为它在程序中没有更改

无需在全局范围内声明这些变量AVG、g1、g2、g3。每个变量都应在使用点声明

同样,一个对象不能同时等于两个不同的值。所以这个条件

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;
}

首先,变量
AVG
声明如下

int AVG = (g1+g2+g3)/3;
在全局范围中,它始终等于0,因为它在程序中没有更改

无需在全局范围内声明这些变量AVG、g1、g2、g3。每个变量都应在使用点声明

同样,一个对象不能同时等于两个不同的值。所以这个条件

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;
}

稍微考虑一下你的情况,
a
的值不能同时是
'Y'
'Y'
。也使用
|
而不是
&
(但与你的问题无关)你有一个坏习惯:全局变量:不需要<代码> G1 < /C> >代码> G3>代码>或代码> avg < /C> >全局,更糟的是,在代码< G1>代码> >代码> G2<代码>和<代码> G3之前,计算<代码> AVG<代码>的值。计算不可追溯性进行。C++不是声明性的。编程语言。一些语言可以允许你声明“代码> AVG < /CUT>作为代码的平均值,代码> >代码> G3。但是C++不工作。你只计算一些东西并存储在<代码> AVG。谢谢你的纠正:)我真的有模糊的基础。我很高兴这样的社区存在。关于您的病情,请稍等片刻。
a
的值不能同时为
'Y'
'Y'
。也使用
|
而不是
&&
(但与您的问题无关)你有一个坏习惯:全局变量:不需要<代码> G1 < /C> >代码> G3>代码>或代码> avg < /C> >全局,更糟的是,在代码< G1>代码> >代码> G2<代码>和<代码> G3之前,计算<代码> AVG<代码>的值。计算不可追溯性进行。C++不是声明性的。编程语言。有些语言可以允许你声明“代码> AVG < /CUT>作为代码的平均值,代码> >代码> G3。但是C++不工作。你只计算一些东西并将其存储在<代码> AVG。谢谢你的纠正:)我真的有模糊的基础。我很高兴这样的社区存在。@ SamD事实上,它只解决了问题的一部分。你的平均值将始终计算为
0
@SamD实际上它只解决了问题的一部分。你的平均值将始终计算为
0
。如果你提醒OP注意整数除法的陷阱,你会投票吗?@Bathsheba谢谢你,先生。我已经添加了。如果你提醒t,你会投票吗“他谈到了整数除法的陷阱。”芭丝谢芭,谢谢你,先生。我已经补充了。