0

我在做家庭作业时遇到了麻烦。

除了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;
}
4

2 回答 2

1

您已经声明了名为A, B, C,D等的整数变量。这并不是您真正想要的。您想声明gradechar变量。您想将字符'A','B'等放入该char变量中。

例子:

grade = 'A';

这会将字符'A'放入变量grade中。

如果您删除这些变量A... F,更改grade为 type char,然后将您的if-else语句重写为分配的字母'A','B'grade,这应该可以解决问题。

注意字符周围的那些单引号。那些告诉 C++ 引号之间的东西是一个字符常量。

于 2013-11-11T02:20:56.553 回答
0

您将“等级”值 A,B,C,D,F 定义为整数。它们从未被初始化,因此在其中包含垃圾。我认为您的意图是打印出字母等级。在这种情况下,您需要将值表示为字符串,而不是数字。像这样的东西:

char *A = "A";
char *B = "B";
etc.

变量的声明只是一个标识内存位置的标签(简化)。因此,变量的名称与其值无关。

于 2013-11-11T02:21:47.133 回答