设计一个程序,统计一个班(最多有35人)的学生成绩 这个是上机实习的题目,请编程高手帮忙编一下,谢谢!

2025-12-17 10:02:52
推荐回答(2个)
回答1:

#include #include using namespace std; #define MAX_CNT 35 //学生信息结构体 typedef struct Student { int ID; double score[4]; double totalScore; double averageScore; }Student; //存储学生信息的全局变量 Student *Stu = new Student[MAX_CNT]; //输入 void InputInfo() { cout<<"请输入学生相关信息(学号 成绩1 成绩2 成绩3 成绩4)(输入学号为0,表示输入结束): "<>Stu[i].ID; if (Stu[i].ID == 0) break; //成绩 for (int j=0; j<4; j++) cin>>Stu[i].score[j]; } cout<totalScore = 0.0; temp->averageScore = 0.0; //交换信息 temp->ID = Stu[i].ID; for (k=0; k<4; k++) temp->score[k] = Stu[i].score[k]; temp->totalScore = Stu[i].totalScore; temp->averageScore = Stu[i].averageScore; Stu[i].ID = Stu[j].ID; for (k=0; k<4; k++) Stu[i].score[k] = Stu[j].score[k]; Stu[i].totalScore = Stu[j].totalScore; Stu[i].averageScore = Stu[j].averageScore; Stu[j].ID = temp->ID; for (k=0; k<4; k++) Stu[j].score[k] = temp->score[k]; Stu[j].totalScore = temp->totalScore; Stu[j].averageScore = temp->averageScore; } } //2. 输出排序后的学生信息 cout<<"全班学生按总分从高到低依次为:"<>sno; while (sno<1 || sno>4) { cout<<"输入有误,请重新输入: "; cin>>sno; } //输出表头 cout<= 90)/*该门课的成绩在90分以上*/ && (i<5)/*前5名*/) { //学号 cout<

回答2:

#include #include/*后面关闭程序需要调用此头文件*/ #include #define N 10/*定义学生的个数*/ typedef struct/*结构体*/ { char number[20];/*定义学生的学号*/ int grade[4];/*定义学生的四门成绩,这里用的整型,也可以使用浮点型*/ float average,sum; }info; int main() { info student[N+1];/*student[N]用于交换数据用*/ void Input(info student[]);/*成绩录入函数*/ void Count(info student[]);/*平均分、总分计算函数*/ void Sort(info student[]);/*成绩按总分排序*/ void Seek(info student[]);/*成绩的筛选*/ int choice;/*程序的选项*/ printf("\t\t学生成绩管理系统\n"); printf("===================================================\n"); printf("1、学生成绩录入\n"); printf("2、平均分和总分计算\n"); printf("3、按总分排名(高->低)\n"); printf("4、输出课程号成绩在90分以上且总分排名前五的学生情况\n"); printf("0、退出程序\n"); printf("===================================================\n"); printf("\n请输入选项:"); choice=getchar(); while(choice!='0') { switch(choice) { case '1': Input(student); break; case '2': Count(student); printf("计算完毕!\n"); break; case '3': Sort(student); break; case '4': Seek(student); break; default: printf("请输入正确选项!"); break; } printf("\n请输入选项:"); fflush(stdin);/*必须清空键盘缓存区的回车,否则程序不能正常运行,后面也如此*/ choice=getchar(); } exit(0);/*当选项为0时,退出程序,这个对应windows.h这个头文件*/ fflush(stdin); getchar(); return 0; } void Input(info student[])/*成绩录入函数*/ { info *sp=student;/*用指针类型,才能将数组的值返回去*/ int i=1,j; for(;spnumber); for(j=0;j<4;j++) scanf("%d",&sp->grade[j]); i++; } } void Count(info student[])/*平均分、总分计算函数*/ { info *sp=student;/*用指针类型,才能将数组的值返回去*/ int j; for(;spsum=0.0; for(j=0;j<4;j++) sp->sum+=sp->grade[j]; sp->average=sp->sum/4.0; } } void Sort(info student[])/*成绩按总分排序*/ { int i,j,maxi; for(i=0;i低)结果\n"); printf("======================================================\n"); printf("学号\t成绩1\t成绩2\t成绩3\t成绩4\t平均分\t总分\n"); for(i=0;i=90) { k++; printf("%s\t",student[i].number); for(j=0;j<4;j++) { printf("%d\t",student[i].grade[j]); } printf("%.2f\t%.2f",student[i].average,student[i].sum); printf("\n"); } if(k>=5) break; } printf("======================================================\n"); } //注意我测试用的是10个学生,你直接把那个N为10改为35即可!