分配/计算学生成绩(c++)的循环
Loops for assigning/calculating student grade (c++)
我的程序有点困难,如果有任何帮助,我将不胜感激。请原谅我的代码太糟糕了,我是新来的。
#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;
}
我真的不了解循环,也不了解它们是如何工作的,所以我为循环写的东西只是我们的教授给我们的,所以如果有人能解释/剖析它,我会非常感激!我想知道如何做到这一点,而不仅仅是有答案交给我。
所以,我不确定为什么我的程序不能正确执行。我已经列出了调用函数,所有函数似乎都是正确的。我的循环也在主循环中,但我不知道为什么它们不起作用。此外,当我运行它时,我没有任何错误。
它似乎卡在输入名字和输入姓氏部分,但我不知道为什么。再次感谢您的帮助,谢谢!
您的代码充满了错误,但我将带领您一步一步地完成它。
首先,我们需要检查每个功能的作用:
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
作为参数,因为这是我们要返回的。
函数应写成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
循环结束后计算average
和grade
并打印出来。
您的代码的最终工作版本应该是这样的,如果您还有任何进一步的问题,请不要犹豫。
#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;
}
循环只是一种反复执行同一段代码的方式。通过将代码放入循环中,您不必复制和粘贴它。在一次循环运行期间发生的任何变量更改在下一次循环中仍然存在。
在您的代码中:
for (int i = 0; i<10; i++)
{
...
}
是你的循环。"…"是将被反复执行的代码。
循环需要问的一个大问题是:循环如何知道在退出之前要运行代码多少次?
这就是:
int i = 0; i<10; i++
是关于。虽然看起来很奇怪,但实际上是3个独立的命令。命令由分号";"分隔
- int i=0
- i<10
- 我++
命令(1)初始化循环。您只需将变量i(一个整数)设置为0。
命令(2)条件以继续循环。如果命令(2)为true,则循环将执行(并再次执行)。你的代码是说在我小于10的时候执行循环。
每个循环执行一次命令(3)计算。我们知道在命令(1)中,您将i设置为0。我们在命令(2)中知道,当i小于10时,循环将运行。0小于10,因此循环将执行。。。永远我们不希望这样,所以在命令(3)中,我们增加i。我们计算运行循环的次数。
因此,您的循环将连续运行10次,其中包含代码,然后退出。
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串