我正在尝试创建一个具有数字等级的int输入参数的函数,并返回带有 - ,a +或两者的字母等级。我知道如何在不使用引用参数的情况下执行此操作,但我正在尝试使用参数,但我遇到了一些困难。
一个输出参数是字母等级,第二个输出参数是+或 - (+如果错过了下一个等级1或2分,并且 - 如果只是等级。这就是我所拥有的:
#include <iostream>
using namespace std;
void letterGrade (int, float&, float&);
int main(){
int score;
float letter;
float sign;
cout << "Please input your grade (0-100): ";
cin >> score;
cout << endl;
if (score >=90 && score <=100){
letter == "Letter grade: A";
if (score == 90 ||
score == 91) {
sign = "-";
}
else if (score == 99 ||
score == 98) {
sign == "+";
}
else {
sign == " ";
}
}
letterGrade(score, letter, sign);
return 0;
}
如果有人能指出我仍然使用非常有用的参数的正确方向。我认为我的主要问题是我无法弄清楚你是如何在if语句中创建一个浮点数。
感谢您的帮助或建议您的帮助!
答案 0 :(得分:0)
您需要传入存储结果的位置。
因此,对当前代码的最小更改是传递对存储结果的字符串的附加引用。
void letterGrade (int, float&, float&, std::string&);
然后当你调用函数时:
std::string results;//results are stored in here
letterGrade(score, letter, sign, results);//results are passed by reference here
然后在letterGrade函数中,您希望更改返回的内容,而不是写入您传入的结果引用。
此外,您正在比较浮点数是否相等。鉴于浮动没有完全准确地存储在计算机中,这可能最终无法提供您想要的行为。如果您编译了所有启用了警告的代码,编译器会向您发出警告。在将来,编译所有警告是一个好主意,因为您将很快获得有关潜在问题的反馈。修复代码的一种快速方法是与小于和大于运算符进行比较。阅读本文以获取有关浮动的更多信息:https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf