jiankeabcd
jiankeabcd
采纳率73.9%
2016-04-09 09:01 浏览 1.5k
已采纳

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 小灸舞 2016-04-09 10: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 09:05

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

    点赞 评论 复制链接分享
  • lgybetter lgybetter 2016-04-09 09:15

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

    点赞 评论 复制链接分享
  • herozhangbz herozhangbz 2016-04-10 03: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找到最小值的姓名及其他信息

    点赞 评论 复制链接分享

相关推荐