【问题标题】:Why mycourses[i].getGrade() doesn't return anything (C++)?为什么 mycourses[i].getGrade() 不返回任何内容(C++)?
【发布时间】:2016-10-12 02:20:32
【问题描述】:

我遇到了头文件中的 getGrade() 函数没有根据用户在主文件中输入的标记返回字母等级的问题。当我编译运行程序时,没有根据输入的分数显示字母等级。

头文件(course.h)

#include <iostream>
#include <string>

using namespace std;

class Course {
private:
    int totalMarks;
    char grade;


public:
    void marksInfo(int tm)
    {
        totalMarks = tm;
    }

    int getMarks(void)
    {
        return totalMarks;
    }

    void setGrade(char c)
    {
        if(totalMarks <= 39)
            c = 'E';

        if(totalMarks >= 40 && totalMarks <= 49)
            c = 'D';

        if(totalMarks >= 50 && totalMarks <= 64)
            c = 'C'
    }

    char getGrade(void)
    {
        return grade;
    }
 };

主文件

 #include <iostream>
 #include <string>
 #include "course.h"

 using namespace std;

 int main()
   {
      int tm;

      Course course[5];

      for (int i = 0; i < 5; i++)
      {
          cout << "Subject #" << i+1 << endl;

          cout << "Total Marks #" << i+1 << ": ";
          cin >> tm;

          course[i].marksInfo(tm);

          cout << endl;

          course[i].getGrade();
      }

      cout << "Grade: " << course[0].getGrade();
  }

【问题讨论】:

  • 你不叫'setGrade'那为什么会呢?
  • 您必须先使用setGrade,然后才能使用getGrade
  • 谢谢你们...现在它显示字母等级

标签: c++ function header return-value main


【解决方案1】:

您的代码从不将grade 设置为 任何东西。您还有一个待解决的问题:

void setGrade(char c)
{
    if(totalMarks <= 39)
        c = 'E';

    if(totalMarks >= 40 && totalMarks <= 49)
        c = 'D';

    if(totalMarks >= 50 && totalMarks <= 64)
        c = 'C'
}

这个函数永远不会改变grade,它所做的是用一个基于totalMarks 的值填充一个名为“C”的局部变量,然后立即忘记它。我认为你想要的更像是这样的:

class Course {
private:
    int totalMarks;
    char grade;


public:
    void marksInfo(int tm)
    {
        totalMarks = tm;

        if(totalMarks <= 39)
            grade = 'E';
        else if(totalMarks >= 40 && totalMarks <= 49)
            grade = 'D';
        else if(totalMarks >= 50 && totalMarks <= 64)
            grade = 'C';
        else if(totalMarks >= 65 && totalMarks <= 84)
            grade = 'B';
        else
            grade = 'A';
    }

    int getMarks(void)
    {
        return totalMarks;
    }

    char getGrade(void)
    {
        return grade;
    }
 };

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 2018-01-24
    • 1970-01-01
    • 2016-02-19
    • 2016-11-26
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多