我的节目很难,我真的很感激任何帮助。请原谅我的错误代码,我是新的。
ToString()
我不太了解循环,或者它们是如何工作的,所以我为我的循环写下的内容只是由我们的教授给我们的,所以如果有人可以请解释/解剖它,那么我会非常感激它!我想知道如何做到这一点,而不仅仅是给我答案。
所以,我不确定为什么我的程序无法正常执行。我列出了呼叫功能,所有功能似乎都是正确的。我的循环也在主要内部,但我不知道他们为什么不工作。另外,当我运行它时,我没有任何错误。
它似乎停留在输入名字并输入姓氏部分,但我不确定为什么。再说一遍,我真的很感激任何帮助,谢谢!
答案 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
循环结束后计算两者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;
}
答案 1 :(得分:0)
循环只是一遍又一遍地执行同一段代码的一种方式。通过将代码放入循环中,您无需复制和粘贴它。在一次循环中发生的任何变量在下一次运行期间仍然存在。
在您的代码中:
for (int i = 0; i<10; i++)
{
...
}
是你的循环。 &#34; ...&#34;是一遍又一遍地执行的代码。
需要通过循环询问的一个重要问题是:循环如何知道在退出代码之前运行代码的次数?
这就是:
int i = 0; i<10; i++
是关于。虽然它看起来很奇怪但它实际上是3个单独的命令命令由分号&#39;;&#39;
分隔命令(1)初始化循环。您只需将变量i(整数)设置为0.
Command(2)条件继续循环。如果command(2) true ,则循环将执行(并再次执行)。你的代码是在我小于10时执行循环。
每个循环执行一次命令(3)计算。我们在Command(1)中知道你将i设置为0.我们在Command(2)中知道循环将在i小于10时运行.0小于10,因此循环将永远执行。我们不想要这个,所以在Command(3)中我们增加了i。我们计算运行循环的次数。
所以你的循环将连续运行10次,其中的代码然后退出。