用c语言写如下程序:BMI指数是国际上判断一个人体脂是否正常的标准,BMI是体重(千克)除以身高(米)的平方,为统计学生的胖瘦情况,每个学生的信息有学号(数字序列,长度小于12),姓名(长度小于10),身高、体重、BMI、肥胖状态(0为正常,-1偏瘦,1偏胖)。 输入格式: 输入正整数n(大于等于3小于20),随后给出n行学生学号、姓名、身高、体重信息数据,姓名和学号没有空白字符。 输出格式: 分类输出体脂正常、偏瘦、偏胖学生的学号、姓名及BMI指数,数据间\t隔开,每行输出一个学生信息,若不存在该类学生,输出“无此类学生”
时间: 2023-12-01 13:04:53 浏览: 182
以下是用C语言编写的程序,实现了上述功能:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 20
#define MAXL 12
#define MAXNAM 10
struct Student {
char id[MAXL];
char name[MAXNAM];
double height;
double weight;
double bmi;
int status;
};
int main() {
int n, i;
double bmi;
struct Student stus[MAXN];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s %s %lf %lf", stus[i].id, stus[i].name, &stus[i].height, &stus[i].weight);
stus[i].bmi = stus[i].weight / (stus[i].height * stus[i].height);
if (stus[i].bmi < 18.5) {
stus[i].status = -1;
} else if (stus[i].bmi > 25) {
stus[i].status = 1;
} else {
stus[i].status = 0;
}
}
for (i = 0; i < n; i++) {
if (stus[i].status == -1) {
printf("%s\t%s\t%.2lf\n", stus[i].id, stus[i].name, stus[i].bmi);
}
}
for (i = 0; i < n; i++) {
if (stus[i].status == 0) {
printf("%s\t%s\t%.2lf\n", stus[i].id, stus[i].name, stus[i].bmi);
}
}
for (i = 0; i < n; i++) {
if (stus[i].status == 1) {
printf("%s\t%s\t%.2lf\n", stus[i].id, stus[i].name, stus[i].bmi);
}
}
return 0;
}
```
程序首先定义了一个 `Student` 结构体来存储每个学生的信息,包括学号、姓名、身高、体重、BMI指数和肥胖状态。然后,程序读取输入的学生信息,并通过公式计算每个学生的BMI指数,并根据BMI指数判断学生的肥胖状态。最后,程序按照偏瘦、正常、偏胖的顺序输出学生的信息。
需要注意的是,在输出学生信息时,需要使用制表符 `\t` 进行分隔。此外,由于学号和姓名的长度有限制,需要在结构体中定义合适的数组大小。