// 统计平均分函数 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 12:53:08 浏览: 126
这是一段 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},{103,"He fang",'F',92.5},{104,"Chen ling",'F',87}} 输出样例: average=71.750000 count=1
好的,让我们来看一下如何使用结构体指针变量计算学生的平均成绩和不及格人数。
首先,我们需要定义一个结构体,表示学生信息,包括学号、姓名、性别和成绩。然后定义一个结构体指针变量,指向一个包含多个学生信息的数组。
接着,我们定义一个函数`aver()`,该函数接受一个结构体指针变量作为参数,计算所有学生的平均成绩和不及格人数。
最后,在`main()`函数中,我们定义一个包含多个学生信息的数组,然后调用`aver()`函数来计算平均成绩和不及格人数,并输出结果。
这是完整的代码实现:
```c
#include <stdio.h>
struct student {
int num;
char name[20];
char sex;
float score;
};
void aver(struct student *ps);
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;
}
void aver(struct student *ps)
{
float sum = 0;
int count = 0;
for (int i = 0; i < 4; i++) {
sum += (ps + i)->score;
if ((ps + i)->score < 60) {
count++;
}
}
float aver = sum / 4;
printf("average=%f\ncount=%d\n", aver, count);
}
```
在`aver()`函数中,我们使用结构体指针`ps`来遍历整个学生数组,计算所有学生的成绩总和,并统计不及格人数。最后计算平均成绩并输出结果。
在`main()`函数中,我们定义一个包含多个学生信息的数组`stu`,然后调用`aver()`函数来计算平均成绩和不及格人数,并输出结果。
输出结果为:
```
average=71.750000
count=1
```
注意,这里平均成绩的精度为6位小数,可以根据需要进行调整。同时,这里的不及格标准是60分,可以根据实际需求进行修改。
阅读全文