我在做家庭作业时遇到问题。
除letter_grade
部分外,一切都按预期工作。我没有收到任何编译错误,但每次运行程序时,letter_grade
都是 -858993460。我知道这可能是我忽略的简单事情,但我碰壁了,几乎没有想法。
#include <iostream>
#include <string>
using namespace std;
// Class Declaration
class StudentRecord
{
string id;
int A, B, C, D, F, grade;
float avg, exam1, exam2;
public:
void input();
void output();
void average();
void letter_grade();
};
// Gathering data
void StudentRecord::input()
{
cout << " Please enter your student ID: ";
cin >> id;
cout << "n";
cout << " Enter your score for exam 1: ";
cin >> exam1;
cout << "n";
cout << " Enter your score for exam 2: ";
cin >> exam2;
}
// Calculations
void StudentRecord::average()
{
avg = (exam1 + exam2) / 2;
}
void StudentRecord::letter_grade()
{
if ((avg >= 90) && (avg <= 100))
grade = A;
else if ((avg >= 80) && (avg < 90))
grade = B;
else if ((avg >= 70) && (avg < 80))
grade = C;
else if ((avg >= 60) && (avg < 70))
grade = D;
else (avg < 60);
grade = F;
}
// Output Data
void StudentRecord::output()
{
cout << "nn";
cout << " *** Student Record ***" << endl;
cout << "n";
cout << " Student ID: " << id << endl;
cout << "n";
cout << " Grade for exam 1: " << exam1 << endl;
cout << "n";
cout << " Grade for exam 2: " << exam2 << endl;
cout << "n";
cout << " Average for the class: " << avg << endl;
cout << "n";
cout << " Letter grade for the class: " << grade << endl;
cout << "nn";
}
int main()
{
StudentRecord student;
student.input();
student.average();
student.letter_grade();
student.output();
system ("pause");
return 0;
}
你已经声明了名为 A
、B
、C
、D
等的整数变量。 这不是你在这里真正想要的。 您希望将grade
声明为 char
变量。 您希望将字符 'A'
、 'B'
等放在该char
变量中。
例:
grade = 'A';
这会将字符'A'
放入变量grade
中。
如果删除这些变量A
...F
,将grade
更改为char
类型,然后将if
-else
语句重写为grade
分配字母'A'
,'B'
等,这应该可以解决问题。
记下字符周围的单引号。 这些告诉C++引号之间的事物是一个字符常量。
您将"grade"值A,B,C,D,F定义为整数。 它们永远不会初始化,因此其中包含垃圾。 我想你的意图是打印出一个字母等级。 在这种情况下,您需要将值表示为字符串,而不是数字。 像这样:
char *A = "A";
char *B = "B";
etc.
变量的声明只是一个标签,用于标识内存位置(简化)。 因此,变量的名称与其值无关。