質問: 身長、体重を入力することで、身長、体重、BMI、肥満度、適正体重を出力するプログラムを作成したいのですが、コンパイルはできるものの、明らかにおかしい数字が出てきてしまい、どこがおかしいのかがよくわかりません。 とりあえず自分は以下のようにプログラムをしました。 ``` #include void print_nw(double height,double weight) { double bmi,tekisei; bmi=weight/(height*height); tekisei=height*height*22; printf("身長=%.1f cm,体重=%.1f kg\n",height,weight); printf("BMI=%.1f\n",bmi); printf("適正体重は%.1f kgです。\n",tekisei); if(bmi<18.5){ printf("低体重です。\n"); } else if(18.5<=bmi && bmi<25){ printf("標準体重です。\n"); } else if(25<=bmi && bmi<30){ printf("肥満一度です。\n"); } else if(30<=bmi && bmi<35){ printf("肥満二度です。\n"); } else if(35<=bmi && bmi<40){ printf("肥満三度です。\n"); } else { printf("肥満四度です。\n"); } } int main() { double h,w; printf("身長(cm)? "); scanf("%lf",&h); printf("体重(kg)? "); scanf("%lf",&w); print_nw(h,w); return 0; } ``` <実行結果> ``` $ ./a.out 身長(cm)? 163 体重(kg)? 45 身長=163.0 cm,体重=45.0 kg BMI=0.0 適正体重は584518.0 kgです. 低体重です。 ``` しかし、正しくプログラムができていれば、以下のような結果が出てくるはずです。 ``` 身長(cm)? 163 体重(kg)? 45 身長=163.0 cm,体重=45.0 kg BMI=16.9 適正体重は58.4 kgです。 低体重です ``` どの部分を直せばいいのでしょうか。ご回答よろしくお願いします。
回答: BMI計算で掛ける身長は単位がmだった気がするので、単純に`height*height`の計算が`163×163(cm)`ではなく`1.63×1.63(m)`の計算になる必要があるような気がします。