C语言1某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(30分) 题目内容: 某班有5名同学,建立一个学生的简单信息表,包括学号、

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;

}

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值