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,你会投票吗“他谈到了整数除法的陷阱。”芭丝谢芭,谢谢你,先生。我已经补充了。