创建C++类时遇到 if/else 问题

Having if/else trouble while creating a C++ class

本文关键字:else 问题 if 遇到 C++ 创建      更新时间:2023-10-16

我在做家庭作业时遇到问题。

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;
}

你已经声明了名为 ABCD 等的整数变量。 这不是你在这里真正想要的。 您希望将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.

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