我用VC6.0编了个小程序,编译组建都对了,但是运行结果就是不对,哪位大神指点一下!(在线等)!!!

#include<stdio.h>
void main()
{
int a;
float w,h,b,c,bmi,i;
scanf("%f%f%f",&a,&w,&h);/*先输入若男则输入1,若女则输入2;再输入体重,单位kg;最后输入身高,单位为cm*/
if(a==1)
b=(h-100)*0.9;
printf("%f\n",&b);/*此为标准体重*/
if(w<0.85*b)
printf("您的体格比正常男人偏瘦\n");
else if(w>=0.85*b&&w<1.15*b)
printf("恭喜你,你很正常\n ");
else if(w>=1.15*b&&w<1.25*b)
printf("您的体格比正常男人偏胖\n");
else if(w>=1.25*b)
printf("您太胖了\n");
bmi=w/(h*h);
for(c=bmi,i=7;i<=21;i+=7)
c=c-i;
printf("%f\n",c);/*此为简化后bmi指数*/
if(c<-2)
printf("建议您多吃高蛋白食品,必须吃早餐,不熬夜\n");
else if(c>=-2&&c<4)
printf("您符合标准,建议您合理搭配食物\n");
else if(c>=4)
printf("建议您少吃高热量高蛋白食品,多吃素菜,平常多运动\n");
else
{
b=(h-102)*0.9-2.5;
printf("%f\n",&b);/*此为标准体重*/
if(w<0.9*b)
printf("您的身材过于苗条了\n");
else if(w>=0.9*b&&w<1.1*b)
printf("恭喜你,你的身材很正常\n");
else if(w>=1.1*b&&w<1.2*b)
printf("您的身材微胖\n");
else if(w>=1.2*b)
printf("您的身材发福了\n");
bmi=w/(h*h);
for(c=bmi,i=7.5;i<=22.5;i+=7.5)
c=c-i;
printf("%f\n",c);/*此为简化后bmi指数*/
if(c<-3.5)
printf("建议您多吃高蛋白食品,不要挑食,准时吃饭,养成良好习惯\n");
else if(c>=-3.5&&c<2.5)
printf("您符合标准,建议您合理搭配食品,形成良好习惯\n");
else if(c>=2.5)
printf("建议您多吃水果已经含纤维素食品,不吃高热量等垃圾食品,多运动\n");
}
}

问题:
1. if(a==1) {...} else {...} 缺少一对大括号
2. a是int类型,scanf中要用%d
3.printf("%f\n",&b);/*此为标准体重*/ //&b应该为b

修改后的代码:
#include<stdio.h>
void main()
{
int a;
float w,h,b,c,bmi,i;
printf("请输入:性别(男:1 女:2),体重(kg),身高(cm):");
scanf("%d,%f,%f",&a,&w,&h);/*先输入若男则输入1,若女则输入2;再输入体重,单位kg;最后输入身高,单位为cm*/
if(a==1)
{
b=(h-100)*0.9;
printf("男性身高%.fcm的健康体重为%.fKg\n",h,b);/*此为标准体重*/
if(w<0.85*b) printf("您的体格比正常男人偏瘦。\n");
else if(w>=0.85*b&&w<1.15*b) printf("恭喜你,你很正常。\n ");
else if(w>=1.15*b&&w<1.25*b) printf("您的体格比正常男人偏胖。\n");
else printf("您太胖了。\n");
bmi=w/(h*h);
for(c=bmi,i=7;i<=21;i+=7)
c=c-i;
printf("BMI指数为:%f\n",c);/*此为简化后bmi指数*/
if(c<-2) printf("建议您多吃高蛋白食品,必须吃早餐,不熬夜\n");
else if(c>=-2&&c<4) printf("您符合标准,建议您合理搭配食物\n");
else printf("建议您少吃高热量高蛋白食品,多吃素菜,平常多运动\n");
}
else
{
b=(h-102)*0.9-2.5;
printf("女性身高%.fcm的健康体重为%f.Kg\n",h,b);/*此为标准体重*/
if(w<0.9*b) printf("您的身材过于苗条了\n");
else if(w>=0.9*b&&w<1.1*b) printf("恭喜你,你的身材很正常\n");
else if(w>=1.1*b&&w<1.2*b) printf("您的身材微胖\n");
else printf("您的身材发福了\n");
bmi=w/(h*h);
for(c=bmi,i=7.5;i<=22.5;i+=7.5)
c=c-i;
printf("BMI指数为:%f\n",c);/*此为简化后bmi指数*/
if(c<-3.5) printf("建议您多吃高蛋白食品,不要挑食,准时吃饭,养成良好习惯\n");
else if(c>=-3.5&&c<2.5) printf("您符合标准,建议您合理搭配食品,形成良好习惯\n");
else printf("建议您多吃水果已经含纤维素食品,不吃高热量等垃圾食品,多运动\n");
}
}追问

这也不对啊。。把男的各项输入进去得到的结果都一样,女的输入也都一样

追答

我把scanf一句给改了,输入内容改成这种格式了: 1,60,170
还有我把体重和身高输出改成保留小数点前了,把下面这句
  printf("男性身高%.fcm的健康体重为%.fKg\n",h,b);/*此为标准体重*/
改成
  printf("男性身高%.1fcm的健康体重为%.2fKg\n",h,b);/*此为标准体重*/

这样,体重保留2位小数,身高保留1位小数。后面女性的标准体重输出也改成类似的。
BMI的计算公示我不懂,但是我能看出来你的计算公示有误。我猜测可能是身高单位有误。
因为你用了for,i是变化的,所以你的公式相当于:
男性:c=w/(h*h)-42
女性:c=w/(h*h)-45

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-26
设置断点,一步步的调试,自己检查哪里出错追问

不会断点,真心新手。。