C语言编程一、软件开发目的用C语言实现班级同学身体质量指数BMI的统计分析二、数据结构用结构体数组存储班级同学的数据55包括:身高、体重、BMI要求:输入原始是每个同学的身高、体重。三、软件功能说明(1)计算每个同学的BMI值(2)统计各个BMI段的同学人数(正常、瘦、胖、肥胖等)同时把数据写入文件中(3)(4)5同时找到其中的最大和最小BMI值的同学信息并对所有的同学按BMI值排序(从小到大)
时间: 2024-03-24 13:37:34 浏览: 18
好的,根据你的要求,我可以给你提供一些思路和实现方法:
一、软件开发目的:
实现班级同学身体质量指数BMI的统计分析,包括计算每个同学的BMI值,统计各个BMI段的同学人数,找到其中的最大和最小BMI值的同学信息并对所有的同学按BMI值排序。
二、数据结构:
使用结构体数组存储班级同学的数据,包括身高、体重和BMI值。
```
#define MAX 55 //定义最大人数
struct student {
float height; //身高
float weight; //体重
float BMI; //BMI值
};
struct student stu[MAX]; //结构体数组
```
三、软件功能说明:
1.计算每个同学的BMI值
BMI值的计算公式为:BMI = 体重(kg)/ 身高(m)的平方。
```
void calculate_BMI() {
int i;
for (i = 0; i < MAX; i++) {
stu[i].BMI = stu[i].weight / pow(stu[i].height / 100, 2);
}
}
```
2.统计各个BMI段的同学人数
根据BMI值的范围,可以将同学分为正常、偏瘦、偏胖、肥胖四个段。可以定义一个计数数组,对每个BMI段的同学进行计数,并将结果输出到文件中。
```
void count_BMI() {
int i;
int count[4] = {0}; //定义计数数组
for (i = 0; i < MAX; i++) {
if (stu[i].BMI < 18.5) { //偏瘦
count[0]++;
} else if (stu[i].BMI < 24.0) { //正常
count[1]++;
} else if (stu[i].BMI < 28.0) { //偏胖
count[2]++;
} else { //肥胖
count[3]++;
}
}
FILE *fp;
fp = fopen("result.txt", "a"); //以追加的方式打开文件
fprintf(fp, "各个BMI段的人数统计如下:\n");
fprintf(fp, "偏瘦:%d人\n", count[0]);
fprintf(fp, "正常:%d人\n", count[1]);
fprintf(fp, "偏胖:%d人\n", count[2]);
fprintf(fp, "肥胖:%d人\n", count[3]);
fclose(fp);
}
```
3.找到最大和最小BMI值的同学信息
可以定义两个变量来保存最大和最小BMI值的同学信息,同时对所有同学按BMI值进行排序。
```
void sort_BMI() {
int i, j;
struct student temp;
for (i = 0; i < MAX - 1; i++) { //冒泡排序
for (j = 0; j < MAX - i - 1; j++) {
if (stu[j].BMI > stu[j + 1].BMI) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
FILE *fp;
fp = fopen("result.txt", "a"); //以追加的方式打开文件
fprintf(fp, "BMI值最大的同学信息如下:\n");
fprintf(fp, "身高:%.2f cm\n", stu[MAX - 1].height);
fprintf(fp, "体重:%.2f kg\n", stu[MAX - 1].weight);
fprintf(fp, "BMI值:%.2f\n", stu[MAX - 1].BMI);
fprintf(fp, "BMI值最小的同学信息如下:\n");
fprintf(fp, "身高:%.2f cm\n", stu[0].height);
fprintf(fp, "体重:%.2f kg\n", stu[0].weight);
fprintf(fp, "BMI值:%.2f\n", stu[0].BMI);
fprintf(fp, "所有同学按BMI值排序如下:\n");
for (i = 0; i < MAX; i++) {
fprintf(fp, "%d、身高:%.2f cm,体重:%.2f kg,BMI值:%.2f\n", i + 1, stu[i].height, stu[i].weight, stu[i].BMI);
}
fclose(fp);
}
```
以上就是实现班级同学身体质量指数BMI的统计分析的具体实现方法,希望能对你有所帮助。