一、 目的与要求: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 各班学生成绩信息表班级学号姓名期末成绩平时成绩总成绩传媒110641301刘晓玮6580 传媒210641302夏海霞7485 传媒110641303陈威8190 传媒210641304周莉8790 传媒310641305贾君7590 传媒110641306韩晓萍5880 传媒210641307奚景泊8090 传媒310641308胡华8595 传媒110641309李栋9395 后面还有一些,一共39个学生
#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课成绩 总成绩 最后按总分从大到小排名