C++ C++;函数误差
所以在这项作业中,我需要询问评委的分数并计算平均分。还没有到计算部分,但是我已经完成了所有的get score函数。一切似乎都很好,它可以编译,但当我测试时它从不输出第一个cout,它在第一个cout给我一个断点,我不知道为什么。顺便说一下,如果有必要的话,可以使用Xcode。另外,我应该使用参考传递还是“返回分数1;”达到了这个目的 代码如下:C++ C++;函数误差,c++,C++,所以在这项作业中,我需要询问评委的分数并计算平均分。还没有到计算部分,但是我已经完成了所有的get score函数。一切似乎都很好,它可以编译,但当我测试时它从不输出第一个cout,它在第一个cout给我一个断点,我不知道为什么。顺便说一下,如果有必要的话,可以使用Xcode。另外,我应该使用参考传递还是“返回分数1;”达到了这个目的 代码如下: #include <iostream> using namespace std; void getJudgeData(double&a
#include <iostream>
using namespace std;
void getJudgeData(double&);
int main()
{
double score1, score2, score3, score4, score5;
getJudgeData(score1);
getJudgeData(score2);
getJudgeData(score3);
getJudgeData(score4);
getJudgeData(score5);
return 0;
}
void getJudgeData(double& score)
{
cout << "Submit your score: ";
cin >> score;
while (score < 0.0 || score > 10.0)
{
cout << "Please re-enter a score between 0 - 10" << endl;
cin >> score;
}
}
#包括
使用名称空间std;
无效判决数据(双倍&);
int main()
{
得双1分,得2分,得3分,得4分,得5分;
getJudgeData(得分1);
getJudgeData(2分);
getJudgeData(3分);
getJudgeData(4分);
getJudgeData(得5分);
返回0;
}
无效判定数据(双倍和分数)
{
cout>评分;
而(分数<0.0 | |分数>10.0)
{
cout评分;
}
}
您实际上没有从函数中读取任何内容
建议的备选方案:
double getJudgeData()
{
double score
cout << "Submit your score:";
cin >> score;
while (score < 0.0 || score > 10.0)
{
cout << "Please re-enter a score between 0 - 10" << endl;
cin >> score;
}
return score;
}
int main()
{
double score1, score2, score3, score4, score5;
double highest, lowest;
score1 = getJudgeData();
score2 = getJudgeData();
...
double getJudgeData()
{
双倍得分
cout>评分;
而(分数<0.0 | |分数>10.0)
{
cout评分;
}
返回分数;
}
int main()
{
得双1分,得2分,得3分,得4分,得5分;
双倍最高,最低;
分数1=获得判断数据();
分数2=获得判断数据();
...
使用g++编译时,我可以看到输出。您可以尝试在cout(即cout)之后使用flush
我应该使用参考传递吗
在这段代码中,我认为您最好使用passbyreference
这些调用与您的声明不匹配
getJudgeData1(score1);
getJudgeData2(score2);
getJudgeData3(score3);
...
您的声明需要在formal参数中引用,如下所示:
// ------------------------v
double getJudgeData1(double& score1);
double getJudgeData2(double& score2);
double getJudgeData3(double& score3);
...
现在,您不再需要返回值:
void getJudgeData1(double& score1);
void getJudgeData2(double& score2);
void getJudgeData3(double& score3);
...
如果你能回忆起形式参数和实际参数的区别,你只需要一个getJudgeData(…)函数
祝你好运,你应该改变两件事
coutWhy你有五个函数做完全相同的事情吗?return score1;
可以工作,但是你在哪里存储返回的值呢?请学习使用数组。如果不是评委,而是1000人的投票。你会为每个做完全相同事情的人创建1000个不同的函数吗?@PaulMcKenzie we我还没有学会它们,所以我绝对不能使用它们。根据你的编辑,你似乎已经解决了你的问题,可能是在下面一个或多个答案的帮助下。你应该对帮助过的答案进行投票,并接受最有帮助的答案。你不应该编辑你的问题来消除给你带来麻烦的代码是的,它在cpp.sh中对我有效,但在Xcode上不起作用。它给了我这个“(lldb)”我编辑了原始帖子。所以对于第一个函数,我用score1调用它,它将其发送进来。但是我使用score作为双精度,用&符号,它将score发送回来,并用该值替换score1。对吗?@HOAX-绝对没有必要“通过引用传递”除非你同时在函数内部读写变量。在这种情况下,你不是。你只是想得到一个值。所以最简单/最干净/最有效的方法是将你的函数视为一个函数…并简单地返回“double”。回答你的问题:是的,返回score1实现了这个目的。我编辑了原始帖子。所以对于第一个函数,我用score1调用它,它将它发送进来。但是我使用score作为双精度,用&符号,它将score发送回来,并用该值替换score1。正确吗?是的,这是正确的更改。如果您只想将这些值输出到控制台,请使用int-ma中的std::cout但是如果你想用这些值来计算一些东西,你也可以这样做。通过引用传递基本上反映了函数内部发生的任何事情。在你的例子中,在getJudgeData1()内。
void getJudgeData1(double& score1);
void getJudgeData2(double& score2);
void getJudgeData3(double& score3);
...