C语言程序设计学生记录由学号、姓名和C语言成绩组成,根据班级人数,将学生记录存放在结构体数组中。计算该班学生C语言的平均分和标准差,输出最低分学生记录(可能不止一个学生)。要求:班级人数、学生记录均由键盘输入。
时间: 2024-03-22 22:42:10 浏览: 98
C语言程序设计-统计出若干个学生的平均成绩,最高分以及得最高分的人数;
5星 · 资源好评率100%
好的,这是一个关于C语言程序设计的问题。以下是代码示例:
```c
#include <stdio.h>
#include <math.h>
// 定义一个结构体用于存储学生记录
struct student
{
int id;
char name[20];
float score;
};
int main()
{
int n, i;
float sum = 0, average, variance, sd = 0;
struct student s[100], min[100];
// 输入班级人数
printf("请输入班级人数:\n");
scanf("%d", &n);
// 输入学生记录
printf("请输入学生记录:\n");
for (i = 0; i < n; i++)
{
printf("请输入第 %d 个学生的学号、姓名和成绩:\n", i + 1);
scanf("%d %s %f", &s[i].id, s[i].name, &s[i].score);
sum += s[i].score; // 累加成绩
}
// 计算平均分
average = sum / n;
// 计算方差和标准差
for (i = 0; i < n; i++)
{
variance += pow(s[i].score - average, 2);
}
variance /= n;
sd = sqrt(variance);
// 输出平均分和标准差
printf("平均分为:%f\n", average);
printf("标准差为:%f\n", sd);
// 查找最低分学生记录
int count = 0;
float min_score = s[0].score;
for (i = 0; i < n; i++)
{
if (s[i].score < min_score)
{
min_score = s[i].score;
count = 0;
min[count] = s[i];
}
else if (s[i].score == min_score)
{
count++;
min[count] = s[i];
}
}
// 输出最低分学生记录
printf("最低分为:%f,对应的学生记录如下:\n", min_score);
for (i = 0; i <= count; i++)
{
printf("学号:%d,姓名:%s,成绩:%f\n", min[i].id, min[i].name, min[i].score);
}
return 0;
}
```
以上代码实现了输入班级人数和学生记录、计算平均分和标准差、查找最低分学生记录并输出的功能。注意,本程序中使用了结构体数组来存储学生记录,使用了数学库中的 pow 函数和 sqrt 函数来计算方差和标准差。
阅读全文