我正在网上介绍C ++,这对我来说太快了。我掌握了一般概念,但主要是它。到目前为止,我已经写了大约5个程序,而且我在逻辑上解决这个问题时遇到了问题,并且有两个功能需要使用,这是我以前没见过的。任何帮助和方向都会很棒。这是书中的问题:
编写一个计算一组考试成绩平均值的程序, 其中组中的最低分数被删除。它应该使用 以下功能:
void getScore()
:应该询问用户测试分数,在regerence参数变量中将其弄疼,然后对其进行验证。这个功能应该是 对于要输入的五个分数中的每一个,由 main 调用一次。
void calcAverage()
:应计算并显示四个最高分的平均值。这个功能应该只召唤一次main
,应该通过五个考试成绩。- 醇>
int findLowest()
:应找到并返回传递给它的五个分数中的最低分。它应该被称为calcAverage
,它使用 用于确定五个分数中的哪一个下降。输入验证:不接受低于0或大于100的测试分数。
到目前为止,这是我所拥有的,我知道它看起来很糟糕,但是我越乱,我做的伤害越多。我使用calcAverage标头和void getScore原型后的另一个时出错,但我不知道为什么,我肯定不知道如何修复它们。在我使用cin.get获得测试分数之后,我不明白他们究竟去哪里或者如何从他们的藏身处召唤他们。我在书中完全错过了这个概念。我知道使用&&运算符我可以使用设置限制的语句 (0> =&&< = 100)但我不知道放在哪里。就像我说的那样,任何帮助以及对原因的任何解释都会有很大的帮助。我正在使用的这本书是由Tony Gaddis的C ++第7版开始的,如果这有帮助的话。
//This program calculates the average of a group of test scores
//and removes the lowest score.
#include <iostream>
using namespace std;
void getScore(int &, int &, int &, int &, int &)
void calcAverage(score1, score2, score3, score4)
void findLowest(num)
int main()
{
int num1;
int num2;
int num3;
int num4;
int num5;
int score1;
int score2;
int score3;
int score4;
int findLowest();
calcAverage(score1, score2, score3, score4);
getScore(num1, num2, num3, num4, num5);
cout << "Enter 5 Test Scores" << endl;
cin.get ();
void getScore(int &calcAverage, int &num1, int &num2, int &num3, int &num4, int &num5)
{
void findLowest(num1, num2, num3, num4, num5)
void calcAverage((score1 &+ score2 + score3 + score4)/4);
{
calcAverage = (score1 + score2 + score3 + score4)/4;
}
}
cout << "The average is " << calcAverage << endl;
cout << calcAverage << "." << endl;
return 0;
}
答案 0 :(得分:1)
正如我从描述中所理解的那样, segerence参数变量表示一个数组。所以不是定义(为什么只有四个变量?)
int score1;
int score2;
int score3;
int score4;
你应该声明一个数组。例如
const int N = 5;
int scores[N];
同样,从赋值函数开始,getScore应声明为
void getScore( int scores[], int i );
对于数组的每个元素,您应该调用此函数,将数组和数组的下一个元素的索引传递给它。
相应的函数calcAverage和findLowest应该按照以下方式进行decalred
void calcAverage( int scores[], int n );
int findLowest( int scores[], int n );
其中第二个参数指定数组中元素的数量。
请注意,您可能无法在另一个函数中定义一个函数。所有功能都应在使用前声明。
函数main可以通过以下方式定义
int main()
{
const int N = 5;
int scores[N];
for ( int i = 0; i < N; i++ ) getScore( scores, i );
calcAverage( scores, N );
return 0;
}
编辑:对不起。我将 regerence 一词视为序列我认为您的意思是参考
在这种情况下,您确实应该声明五个单独的变量。
因此函数声明将显示为
void getScore( int &score );
void calcAverage( int score1, int score2, int score3, int score4, int score5 );
int findLowest( int score1, int score2, int score3, int score4, int score5 );
和main将显示为
int main()
{
int score1;
int score2;
int score3;
int score4;
int score5;
getScore( score1 );
getScore( score2 );
getScore( score3 );
getScore( score4 );
getScore( score5 );
calcAverage( score1, score2, score3, score4, score5 );
return 0;
}
我将展示函数findLowest
的定义int findLowest( int score1, int score2, int score3, int score4, int score5 )
{
int lowest = score1;
if ( score2 < lowest ) lowest = score2;
if ( score3 < lowest ) lowest = score3;
if ( score4 < lowest ) lowest = score4;
if ( score5 < lowest ) lowest = score5;
return lowest;
}
当然,编写
会更简单int findLowest( int score1, int score2, int score3, int score4, int score5 )
{
return std::min( { score1, score2, score3, score4, score5 } );
}
如果您了解标准算法。 :)
答案 1 :(得分:0)
您需要考虑该程序要求您执行的操作,然后逐步构建它,而不是一次性构建它。
从这开始:
#include <iostream>
using namespace std;
int main() {
}
然后一次添加小块。想想每个功能的用途。
例如,从getScore()函数开始。您目前正在尝试将代码用于询问程序中的分数而不是getScore函数。说明说您编写了该函数,然后每次需要获取数字时都使用该函数。
您应该将所有函数声明放在main函数之上。您将分数作为参数,但请记住参数是您放入函数的参数。看起来应该更像这样:
#include <iostream>
using namespace std;
int getScore(){
int v; //Create temporary variable v
cout << "Enter a score: " << ; //ask user for score
cin >> v ; // user enters score and it is stored in v
cout << endl; //new line for pretty formatting
return v; //function returns v
}
int main() {
int num1 = getScore(); //Everytime you use the function it will ask for a number.
int num2 = getScore();
}
此示例将存储前两个数字。然后,您可以添加代码以使用cout打印数字。然后编译,修复任何错误,现在你知道你的部分代码是有效的。然后转到另一个功能。这种方法使程序不那么令人生畏。