编写C程序,实现以下功能 功能1、每名学生信息包括:学号(8个字符)、姓名(最多20个字符)、5门课成绩(整型)、总成绩(整型)。功能2、声明结构体类型用以保存学生信息。 功能3、从键盘读入全班同学信息(不超过50人,总成绩有各门成绩相加计算得到)。功能4、计算每个人的总成绩。 功能5、按总成绩又高到底对学生信息进行排序,成绩相同则按学号由小到大排序。(默认输入的学号不会重复)。在屏幕输出排序后所有学生信息。 功能6、奖学金评奖规则:班级总人数的前5%为一等奖学金;班级总人数的前15%出去获得一等奖学金的同学,其余为二等奖学金;班级总人数的前30%除去获得一等和二等奖学金的同学,其余为三等奖学金。(按照百分比计算人数时如果出现小数则四舍五入)。但是有任意一门课程不及格则没有评奖资格,获得资格顺延给下一位同学。 功能7、在屏幕输出一等、二等、三等奖学金获奖同学的学号、姓名、总成绩以及获奖等级。 功能8、输出学号,查找该学号的同学,如查到则在屏幕上输出该学生所有信息(学号、姓名、各门课成绩、总成绩、获奖情况),如未查到则输出提示;直到输出#为止。 功能9 将排序后的所有学生信息(学号、姓名、各门课成绩、总成绩、获奖情况)写入文本文件中,文件名为09191032。
时间: 2023-02-07 19:12:21 浏览: 409
下面是一个可以实现上述功能的 C 程序的示例:
```
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAX_STUDENT_NUM 50
typedef struct {
char id[9];
char name[21];
int scores[5];
int total_score;
char award[10];
} Student;
int read_students(Student *students);
void calculate_total_scores(Student *students, int num_students);
void sort_students(Student *students, int num_students);
void assign_awards(Student *students, int num_students);
void print_students(const Student *students, int num_students);
void search_student(const Student *students, int num_students);
int main()
{
Student students[MAX_STUDENT_NUM];
int num_students = read_students(students);
calculate_total_scores(students, num_students);
sort_students(students, num_students);
assign_awards(students, num_students);
print_students(students, num_students);
search_student(students, num_students);
return 0;
}
int read_students(Student *students)
{
int i;
printf("请输入学生信息(输入 0 0 0 0 0 0 结束):\n");
for (i = 0; i < MAX_STUDENT_NUM; i++) {
printf("第 %d 名学生:\n", i + 1);
printf("学号:");
scanf("%s", students[i].id);
if (strcmp(students[i].id, "0") == 0) {
break;
}
printf("姓名:");
scanf("%s", students[i].name);
printf("5 门课成绩:");
scanf("%d%d%d%d%d", &students[i].scores[0], &students[i].scores[1],
&students[i].scores[2], &students[i].scores[3], &students[i].scores[4]);
}
return i;
}
void calculate_total_scores(Student *students, int num_students)
{
int i, j;
for (i = 0; i < num_students; i++) {
students[i].total_score = 0;
for (j = 0; j < 5; j++) {
students[i].total_score += students[i].scores[j];
}
}
}
void sort_students
阅读全文