永发信息网

C语言问题帮我看看出什么问题了?

答案:6  悬赏:40  手机版
解决时间 2021-04-30 17:57
  • 提问者网友:wodetian
  • 2021-04-30 07:59

#include<stdio.h>
void main()
{
int a;
scanf("%d",&a);
if(a==1)
printf("yes");
else printf("no");
}

我输入数字的时候结果是对的,但是我把int 等一系列换成double float再输入就是错误的,这是什么问题?

最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-04-30 08:45

你要把


scanf("%d",&a);换成scanf("%f",&a);

全部回答
  • 1楼网友:毛毛
  • 2021-04-30 11:59
scanf和printf必须为参数提供正确的格式化字符串才能正常工作 #include<stdio.h> void main() { double a; scanf("%lf",&a); // int %d 部分其他类型的格式化控制符 // short %hd // char %c // float %f // double %lf if(a==1) printf("yes"); else printf("no"); }
  • 2楼网友:躲不过心动
  • 2021-04-30 10:32

因为DOUBLE FLOAT型数据在计算机内存中存储的时候小数后是内存随机数。不是全0。你输入1,其实可能是1.000334。所以要两个数相等很难。具体为什么你就要知道他们在计算机内到底是怎么存储的了。

  • 3楼网友:愁杀梦里人
  • 2021-04-30 09:42

if(a==1)

这一句,只有A为整型,输入1的时候才为真。

如果A为double,float,后面的1,要改成1.0

  • 4楼网友:旧脸谱
  • 2021-04-30 09:25
你换成int后scanf("%d",&a);中的d%要换成f%,否则类型不匹配哦。
  • 5楼网友:十鸦
  • 2021-04-30 08:53
你如果输入的是FLOAT的话后面的要改成scanf("%ld",&a);加一个l否则前后矛盾就出不来了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯