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

时间:2013-11-11 02:17:05

标签: c++ class if-statement

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

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

2 个答案:

答案 0 :(得分:1)

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

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

相关问题