项目二--有序的学生成绩单
来源:互联网 发布:起点网络交易怎么下单 编辑:程序博客网 时间:2024/04/30 09:00
/**程序的版权和版本声明部分:*Copyright(c)2013,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:尚振伟*完成日期:2014年3月5日*版本号:v0.1*对任务及求解方法的描述部分:*输入描述:无*问题描述:按要求输出学生的成绩单。*程序输入:*程序输出:*问题分析:*算法设计:*我的程序:*/#include <iostream>#include <string.h>using namespace std;struct Student{ char num[13]; char name[10]; int cpp; int math; int english; int grade; double average;};void calculate(Student s[],int n); //计算总分和均分,数据在s数组中,共有n个元素void sort1(Student [],int); //按总分降序排序void sort2(Student [],int); //按学号升序排序void output(Student [],int); //输出成绩单void outputExcellent(Student [],int); //输出优秀者:总分超285,单科不低于90int main(){ Student stu[]= {{"201152501104","Tomm",65,69 ,68 }, {"201152501114","Jeer",94 ,89 ,63 }, {"201152501138","Spei",67 ,62 ,84 }, {"201152501204","Tyke",100 ,95 ,91 }, {"201152501202","Tuff",59 ,80 ,55 }, {"201152501115","Butc",100 ,99 ,89 }, {"201152501201","Ligh",95 ,92 ,99 }, {"201152501145","Tops",88 ,56 ,67 }, {"201152501203","Droo",62 ,62 ,95 }, {"201152501140","Drup",80 ,60 ,86 }, {"201152501205","Buzz",73 ,90 ,94} }; int stuNum=sizeof(stu)/sizeof(stu[0]); //用sizeof运算确定数组中元素个数 //计算总分和均分后输出 calculate(stu,stuNum); cout<<"下面是成绩单:"<<endl; output(stu,stuNum); cout<<"优秀者名单:"<<endl; outputExcellent(stu,stuNum); cout<<endl; //按总分降序排序后输出 sort1(stu,stuNum); cout<<"按总分降序排序后:"<<endl; output(stu,stuNum); //按学号升序排序后输出 sort2(stu,stuNum); cout<<"按学号升序排序后:"<<endl; output(stu,stuNum); return 0;}void calculate(Student s[],int n){ int i; for(i=0; i<n; i++) { s[i].grade=s[i].cpp+s[i].math+s[i].english; s[i].average=s[i].grade/3; }}void sort1(Student s[],int n){ int i,j; Student t; for(i=0; i<n-1; i++) { for(j=0; j<n-1-i; j++) { if(s[j].grade<s[j+1].grade) { t=s[j]; s[j]=s[j+1]; s[j+1]=t; } } }}void sort2(Student s[],int n){ int i,j,w; Student t; for(i=0; i<n-1; i++) { for(j=0; j<n-1-i; j++) { w=strcmp(s[j].num,s[j+1].num); if(w>0) { t=s[j]; s[j]=s[j+1]; s[j+1]=t; } } }}void outputExcellent(Student s[],int n){ int i; for(i=0; i<n; i++) { s[i].grade=s[i].cpp+s[i].math+s[i].english; } for(i=0; i<n; i++) { if(s[i].grade>285&&s[i].math>90&&s[i].cpp>90&&s[i].english>90) cout<<s[i].name<<" "; }}void output(Student s[],int n){ int i; cout<<"成绩单为:"<<endl; cout<<"学号 姓名 c++ 高数 英语 总成绩 平均分"<<endl; for(i=0; i<n; i++) { cout<<s[i].num<<" "<<s[i].name<<" "<<s[i].cpp<<" "<<s[i].math<<" "<<s[i].english<<" "<<s[i].grade<<" "<<s[i].average<<endl; }}
结果展示:
心得体会:在按学号排序这一部分费了老大劲了,就是不知道怎么比较定义的char类型的学号数组,最后还是在百度上找到了解决方法,看来百度有时候还是挺有用的。还有就是在排序的时候愣是把t+1写成了t-1,程序编译没错误,就是运行不出结果,细节太重要了。
0 0
- 项目二--有序的学生成绩单
- 项目一--学生成绩单
- 带名字的学生成绩单
- 第十五周 项目3--学生成绩单
- 第二周项目二成绩单
- 学生成绩单
- 第十四周项目二(1)带姓名的成绩单
- 第十四周项目二(2)带姓名的成绩单
- 第十四周项目二 带姓名的成绩单
- 第十四周项目二—带姓名的成绩单
- 第十四周项目二——带姓名的成绩单
- 第十四周 项目二:带姓名的成绩单(2.3)
- 第十四周项目二:带姓名的成绩单
- 第十四周项目二之带姓名的成绩单
- 第十四周项目二(1):带姓名的成绩单
- 第十四周项目二(2):带姓名的成绩单
- 第十四周项目二——带姓名的成绩单
- 第十四周项目二带姓名的成绩单
- 位运算
- sgu Perspective 网络流 竞赛图
- Test
- 如何在window7下远程登录ubuntu 12.04系统
- arm汇编指令-DCD
- 项目二--有序的学生成绩单
- lua调用C函数
- c++中sizeof的用法
- mysql 启动报错:The server quit without updating PID file (/usr/local/mysql/data/ubuntu.pid)
- iOS ARC
- 3.10分层遍历二叉树-扩展问题
- 使用URLConnection报302 response code
- java file reader
- MAC 安装nginx1.4 、php5.4、CodeIgniter2.1