我的代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, Num10, Num11, Num12;
int StudentID;
Num1= 97 * 0.3;
Num2= 79 * 0.3;
Num3= 86 * 0.4;
Num4= 91 * 0.3;
Num5= 78 * 0.3;
Num6= 79 * 0.4;
Num7= 73 * 0.3;
Num8= 77 * 0.3;
Num9= 82 * 0.4;
Num10= Num1 + Num2 + Num3;
Num11= Num4 + Num5 + Num6;
Num12= Num7 + Num8 + Num9;
cout << "Please enter a Student ID "<< endl;
cin >> StudentID;
{
if (StudentID= 2046)
cout << "The grade for student " << StudentID << " is: " << Num10 << endl;
else if (StudentID= 7634)
cout << "The grade for student " << StudentID << " is: " << Num11 << endl;
else if (StudentID= 8120)
cout << "The grade for student " << StudentID << " is: " << Num12 << endl;
else if (StudentID != 2046, 7634, 8120)
cout << "I'm sorry that is not a valid StudentID " << endl;
}
return 0;
}
所需的输出(输入2046时):
学生证号:2046
学生成绩为87.2
收到的输出:
学生证号:2046
学生成绩为87.2
抱歉,这不是有效的ID
这可能是什么问题?抱歉,很明显我是一个新手程序员。
最佳答案
这种情况:
if (StudentID = 2046)
始终求值为
true
,因为StudentID = 2046
的表达式使用assignment operator,并且(整个表达式)始终隐式转换为true
。它不检查StudentID
是否等于2046
。为此,您需要使用==
的equal to运算符:if (StudentID == 2046)
这种情况:
if (StudentID != 2046, 7634, 8120)
是一个逗号分隔的表达式,其计算结果为最右边的值
8120
,该值可以隐式转换为true
。它不检查StudentID
是否不等于所有列出的数字。为此,您需要将值存储在std::vector
,std::array
或类似内容中,并检查其是否与任何匹配。