c语言关于if语句的问题!

#include<stdio.h>#include<math.h>int main(){ float num; printf("\t\t\t………………\n"); printf("………………:"); scanf("%f",&num); if(num!=0) printf("…………\'%.2f\'……,………………%.2f元\n",num,fabs(num)); else if(num>0) { if(num==0) printf("………………\'%f\'元\n",num); else { if(num>1000) printf("………………\'%.2f\'……,………………\n",num); else if(num>500) printf("…………\'%.2f\'……,…………\n",num); else printf("………………\'%.2f\'……,………………\n",num); } } else printf("对不起!您输入的值是非法值,请重新输入!\n"); return 0;}

不明白的是这个程序中的最后面的 else的语句 我前面的额条件是当num小于0时会有对应的if选择当num大于等于0时也有对应的if选择!为什么当我输入 字母的时候 显示的确实这个样子的

而不是去else这里输出 非法值? 本人小白一枚!初学c语言! 烦请各位大神指教!!谢谢
上面的程序中 if(num>0)是这样的 不是if(num!=0)

#include<stdio.h>
#include<math.h>
int main()
{
float num;
int input;
printf("\t\t\t………………\n");
printf("………………:");
input = scanf("%f", &num); // input 表示成功读入的参数的个数
if (input == 1 && num >= 0) { 
if (fabs(num) < 1e-6) {
printf("…………\'%.2f\'……,………………%.2f元\n", num, fabs(num));
}
else
{
if (num == 0)
printf("………………\'%f\'元\n", num);
else
{
if (num > 1000)
printf("………………\'%.2f\'……,………………\n", num);
else if (num > 500)
printf("…………\'%.2f\'……,…………\n", num);
else
printf("………………\'%.2f\'……,………………\n", num);
}
}
}
else { // 如果input不等于1,说明读取浮点数失败
printf("对不起!您输入的值是非法值,请重新输入!\n");
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-14
浮点数不能做相等判断追问

哦哦 谢谢您哈!按照您的说法我把程序中的float换位int型确实当我输入字母的时候他显示了非法值也就是最后的else哪里的语句! 但是我还是没明白您的意思 请您具体说下 !谢谢啦!!! 为什么当他是浮点型的时候不会显示最后的else呢?int却会呢?

相似回答