我的代码:

#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::vectorstd::array或类似内容中,并检查其是否与任何匹配。

10-08 08:19