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

C++ 分配/计算学生成绩的循环(c+;+;),c++,loops,average,calculator,C++,Loops,Average,Calculator,我的程序有点困难,我真的很感激任何帮助。原谅我的错误代码,我是新来的 #include <iostream> #include <string.h> using namespace std; //functions string getFirstName(); string getLastName(); int getScores(); double calculateSum(double sum, double score); double calculateAvg(

我的程序有点困难,我真的很感激任何帮助。原谅我的错误代码,我是新来的

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

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

int main(){
//variables
string firstname;
string lastname;
int score;
double sum;
double avg;
char grade;
//functions and parameters
firstname = getFirstName();
lastname = getLastName();
score = getScores();
sum = calculateSum(sum, score);
avg = calculateAvg(avg, sum);
grade = calculateGrade(score, grade);
displayResults(firstname,lastname,avg,grade);


while (true)
{
firstname = getFirstName();
cin >> firstname; 
if (firstname == "done")break;
lastname = getLastName();
cin >> lastname;
sum=0.0;

  for (int i = 0; i<10; i++)
    {
        double score;
     cin >> score;
     sum - calculateSum(sum, score);
      sum+=score;
      //sum = sum+score;
    }
     avg = calculateAvg(avg, sum);
  avg = sum/10.0;
    displayResults(firstname,lastname,avg,grade);
 }
return 0; 
}

string getFirstName()
{
string firstname;
cout<<"Enter first name: " << endl;
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)
{
sum+=score;
return sum;
}

double calculateAvg(double avg, double sum)
{
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<<": "<<avg << grade;
}
#包括
#包括
使用名称空间std;
//功能
字符串getFirstName();
字符串getLastName();
int getScores();
双重计算(双重总和,双重分数);
双重计算平均值(双重平均值,双重总和);
字符计算等级(双倍分数,字符等级);
无效显示结果(字符串名、字符串名、双平均值、字符
等级);
int main(){
//变数
字符串名;
字符串lastname;
智力得分;
双和;
双平均值;
煤焦品位;
//函数和参数
firstname=getFirstName();
lastname=getLastName();
score=getScores();
总和=计算总和(总和,分数);
平均值=计算平均值(平均值,总和);
等级=计算等级(分数、等级);
显示结果(名字、姓氏、平均值、等级);
while(true)
{
firstname=getFirstName();
cin>>名字;
如果(firstname==“完成”)中断;
lastname=getLastName();
cin>>姓氏;
总和=0.0;
对于(int i=0;i>score;
总和-计算总和(总和,分数);
总和+=分数;
//总和=总和+分数;
}
平均值=计算平均值(平均值,总和);
平均值=总和/10.0;
显示结果(名字、姓氏、平均值、等级);
}
返回0;
}
字符串getFirstName()
{
字符串名;
cout=90)
等级=‘A’;
否则如果(分数>=80)
等级=‘B’;
否则如果(分数>=70)
等级=‘C’;
否则如果(分数>=60)
等级='D';
其他的
等级=‘F’;
返回等级;
}
无效显示结果(字符串名、字符串名、双平均值、字符
(等级)
{

cout您的代码充满了bug,但我将一步一步地引导您完成它

首先,我们需要检查每个函数的功能:

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

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

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

4-
double calculateSum(双倍和,双倍分);
将总和和分数相加。您在实现函数时做了什么:

{
sum+=score;
return sum;
}
只有通过引用传递变量
sum
时才有效。现在无需进行此操作。更简单的方法是:

{
double add = sum + score;
return add;
}
下一步:

5-
double calculateAvg(double avg,double sum);
sum
除以
10
得到平均值,无需将
avg
作为参数传递,因为我们将返回该参数

函数应写成
double calculateAvg(double sum);

6-同样的方法是
char calculateGrade(双倍分数,char等级);
。不需要通过
grade
。它将被写为
char calculateGrade(双倍分数);

7-最后一个:
无效显示结果(字符串名、字符串名、双平均值、字符等级);
正在工作


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

string firstname;
string lastname;
double score;
double sum ;
double avg ;
char grade;
这里不需要使用我们的函数,我们将在
while
循环中使用它们

进入
while
循环:

  • 没有必要对任何变量使用
    cin>
    ,因为这就是我们的函数为我们所做的

  • 当用户输入
    done
    作为其名字时,退出循环

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


代码的最终工作版本应该是这样的,如果您还有其他问题,请不要犹豫

#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;
}
#包括
#包括
使用名称空间std;
//功能
字符串getFirstName();
字符串getLastName();
int getScores();
双重计算(双重总和,双重分数);
双重计算avg(双重和);
char calculateGrade(双倍分数);
无效显示结果(字符串名、字符串名、双平均值、字符等级);
int main(){
//变数
字符串名;
字符串lastname;
双倍得分;
双和;
双平均值;
煤焦品位;
while(true)
{
firstname=getFirstName();
如果(firstname==“完成”)
打破
lastname=getLastName();
总和=0.0;
对于(int i=0;i=90)
等级=‘A’;
否则如果(分数>=80)
等级=‘B’;
否则如果(分数>=70)
等级=‘C’;
否则如果(分数>=60)
等级='D';
其他的
等级=‘F’;
返回等级;
}
无效显示结果(字符串名、字符串名、双平均值、字符等级)
{

cout循环只是反复执行同一段代码的一种方式。通过将代码放入循环,您不必复制和粘贴它。在循环的一次运行中发生的任何变量更改在下一次运行中仍然存在

在代码中:

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

for(int i=0;ifirstname=getFirstName();cin>>firstname;getFirstName已捕获firstname的输入。代码中也有类似情况。此外,sum-calculateSum(sum,score);根本不做任何事情,它从sum calculateSum(sum,score)中减去你的代码有很多错误。正如@ GalloCedrone建议你应该学习和使用调试工具。如果你不想把这个解决方案交给你并去处理它,你可以考虑尝试调试。很多工具是可用的,但是最简单的,因为你是初学者,在代码的不同部分打印1,2,3,4,5,6直到你全部恢复。y了解哪个函数的行为不符合预期。然后处理该函数。除非格式化不正确,否则在
main
的开头,您会使用未初始化的变量调用许多函数(导致未定义的行为)。最好的情况下,这是一种不好的做法,最坏的情况下,可能会中断整个程序
int i = 0; i<10; i++