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++