// 统计平均分函数 void count_average_score() { if (student_count == 0) { printf("暂无学生信息\n"); return; } int total_score = 0; for (int i = 0; i < student_count; i++) { total_score += students[i].score; } printf("平均成绩为:%.2f\n", total_score * 1.0 / student_count); } // 统计不及格学生函数 void count_failed_student() { int count = 0; for (int i = 0; i < student_count; i++) { if (students[i].score < 60) { count++; } } printf("不及格学生数为:%d\n", count); } int main() { int choice = 0; while (1) { printf("\n成绩管理系统\n"); printf("1. 成绩录入\n"); printf("2. 打印成绩单\n"); printf("3. 修改成绩\n"); printf("4. 统计分数段\n"); printf("5. 统计平均分\n"); printf("6. 统计不及格学生\n"); printf("0. 退出程序\n"); printf("请选择要进行的操作:"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: print_students(); break; case 3: modify_score(); break; case 4: count_score_range(); break; case 5: count_average_score(); break; case 6: count_failed_student(); break; case 0: return 0; default: printf("输入有误,请重新输入\n"); } } return 0; }解释一下,并说明是使用什么函数与功能
时间: 2024-03-07 13:53:08 浏览: 23
这是一段 C 语言代码,主要实现了一个成绩管理系统,包括以下功能:
1. 成绩录入:add_student 函数实现,可以输入学生的学号和成绩,并将学生信息存入一个学生数组中。
2. 打印成绩单:print_students 函数实现,可以输出学生数组中所有学生的学号和成绩。
3. 修改成绩:modify_score 函数实现,可以修改学生的成绩。
4. 统计分数段:count_score_range 函数实现,可以统计学生成绩的分布情况,输出各分数段的学生人数和占比情况。
5. 统计平均分:count_average_score 函数实现,可以计算学生的平均成绩。
6. 统计不及格学生:count_failed_student 函数实现,可以统计不及格学生的人数。
在主函数中,通过一个 while 循环实现了不断询问用户要进行的操作,并调用相应的函数来实现。当用户选择退出程序时,主函数返回 0 终止程序运行。
需要注意的是,这段代码中使用的函数都是自定义的,没有使用系统库函数。
相关问题
#include <stdio.h> #define N 4 // 定义学生结构体 struct student { long id; char name[10]; char gender; float score1; float score2; float score3; float total_score; float average_score; };// 计算学生总分和平均分的函数 void count(struct student *stu) { for (int i = 0; i < N; i++) { stu[i].total_score = stu[i].score1 + stu[i].score2 + stu[i].score3; stu[i].average_score = stu[i].total_score / 3.0; } } int main(void) { // 定义学生数组 struct student stu[N]; // 输入学生数据 printf("学号 姓名 性别 课1 课2 课3\n"); for (int i = 0; i < N; i++) { scanf("%ld%s %c%f%f%f", &stu[i].id, &stu[i].name, &stu[i].gender, &stu[i].score1, &stu[i].score2, &stu[i].score3); } // 计算每个学生的总分和平均分 count(stu); // 输出学生数据 printf("学号 姓名 性别 课1 课2 课3 总分 平均分\n"); for (int i = 0; i < N; i++) { printf("%8ld%10s%3c %8ld%10s%3c %8ld%10s%3c %6.1f %6.1f %6.1f\n", stu[i].id, stu[i].name, stu[i].gender, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].total_score, stu[i].average_score); } return 0; }检查程序
这是一段 C 语言程序,用于输入学生的学号、姓名、性别以及三门课的成绩,然后计算每个学生的总分和平均分,并输出所有学生的数据。程序中使用了一个结构体来表示每个学生的数据,并定义了一个计算总分和平均分的函数 count。
程序中的宏定义 #define N 4 定义了学生的数量,可以根据需要修改。在 main 函数中,首先定义了一个学生数组 stu[N],然后通过循环输入每个学生的数据。接着调用 count 函数计算每个学生的总分和平均分。最后,再次循环输出每个学生的数据,包括学号、姓名、性别、三门课的成绩、总分和平均分。
程序的语法看起来没有问题,但还需要测试和验证,确保程序的正确性和稳定性。
计算一组学生的平均成绩和不及格人数。要求使用结构体指针 变量做函数参数编程。 要求:使用函数原型:void aver(struct student*ps) 输入格式: 输出格式: printf("average=%f\ncount=%d\n",avers,c); 输入样例: {{101,"Li ping",'M',45},{102,"Zhang ping",'M',62.5},{10 3,"He fang",'F',92.5},{104,"Chen ling",'F',87}} 输出样例: average=71.750000 count=1
好的,根据你的要求,我来给出完整的代码实现:
```
#include <stdio.h>
struct student {
int num; // 学号
char name[20]; // 姓名
char sex; // 性别
float score; // 成绩
};
void aver(struct student* ps) {
float sum = 0.0; // 成绩总和
int count = 0; // 不及格人数
for (int i = 0; i < 4; i++) {
sum += ps[i].score;
if (ps[i].score < 60) {
count++;
}
}
float average = sum / 4.0; // 计算平均成绩
printf("average=%.6f\ncount=%d", average, count); // 输出结果
}
int main() {
struct student stu[4] = {
{101, "Li ping", 'M', 45},
{102, "Zhang ping", 'M', 62.5},
{103, "He fang", 'F', 92.5},
{104, "Chen ling", 'F', 87}
};
aver(stu); // 调用函数计算平均成绩和不及格人数
return 0;
}
```
在主函数中,我们先定义了一个结构体数组,存储了每个学生的信息。然后,我们调用aver函数,将结构体数组的首地址作为参数传递给函数。
在aver函数中,我们使用了一个for循环来遍历结构体数组,计算成绩总和和不及格人数。最后,我们计算出平均成绩,并输出结果。
输出结果与要求一致:
```
average=71.750000
count=1
```