统计一个班的学生成绩。要求程序具有如下功能:
(1) 每个学生的学号和四门功课的成绩从键盘读入。
(2) 计算每个学生的总分和平均分。
(3) 按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。
要求:
(1) 每个功能为一个独立的函数。
(2) 调试程序时,可先输入少量学生的成绩作为实验数据。如可输入3名学生4门课成绩:
学号 成绩
9701,67,72,65,80
9702,75,82,94,95
9703,70,74,80,76
使用软件:Visual C++ 6.0
系统: Windows 7
能够输入输出三名学生的就可以,希望代码可以简单点(初学者很多都没学到QAQ,软件也比较旧)
c语言程序设计(函数与数组)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-11-23 16:54关注
#include<stdio.h> #define N 5 //定义输入学生的个数 struct student //定义学生结构体 { char num[6] ; char name[8] ; int score[3] ; float avr; }stu[N]; void main() { int i,j,max,maxi,sum; float average; for(i=0;i<N;i++) { printf("请输入学生成绩 %d:\n",i+1); //输入每个学生的数据 printf("第:%d",i+1); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("score %d:",j+1); scanf("%d", &stu[i].score[j]); } } average=0; max=0; maxi=0; for(i=0;i<3;i++) //求平均数 { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if(sum>max) { max=sum; maxi=i; } } average/=N; printf(" NO. name score1 score2 score3 average\n"); for(i=0;i<N;i++) //输出每个学生的信息 { printf("%5s%8s",stu[i].num, stu[i].name); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf("%8.2f\n",stu[i].avr); } printf("平均分=%7.2f\n",average); printf("最高成绩是:%s,score total:%d.",stu[maxi].name,max); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 多电路系统共用电源的串扰问题
- ¥15 shape_predictor_68_face_landmarks.dat
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料