2 jiankeabcd jiankeabcd 于 2016.04.09 17:01 提问

c语言,找出最瘦的人的程序

BMI=w / h^2
设计一个输入若干个人的名字 身高 体重的时候,输出BMI值最小的人的程序。
输入分为若干行。各行以名字 身高(cm) 体重(kg)的顺序输入。完成后以ctrl-d结束。
输入完成后输出BMI最小的人的名字

输入例

taro 183.3 65.5

syo 177.9 63.8

taisuke 173.1 61.1

ryo 175.4 60.0

输出例

taro

求大神帮忙 真的完全没有思路

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.09 18:05
已采纳

类似这样

 #include<stdio.h>
int main(void){
    double height,weight, bmi = 9999.0;
    char name[32] = {0};
    char res[32] = {0};
    while(scanf("%s%lf%lf", name, &height, &weight) != EOF)
    {
        double cur_bmi = weight / (height * height);
        if(cur_bmi < bmi)
        {
            bmi = cur_bmi;
            strcpy(res, name);
        }
    }
    printf("%s\n", res);
}
lgybetter
lgybetter   2016.04.09 17:05

c语言和c++有什么本质区别能解释一下吗?

lgybetter
lgybetter   2016.04.09 17:15

大神求解。。。。。。。。。。。。。

herozhangbz
herozhangbz   2016.04.10 11:34

我感觉用结构体好些。

     int i,n,y;
     double m[30],x;
     struct 
    {
            char    name[20];
            double  weight;
            double  height;
        }bmi[30] ;
    printf("请输入比较的人数\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("请输入第%d个学生的数据\n",i+1);
    scanf("%s%lf%lf",bmi[i].name,&bmi[i].height,&bmi[i].weight);
    m[i]=bmi[i].weight/bmi[i].height/bmi[i].height;
    }
    for(i=1,x=0;i<n;i++)
{
    x=m[0];
    y=0;
    if(m[i]<=m[i-1])
    {
        y=i;
        x=m[i];
    }
}
printf("bmi最小的是%s\tbmi值为:%f",bmi[y].name,x);

把每个人的bmi放到数组m中,利用冒泡得出最小的bmi值和下标y。bmi[y].name找到最小值的姓名及其他信息

herozhangbz
herozhangbz 嗯嗯,没事
一年多之前 回复
jiankeabcd
jiankeabcd 谢谢您的认真回答 可惜只能采纳一个回答
一年多之前 回复
herozhangbz
herozhangbz 找最小值的时候出错了,if条件应该是if(m[i]<x)
一年多之前 回复
herozhangbz
herozhangbz 找最小值的时候出错了,if条件应该是if(m[i]<x)
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!