为什么 mycourses[i].getGrade() 没有 return 任何东西(C++)?
Why mycourses[i].getGrade() doesn't return anything (C++)?
我遇到问题,头文件中的 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();
}
您的代码从未将 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
,它所做的是填充一个名为 'C' 的 局部变量 ,其值基于 totalMarks,然后立即忘记它。我想你想要的更像这样:
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;
}
};
我遇到问题,头文件中的 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();
}
您的代码从未将 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
,它所做的是填充一个名为 'C' 的 局部变量 ,其值基于 totalMarks,然后立即忘记它。我想你想要的更像这样:
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;
}
};