分配/计算学生成绩的循环(c ++)

时间:2017-11-16 23:11:21

标签: c++ loops average calculator

我的节目很难,我真的很感激任何帮助。请原谅我的错误代码,我是新的。

ToString()

我不太了解循环,或者它们是如何工作的,所以我为我的循环写下的内容只是由我们的教授给我们的,所以如果有人可以请解释/解剖它,那么我会非常感激它!我想知道如何做到这一点,而不仅仅是给我答案。

所以,我不确定为什么我的程序无法正常执行。我列出了呼叫功能,所有功能似乎都是正确的。我的循环也在主要内部,但我不知道他们为什么不工作。另外,当我运行它时,我没有任何错误。

它似乎停留在输入名字并输入姓氏部分,但我不确定为什么。再说一遍,我真的很感激任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

你的代码充满了bug,但我将逐步引导你完成它。

首先,我们需要检查每个函数的作用:

1- string getFirstName();提示用户输入他/她的名字。的工作

2- string getLastName();提示用户输入他/她的姓氏。的工作

3- int getScores();提示用户输入他/她的分数。的工作

4- double calculateSum(double sum, double score);添加总和和分数。您在实现该功能时所做的工作:

{
sum+=score;
return sum;
}

只有通过引用传递变量sum才有效。现在没有必要进入这个。更简单的方法是这样做:

{
double add = sum + score;
return add;
}

接下来:

5- double calculateAvg(double avg, double sum);sum除以10以获得平均值,不需要将avg作为参数传递,因为我们将返回该参数。< / p>

该函数应写为double calculateAvg(double sum);

6-同样char calculateGrade(double score, char grade);。没有必要通过grade。它将写成char calculateGrade(double score);

7-上一篇:void displayResults(string firstname, string lastname, double avg, char grade); 工作

好的,现在转到main()函数: 您需要声明所有变量,如此

string firstname;
string lastname;
double score;
double sum ;
double avg ;
char grade;

不需要在这里使用我们的函数,我们将在while循环中使用它们。

进入while循环:

  • 没有必要将cin>>与任何变量一起使用,因为这就是我们的功能为我们所做的。

  • 当用户输入done作为他/她的名字退出循环时。

  • 否则,创建一个for循环,迭代10次,要求用户输入他/她的分数,将此分数添加到总和中,然后在for循环结束后计算两者averagegrade并打印出来。

您的代码的最终工作版本应该如下所示,如果您还有任何其他问题,请不要犹豫。

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

using namespace std;
//functions
string getFirstName();
string getLastName();
int getScores();
double calculateSum(double sum, double score);
double calculateAvg(double sum);
char calculateGrade(double score);
void displayResults(string firstname, string lastname, double avg, char grade);

int main(){
//variables
string firstname;
string lastname;
double score;
double sum ;
double avg ;
char grade;

while (true)
{
    firstname = getFirstName();
    if (firstname == "done")
        break;
    lastname = getLastName();
    sum=0.0;
        for (int i = 0; i<10; i++)
        {
         score = getScores();
         sum = calculateSum(sum, score); //sum = sum+score;
        }
         avg = calculateAvg(sum);
        grade = calculateGrade(avg);
        displayResults(firstname,lastname,avg,grade);
     }
    return 0; 
}

string getFirstName()
{
string firstname;
cout<<"Enter first name: ";
cin >>firstname;
return firstname;
}

string getLastName()
{
string lastname;
cout<<"Enter last name: ";
cin >>lastname;
return lastname;
}

int getScores()
{
int score;
cout <<"Input score: ";
cin >>score;
return score;
}

double calculateSum(double sum, double score)
{
int add = sum + score;
return add;
}

double calculateAvg(double sum)
{
double avg = sum/10.0;
return avg;
}

char calculateGrade(double score)
{
char grade;
if (score >= 90) 
grade = 'A';
else if (score >=80) 
grade = 'B';
else if (score >=70)
grade = 'C';
else if (score >=60) 
grade = 'D';
else 
grade = 'F';
return grade;
}


void displayResults(string firstname, string lastname, double avg, char grade)
{
cout<<firstname<< lastname<<" - Average : "<<avg << " - Grade : "<< grade<<endl;
}

答案 1 :(得分:0)

循环只是一遍又一遍地执行同一段代码的一种方式。通过将代码放入循环中,您无需复制和粘贴它。在一次循环中发生的任何变量在下一次运行期间仍然存在。

在您的代码中:

for (int i = 0; i<10; i++)
{ 
   ...
}

是你的循环。 &#34; ...&#34;是一遍又一遍地执行的代码。

需要通过循环询问的一个重要问题是:循环如何知道在退出代码之前运行代码的次数?

这就是:

int i = 0; i<10; i++

是关于。虽然它看起来很奇怪但它实际上是3个单独的命令命令由分号&#39;;&#39;

分隔
  1. int i = 0
  2. I&LT; 10
  3. 我+ +
  4. 命令(1)初始化循环。您只需将变量i(整数)设置为0.

    Command(2)条件继续循环。如果command(2) true ,则循环将执行(并再次执行)。你的代码是在我小于10时执行循环。

    每个循环执行一次命令(3)计算。我们在Command(1)中知道你将i设置为0.我们在Command(2)中知道循环将在i小于10时运行.0小于10,因此循环将永远执行。我们不想要这个,所以在Command(3)中我们增加了i。我们计算运行循环的次数。

    所以你的循环将连续运行10次,其中的代码然后退出。