我在完成家庭作业时遇到了麻烦。
除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 << "\n\n";
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 << "\n\n";
}
int main()
{
StudentRecord student;
student.input();
student.average();
student.letter_grade();
student.output();
system ("pause");
return 0;
}
答案 0 :(得分:1)
你已经声明了名为A
,B
,C
,D
等的整数变量。这不是你想要的。您想将grade
声明为char
变量。您希望将字符'A'
,'B'
等放在char
变量中。
示例:
grade = 'A';
将字符'A'
放入变量grade
。
如果删除这些变量A
... F
,请将grade
更改为char
类型,然后重写if
- {{ 1}}语句到指定的字母else
,'A'
等等到'B'
,这应该可以解决问题。
记下字符周围的单引号。那些告诉C ++引号之间的东西是一个字符常量。
答案 1 :(得分:0)
您将“等级”值A,B,C,D,F定义为整数。它们从未被初始化,因此包含垃圾。我认为你打算打印出一个字母等级。在这种情况下,您需要将值表示为字符串,而不是数字。像这样:
char *A = "A";
char *B = "B";
etc.
变量的声明只是一个标识内存位置的标签(简化)。因此,变量的名称与其值无关。