c++编程《学生期末成绩及平均分最高最低分计算》

一、 目的与要求:
1. 目的
培养学生综合利用C++语言进行程序设计的能力,通过学生独立思考,提高学生将所学知识转化为分析和设计简单实际问题的能力,建立程序文档、归纳总结的能力,从而增强创新和实践能力。
2. 基本要求
要求用C++语言编程,在Visual C++环境下调试完成。
3. 创新要求
进一步完善程序,按班级分类后,再分别求出平时成绩的和总成绩的最高分最低分;进一步考虑结构体数组大小设定为100或50,每次输入学生个数,再进行处理。
1. 课题功能描述
在计算机文化基础课中讲了用EXCEL处理数据表,可以对数据表进行填充数据、分类汇总等操作,要求对表1所示的数据表填充总成绩,并按班级求期末成绩、平时成绩和总成绩的平均分,各班期末成绩的最高分和最低分。
2. 问题详细描述
对表1所示的数据表进行填充和分类汇总,具体操作如下:
1)填充总成绩,公式为:总成绩=期末成绩*70%+平时成绩*30%。
2)分类汇总:
(1)按班级求期末成绩、平时成绩和总成绩的平均分
(2)各班期末成绩的最高分和最低分。
3)输出结果要求:
(1)输出填充结果的数据表,形式如表1。
(2)输出按班级汇总后的期末成绩、平时成绩和总成绩平均分,形式如下:

班级
期末成绩平均分
平时成绩平均分
总成绩平均分
传媒1

传媒2

传媒3

(3)输出各班期末成绩的最高分和最低分,形式如下:
班级
最高分
最低分
传媒1

传媒2

传媒3
如果有会的,请发我邮箱2215230828@qq.com
急求!!表一格式
表1 各班学生成绩信息表
班级
学号
姓名
期末成绩
平时成绩
总成绩
传媒1
10641301
刘晓玮
65
80
 
传媒2
10641302
夏海霞
74
85
 
传媒1
10641303
陈威
81
90
 
传媒2
10641304
周莉
87
90
 
传媒3
10641305
贾君
75
90
 
传媒1
10641306
韩晓萍
58
80
 
传媒2
10641307
奚景泊
80
90
 
传媒3
10641308
胡华
85
95
 
传媒1
10641309
李栋
93
95
 后面还有一些,一共39个学生
最新回答
冰月灵狐

2025-03-02 07:07:30

#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
const int studentNum=39; //学生数目
const int nameLen=20; //学生姓名长度
const int idLen=15; //学生学号长度
int main()
{
char name[studentNum][nameLen]; //学生姓名
char id[studentNum][idLen]; //学生学号
float score[studentNum][4]; //学生成绩
float sum;
float average[studentNum]; //平均成绩

int i,j;
/*******读入学生的姓名、学号、成绩和计算平均成绩**********/
cout <<"请输入"<<studentNum<<"个" <<"学生资料:" <<endl;
cout <<"格式为:姓名 学号 成绩1 成绩2 成绩3 总分" <<endl;
for(i=0;i<studentNum;i++)
{
cin >>name[i] >>id[i];
sum=0;
for(j=0;j<4;j++)
{
cin >>score[i][j];
}
for(j=0;j<3;j++)
{
sum+=score[i][j];
}
average[i]=sum/3;
cout <<average[i] <<endl;
}
/******按照学生成绩排序************/
int max; //排序,记录当前一趟排序的最大值
for(i=0;i<studentNum-1;i++)
{
max=i; //假定第i个元素是最大值
for(j=i+1;j<studentNum;j++)
{
if(average[j]>average[max])
max=j;
}
/***将找到的具有最大值的元素放到当前一趟排序的第一个位置***/
if(i!=max)
{
float tempFloat;
char tempStr[nameLen];
/***交换两个位置成绩****/
tempFloat=average[i];
average[i]=average[max];
average[max]=tempFloat;
for(j=0;j<4;j++){
tempFloat=score[i][j];
score[i][j]=score[max][j];
score[max][j]=tempFloat;}
/***交换两个位置的学生姓名***/
strcpy(tempStr,name[i]);
strcpy(name[i],name[max]);
strcpy(name[max],tempStr);
/****交换两个位置的学号***/
strcpy(tempStr,id[i]);
strcpy(id[i],id[max]);
strcpy(id[max],tempStr);
}
}
/*****输出排序后的结果******/
cout <<endl <<"排序后的结果为:" <<endl;
for(i=0;i<studentNum;i++){
cout <<name[i] <<" " <<id[i]<<" "<<score[i][0]<<" "<<score[i][1]<<" "<<score[i][2]<<" "<<score[i][3]<<" "<<endl;
}
system("pause");
return 0;
}
这是我给另一个人的,你自己改下吧,我写的是输入姓名 学号 3课成绩 总成绩 最后按总分从大到小排名
冬瑾凉桉

2025-03-02 06:42:50

历害