程序员人生 网站导航

第17周上机实践项目6――学生成绩统计(4)

栏目:php教程时间:2015-01-05 08:34:19

问题及代码

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * 完成日期:2015年 1 月 2 日 * 版 本 号:v1.0 * * 问题描写: 使用相同的结构体类型,在main函数中已对结构体数组进行了初始化,请完成相干函数的定义,实现main函数中要求的功能。。 * 输入描写:没有输入。 * 程序输出:很多东西。。。; */ #include <iostream> #include <cstring> using namespace std; struct Student //同项目1 { 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,单科不低于90 int main() { Student stu[]= { {"201152501104","Tom",65,69 ,68 }, {"201152501114","Jeery",94 ,89 ,63 }, {"201152501138","Speike",67 ,62 ,84 }, {"201152501204","Tyke",100 ,95 ,91 }, {"201152501202","Tuffy",59 ,80 ,55 }, {"201152501115","Butch",100 ,99 ,89 }, {"201152501201","Light",95 ,92 ,99 }, {"201152501145","Topsy",88 ,56 ,67 }, {"201152501203","Droopy",62 ,62 ,95 }, {"201152501140","Drupa",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); //按总分降序排序后输出 sort1(stu,stuNum); cout<<"按总分降序排序后:"<<endl; output(stu,stuNum); //按学号升序排序后输出 sort2(stu,stuNum); cout<<"按学号升序排序后:"<<endl; output(stu,stuNum); return 0; } void calculate(Student s[],int n) { for(int i=0; i<n; i++) { s[i].grade=s[i].cpp+s[i].math+s[i].english; s[i].average=s[i].grade/3.0; } } void sort1(Student s[],int n) { Student t; int i,j; for(i=0; i<n⑴; i++) for(j=0; j<n-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) { Student t; int i,j; for(i=0; i<n⑴; i++) for(j=0; j<n-i⑴; j++) { if(strcmp(s[j].num,s[j+1].num)>0) { t=s[j]; s[j]=s[j+1]; s[j+1]=t; } } } void output(Student s[],int n) { cout<<"学号 姓名 C++ 高数 英语 总分 均分"<<endl; for(int 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; } void outputExcellent(Student s[],int n) { for(int i=0;i<n;i++) { if(s[i].grade>285&&s[i].cpp>=90&&s[i].math>=90&&s[i].english>=90) cout<<s[i].num<<' '<<s[i].name<<endl; } }

运行结果:

学习感悟:1、对全部结构体的交换,可以再定义1个结构体,如student t,在如代码所示交换

                    2、数组表示的字符串的操作,相干函数也能够#include <cstring>

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐