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 嗯嗯,没事
2 年多之前 回复
jiankeabcd
jiankeabcd 谢谢您的认真回答 可惜只能采纳一个回答
2 年多之前 回复
herozhangbz
herozhangbz 找最小值的时候出错了,if条件应该是if(m[i]<x)
2 年多之前 回复
herozhangbz
herozhangbz 找最小值的时候出错了,if条件应该是if(m[i]<x)
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
找到年龄最大的人,并输出。请找出程序中有什么问题。
找到年龄最大的人,并输出。请找出程序中有什么问题。 #define N 4 #include "stdio.h" static struct man { char name[20]; int age; } person[N]={"li",18,"wang",19,"zhang",20,"sun",22}; main() { struct man *q,*p; int i,m=0; p=person; for (i=0;i<N;i++) { if(m<p->age) q=p++; m=q->age; } printf("%s,%d",(*q).name,(*q).age);}
C语言最牛逼的代码
设有几个人围坐在一圈并按顺时针方向从1到几编号,从第S个人开始进行1到m的报数。报数到第M个人,此人出圈。再从他的下一个人重新开始1到M的报数,如此进行下一直到所有人都出圈为止,输出报数顺序。
C语言 程序 去最高最低分的评分 , 偏心和不偏心的评分
4.歌星大奖赛 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。 *问题分析与算法设计 这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。 下面是我写的程序,在输入时算出最大最小的是第几个,再算平均分,然后再输出。 #include #define
C语言:按要求找出最大数与最小数,找出错误的代码在哪里
从键盘输入10个整数,按要求找出最大数与最小数,部分代码如下,请完成该程序。#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; Date fun(int a[],int n) { int fun(int a[],int n) { int i; int max,min; max=min=a[0]; for(i=0;i&amp;lt;n;i++) ...
设计一个从5个整数中取最小数和最大数的程序---acm题目
描述 设计一个从5个整数中取最小数和最大数的程序 输入输入只有一组测试数据,为五个不大于1万的正整数输出输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。样例输入 1 2 3 4 5 样例输出 1 5 #include #include int main(){ int i,j,t,a[5]; for(i=0;i<5;i+
C语言寻找出现次数最多的数字
/*不使用列表,而是直接用整型数组进行操作,速度最快,不进行删除,而是将当前位置的数据设置为尾部的数据,等同于数据交换,将不再用的数据移动到尾部就行了,数组的速度比列表要快太多了,*/int _tmain(int argc, _TCHAR* argv[]) { int list[]={1,2,3,4,4,3,2,1,1,2}; int length =sizeof(list)/si
【C语言】找出数组中的最大值,最小值,之差
#include <stdio.h> #include <stdlib.h>int diff_max_min(int *array){ int *max,*min,i,diff; max=min=array; for(i=1;i<10;i++){ if(*(array+i)>*max){ max = array+i; }
c语言编程----找出字符串中出现次数最多的字符
算法复杂度。。。。。
C语言 找出字符串中出现次数最多的字符
网上随便搜了一道简单题,作为第一篇blog,题目如上,代码如下: #include int main(void) { int n=10,count[10]={0,0,0,0,0,0,0,0}; char s[10] = "abacadbb"; puts(s); for(int i=0;i<9;i++) { for(int j=0;j<=i;j++) {
HDU1234 开门人和关门人【水题】
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17861    Accepted Submission(s): 9056 Problem Description 每天第一个到机房的人要把门打开,最后一个离