1某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分)
题目内容:
某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数)
输入格式:
%ld %s %f %f %f
输出格式:
%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n
输入样例:
201701 zhao 29.8 85.4 65.4
201702 qian 96.5 87.5 65.4
201703 sun 85.4 65.4 84.6
201704 li 63.4 95.4 86.3
201705 zhou 65.9 84.6 97.5
输出样例:
Number: Name: score: Average: rank:
201701 zhao 29.8 85.4 65.4 60.2 5
201702 qian 96.5 87.5 65.4 83.1 1
201703 sun 85.4 65.4 84.6 78.5 4
201704 li 63.4 95.4 86.3 81.7 3
201705 zhou 65.9 84.6 97.5 82.7 2
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 5
struct Student {
long studentId;
char name[20];
float score1, score2, score3;
float average;
int rank;
};
void calculateAverage(struct Student *student) {
student->average = (student->score1 + student->score2 + student->score3) / 3.0;
}
void calculateRank(struct Student students[]) {
int i, j;
for (i = 0; i < NUM_STUDENTS; i++) {
students[i].rank = 1;
for (j = 0; j < NUM_STUDENTS; j++) {
if (students[j].average > students[i].average) {
students[i].rank++;
}
}
}
}
int main() {
struct Student students[NUM_STUDENTS];
for (int i = 0; i < NUM_STUDENTS; i++) {
scanf("%ld %s %f %f %f", &students[i].studentId, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
calculateAverage(&students[i]);
}
calculateRank(students);
printf("Number: Name: score: Average: rank:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%-9ld%-10s%-5.1f%-5.1f%-8.1f%-10.1f%-d\n",
students[i].studentId, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].average, students[i].rank);
}
return 0;
}