質問: 誰か教えてください!! main() { float weight,height,s_weight,fatness; int sex,count,keisu,y_cnt,f_cnt,k_cnt,c_cnt,n_cnt; y_cnt=f_cnt=k_cnt=c_cnt=n_cnt=0; printf("*** 肥満度プログラム ***\n"); for(count=1;count<=10;count++) { printf("あなたの体重(kg単位)=\n"); scanf("%f",&weight); printf("あなたの身長(m単位)=\n"); scanf("%f",&height); printf("あなたの性別(男=0/女=1)=\n"); scanf("%d",&sex); if(sex==0) keisu=22; else keisu=20; if(height>0 && weight>0) { s_weight=height*height*keisu; printf("標準体重=%fkg\n",s_weight); fatness=(weight-s_weight)/s_weight*100; printf("肥満度=%f%\n",fatness); if(fatness<-10.0) { printf("やせすぎです。\n"); y_cnt++; } else if(-10.0<=fatness && fatness<10.0) { printf("標準です。\n"); f_cnt++; } else if(10.0<=fatness && fatness<20.0 ) { printf("過体重です。\n"); k_cnt++; } else if(20.0<=fatness) { printf("あなたは超過体重ですわ!\n"); c_cnt++; } else printf("計算できません。\n"); n_cnt++; } } printf("*** 肥満度統計結果 ***\n"); printf("やせすぎ=%d人\n",y_cnt); printf("普通=%d人\n",f_cnt); printf("過体重=%d人\n",k_cnt); printf("超過体重=%d人\n",c_cnt); printf("計算できない人=%d人\n",n_cnt); } これを実行すると、10回それぞれ身長や体重を入力していくのですが、”計算できない人”が毎回加算されてしまい、”計算できない人=10”と出てしまします。他のやせすぎとか過体重などはちゃんと計算してくれるんです。どのようにしたら、ちゃんと”計算できない人”を計算してくれるのでしょうか?
回答: 問題はもう少し根深いようです。 以下で正しいハズです。 あと、 if(fatness<-10.0) { printf("やせすぎです。\n"); は、 if(fatness<=10.0) の間違いでは? なるべく丁寧に見直すようにして下さい。 あるいは、カッコの大枠を先に書いてから中身を書くようにするのも一つの手です。もちろんインデントは必須。 main() { float weight,height,s_weight,fatness; int sex,count,keisu,y_cnt,f_cnt,k_cnt,c_cnt,n_cnt; y_cnt=f_cnt=k_cnt=c_cnt=n_cnt=0; printf("*** 肥満度プログラム ***\n"); for(count=1;count<=10;count++) { printf("あなたの体重(kg単位)=\n"); scanf("%f",&weight); printf("あなたの身長(m単位)=\n"); scanf("%f",&height); printf("あなたの性別(男=0/女=1)=\n"); scanf("%d",&sex); if(sex==0) keisu=22; else keisu=20; if(height>0 && weight>0) { s_weight=height*height*keisu; printf("標準体重=%fkg\n",s_weight); fatness=(weight-s_weight)/s_weight*100; printf("肥満度=%f%\n",fatness); if(fatness<-10.0) { printf("やせすぎです。\n"); y_cnt++; } else if(-10.0<=fatness && fatness<10.0) { printf("標準です。\n"); f_cnt++; } else if(10.0<=fatness && fatness<20.0 ) { printf("過体重です。\n"); k_cnt++; } else if(20.0<=fatness) { printf("あなたは超過体重ですわ!\n"); c_cnt++; } } else { printf("計算できません。\n"); n_cnt++; } } printf("*** 肥満度統計結果 ***\n"); printf("やせすぎ=%d人\n",y_cnt); printf("普通=%d人\n",f_cnt); printf("過体重=%d人\n",k_cnt); printf("超過体重=%d人\n",c_cnt); printf("計算できない人=%d人\n",n_cnt); }