在C语言中初学者的练习中对于scanf有些细节没能注意到,比如在计算BMI小练习中我就遇到了因为scanf小细节而输出失败的问题,话不多说看代码。
#include <stdio.h>
/*输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数。
例如:一個52公斤的人,身高是155cm,则BMI为 :
52(kg)/1.55^2(m)= 21.6(**)
BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖*/
int main(int argc, char *argv[]) {
//1.定义两个变量用来存放身高和体重,一个变量存放BMI
float height, weight, BMI;
//2.输入身高,体重
printf("请输入身高\n");
scanf("%.2f", &height);
printf("请输入体重\n");
scanf("%.2f", &weight);
//3.计算BMI的值
BMI=weight/(height*height);
//4.用if语句来判断BMI属于哪个档次并输出相应身体状况
if (BMI>32){
printf("严重肥胖!");
} else if (BMI>28){
printf("肥胖!");
} else if (BMI>25){
printf("过重!");
} else if (BMI>18.5){
printf("正常");
} else{
printf("过轻!");
}
return 0;
}
在第二步的时候使用scanf的时候我想把输出的数据显示小数点后两位,所以在这里加入了.2,这就是概念混淆的问题。实际上想要确定输出的数据显示小数点后两位只需要在printf中加入.2就行了。正确代码如下所示:
#include <stdio.h>
/*输入一个人的身高(m)和体重(kg),根据BMI公式(体重除以身高的平方)计算他的BMI指数。
例如:一個52公斤的人,身高是155cm,则BMI为 :
52(kg)/1.55^2(m)= 21.6(**)
BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖*/
int main(int argc, char *argv[]) {
//1.定义两个变量用来存放身高和体重,一个变量存放BMI
float height, weight, BMI;
//2.输入身高,体重
printf("请输入身高\n");
scanf("%f", &height);
printf("请输入体重\n");
scanf("%f", &weight);
//3.计算BMI的值
BMI=weight/(height*height);
//4.用if语句来判断BMI属于哪个档次并输出相应身体状况
if (BMI>32){
printf("严重肥胖!");
} else if (BMI>28){
printf("肥胖!");
} else if (BMI>25){
printf("过重!");
} else if (BMI>18.5){
printf("正常");
} else{
printf("过轻!");
}
return 0;
}
C语言小白亲身经历,C语言的输入输出方式跟Java还是有些不一样的,所以不管写什么代码的时候都要万分注意小细节^_^。