C++ BMI問題

#include <stdio.h>

#include <stdlib.h>

int main(){

int weight;

int tall;

float BMI;

printf("sent your weight\n");

scanf("%d",&weight);

printf("sent your tall\n");

scanf("%d",&tall);

BMI=(float)weight/tall/tall;

printf("BMI is %f\n",BMI);

return 0;

}

請問一下哪裡打錯了 BMI出來都是80= =

已更新項目:

...... 你這樣tall 跟tall會抵掉吧

2 個已更新項目:

請問一下float差在哪?? 我的體重輸入是整數 為什麼用int就錯了

3 個已更新項目:

if (BMI<18.5)

printf("you are Underweight\n");

if(18.5<24.9)

printd("you are Normal\n");

if(25<29.9)

printf("you are Overweight\n");

if(BMI>25)

printf("you are too fat\n");

那這個位什麼錯了,抱歉我是初學者很多都不懂@@

4 個解答

評分
  • Tai
    Lv 5
    7 年前
    最佳解答

    BMI 的寫法應該沒錯

    BMI = weight/tall/tall;

    要不就寫成不會混淆的 weight / (tall*tall)

    請把 weight, tall 都改成 float.

    scanf 也作相對應更改

    2013-09-19 23:21:20 補充:

    BMI 公式為 weight (公斤) / tall^2 (米^2)

    你的 tall 應該需要輸入小數而非整數.

    用 int 接小數, 會去掉小數點以後數字.

    你用 (float) weight/tall/tall 強制轉型很好.

    但只要 tall 原本就有小數, 運算結果就不合

    2013-09-19 23:23:06 補充:

    if (條件式)

    條件式可由多項邏輯式構成.

    if (BMI<18.5f)

    printf("you are Underweight\\n");

    else if(BMI >=18.5f && BMI <24.9f)

    printd("you are Normal\\n");

    else if(BMI >= 25.f && BMI <29.9f)

    printf("you are Overweight\\n");

    else if (BMI>25.f)

    printf("you are too fat\\n");

    2013-09-19 23:52:49 補充:

    printd("you are Normal\\n"); => printf

  • 7 年前

    參考下面的網址看看

    http://phi008780508.pixnet.net/blog

  • 匿名使用者
    7 年前

    下面的網址應該對你有幫助

    http://phi008780424.pixnet.net/blog

  • 7 年前

    #include <stdio.h>

    #include <stdlib.h>

    int main(){

    float weight,tall,BMI;

    printf("sent your weight\n");

    scanf("%f",&weight);

    printf("sent your tall\n");

    scanf("%f",&tall);

    tall = tall/100;

    BMI=weight/(tall*tall);

    printf("BMI is %f\n",BMI);

    if (BMI<18.5)

    printf("you are Underweight\n");

    else if(BMI >=18.5 && BMI <24.9)

    printf("you are Normal\n");

    else if(BMI >= 25 && BMI <29.9)

    printf("you are Overweight\n");

    else

    printf("you are too fat\n");

    system("pause");

    return 0;

    }

    因為 身高體重 可能有小數,所以宣告改用 float , BMI 也是用float 去顯示出來

    ,如果只想要顯示小數第2位,把上面 printf("BMI is %f\n",BMI); 這一段 改成

    printf("BMI is %.2f\n",BMI); 就可以了。

    if 判斷部分 最後用 else 就可了 ,else if 會在預留最後一次判斷所以多餘了。

還有問題?馬上發問,尋求解答。