成绩统计
1)编写一个函数randScore,生成一个[0,100]区间的整数。(提示:使用rand函数)
int randScore(){
int num = rand() % 101;
return num;
}
2)编写一个函数使用上面的randScore函数,随机生成全班同学某门功课的成绩。
void stuRandomScore(int stuScore[]){
for (int i = 0; i < stuNum; i++)
stuScore[i] = randScore();
for (int i = 0; i < stuNum; i++)
cout << "第" << i + 1 << "位同学成绩为:" << stuScore[i] << endl;
}
3)编写一个函数Score2Grade,实现百分制到五分制转换。
void Score2Grade(int stuScore[]){
for (int i = 0; i < stuNum; i++)
if (stuScore[i] >= 50)
score2Grade[i] = float(stuScore[i]) / 10 - 5;
else
score2Grade[i] = 0;
for (int i = 0; i < stuNum; i++)
cout << "第" << i + 1 << "位同学绩点:" << score2Grade[i] << endl;
}
4)编写一个函数,使用Score2Grade,统计全班同学不同分数等级(Grade)的比例。
void PersentGrade(float score2Grade[5]){
int per[5] = {0};
for (int i = 0; i < stuNum; i++){
if (score2Grade[i] >= 0 && score2Grade[i] <= 1)
per[0]++;
if (score2Grade[i] > 1 && score2Grade[i] <= 2)
per[1]++;
if (score2Grade[i] > 2 && score2Grade[i] <= 3)
per[2]++;
if (score2Grade[i] > 3 && score2Grade[i] <= 4)
per[3]++;
if (score2Grade[i] > 4 && score2Grade[i] <= 5)
per[4]++;
}
for (int i = 0; i < 5; i++){
persentGrade[i] = float(per[i]) / stuNum;
cout << "比例为:" << persentGrade[i] << endl;
}
}
5)编写一个函数,计算全班同学的平均成绩与标准差。
float Average(int *stuScore){
int sum = 0;
for (int i = 0; i < stuNum; i++) // 求和
sum += stuScore[i];
return float(sum) / stuNum; // 得到平均值
}
float StandardDeviation(int *stuScore){
float sum = 0;
float average = Average(stuScore);
for (int i = 0; i < stuNum; i++) // 求和
sum += pow(stuScore[i] - average, 2);
return sqrt(sum / stuNum);
}
程序汇总如下
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
class MyScores{
public:
int stuNum;
int *stuScore;
float *score2Grade;
float *persentGrade;
int randScore(){
int num = rand() % 101;
return num;
}
void stuRandomScore(int stuScore[]){
for (int i = 0; i < stuNum; i++)
stuScore[i] = randScore();
for (int i = 0; i < stuNum; i++)
cout << "第" << i + 1 << "位同学成绩为:" << stuScore[i] << endl;
}
void Score2Grade(int stuScore[]){
for (int i = 0; i < stuNum; i++)
if (stuScore[i] >= 50)
score2Grade[i] = float(stuScore[i]) / 10 - 5;
else
score2Grade[i] = 0;
for (int i = 0; i < stuNum; i++)
cout << "第" << i + 1 << "位同学绩点:" << score2Grade[i] << endl;
}
void PersentGrade(float score2Grade[5]){
int per[5] = {0};
for (int i = 0; i < stuNum; i++){
if (score2Grade[i] >= 0 && score2Grade[i] <= 1)
per[0]++;
if (score2Grade[i] > 1 && score2Grade[i] <= 2)
per[1]++;
if (score2Grade[i] > 2 && score2Grade[i] <= 3)
per[2]++;
if (score2Grade[i] > 3 && score2Grade[i] <= 4)
per[3]++;
if (score2Grade[i] > 4 && score2Grade[i] <= 5)
per[4]++;
}
for (int i = 0; i < 5; i++){
persentGrade[i] = float(per[i])
/ stuNum;
cout << i << "~" << i + 1 << "比例为:" << persentGrade[i] << endl;
}
}
float Average(int *stuScore){
int sum = 0;
for (int i = 0; i < stuNum; i++) // 求和
sum += stuScore[i];
return float(sum) / stuNum; // 得到平均值
}
float StandardDeviation(int *stuScore)
{
float sum = 0;
float average = Average(stuScore);
for (int i = 0; i < stuNum; i++) // 求和
sum += pow(stuScore[i] - average, 2);
return sqrt(sum / stuNum);
}
};
void main(){
MyScores t;
cin >> t.stuNum;
t.stuScore = new int[t.stuNum];
t.score2Grade = new float[t.stuNum];
t.persentGrade = new float[5];
t.stuRandomScore(t.stuScore);
cout << endl;
t.Score2Grade(t.stuScore);
cout << endl;
t.PersentGrade(t.score2Grade);
cout << endl;
float average = t.Average(t.stuScore);
cout << "平均值:" << average << endl;
float sd = t.StandardDeviation(t.stuScore);
cout << "标准差:" << sd << endl;
system("pause");
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。