C++学生成绩平均计算器数组问题
Posted
技术标签:
【中文标题】C++学生成绩平均计算器数组问题【英文标题】:C++ Students score average calculator array problem 【发布时间】:2018-12-12 21:02:51 【问题描述】:我正在尝试编写一个程序,将学生的最后分数计算为期中、测验1、测验2 和期末,然后发现他们的班级平均成绩取决于学生人数。程序将显示班级平均水平。用户应输入分数。我是 C++ 新手,我的问题是现在我找不到将这个 for 循环连接到类平均值数组的方法。我的代码错了吗?我不知道该怎么办。
#include <iostream>
using namespace std;
int main()
int mt, q1, q2, fnl, stdn, num;
double cls[5], std, avg;
cout << "Enter a number of students: ";
cin >> num;
for (stdn=0; stdn<num; stdn++)
cout<<"Enter mt, q1, q2, fnl of a "<<stdn+1<<". student in order:"<<endl;
cin>>mt>>q1>>q2>>fnl;
std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
cout<<stdn+1<<". students total score is "<<std<<endl;
【问题讨论】:
您的代码很可能遭受整数除法的影响。 请注意,这与 Joy Division 完全不同。 【参考方案1】:类型 int 总是将小数点后的值四舍五入。 所以,(int)3.84 == 3,因此你的 std 变量可能会有一个错误的值。 将所有变量定义为 double 开始。要计算平均值,只需添加分数,然后除以最后的学生人数。
double mt, q1, q2, fnl, stdn, num, grades_sum = 0, avg;
...
for(stdn=0; stdn<num; stdn++)
...
grades_sum += mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
...
avg = grades_sum/num;
【讨论】:
我猜数字不是这里的问题。程序应该显示所有学生的平均数,然后是他们班级的总平均数。我无法连接这两个,这是我的问题。 不确定你指的是哪个平均分,如果学生有 q1、q2、mt、fnl 的分数,程序不应该计算他得到的分数吗?那么全班的平均分呢?还有什么其他平均值? 计算学生总分的平均值。我的意思是在我们计算出 q1、q2、mt、fnl 之后。不仅如此。我能做到,那不是问题。【参考方案2】:你不需要一个数组来计算班级平均值。只需将所有学生的分数相加并除以学生人数即可。那只需要一个变量(我称之为std_sum
)而不是一个数组。像这样
double std_sum = 0.0;
for(stdn=0; stdn<num; stdn++)
...
std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
std_sum = std_sum + std; // add up all student scores
avg = std_total/num;
【讨论】:
你的意思是自己输入分数?这会停止让用户输入吗? 不,不,但我不太明白你在问什么。我教你怎么计算全班平均分,这和分数怎么输入没有关系,只是计算而已。【参考方案3】:您可以将所有学生的分数相加,最后除以学生总数。这将为您提供班级的总平均数。此外,我通过用加起来为 1 的小数替换分数来避免整数除法。我还编辑了你的 for 循环,从 1 开始并转到数字,以避免将 1 添加到所有内容。
#include <iostream>
using namespace std;
int main()
int mt, q1, q2, fnl, stdn, num;
double cls[5], std;
double classAvg = 0; // add a new variable
cout << "Enter a number of students: ";
cin >> num;
for (stdn=1; stdn <= num; stdn++)
cout << "Enter mt, q1, q2, fnl of a " << stdn << ". student in order:" << endl;
cin >> mt >> q1 >> q2 >> fnl;
std = (mt * 0.3) + (q1 * 0.1) + (q2 * 0.1) + (fnl * 0.5);
cout << stdn << ". students total score is " << std << endl;
classAvg = classAvg + std; // start adding the totals of all the students
avg = classAvg/num; // find the total average by dividing by total students
cout << "Class Average is " << classAvg << endl; // display average.
【讨论】:
以上是关于C++学生成绩平均计算器数组问题的主要内容,如果未能解决你的问题,请参考以下文章
c语言:输入10个学生的成绩,求学生的平均成绩,并统计超过平均分数的学生人数。
利用JAVA编写程序,用一维数组保存20个学生的某门课程的成绩,计算平均成绩,并输出。