注册 登录
编程论坛 C语言论坛

希望大家帮忙解答

zl9426458 发布于 2020-10-28 15:00, 1408 次点击
题目:输入只有一行,为三个用空格分隔的浮点数a,b,c(0<a,b,c<100)
输出也只有一行,如果 a - b 等于c ,则输出yes,否则输出no。
编码:
#include<stdio.h>
main()
{
float a,b,c,d;
scanf("%f %f %f",&a,&b,&c);
 d=a-b;
 if(c==d)
 printf("yes");
 else
   printf("no");
  }
哪里有问题?
3 回复
#2
纯蓝之刃2020-10-28 15:56
浮点数是不能使用==来进行比较的,因为他是浮动的,你也可以认为他是个约数。
你可以使用if((c-d>-0.0001)&&(c-d<0.0001))进行比较。
#3
rjsp2020-10-28 19:03
哪里有问题?

你到医院也会让医生盲猜你哪里不舒服吗?
“哪里有问题”是你应该告诉医生的信息,比如编译失败,比如输入某某,输出却不是你期待的某某。

另外,没特殊原因的话,用double;
题目贴完整,比如输入精度是多少。
#4
rjsp2020-10-28 19:39
好像题目是完整的,那这就是烂B题目了

intel 走进网吧,宣称自己的制程又进步了,明年计划上 10nm。
大家哄笑起来:“人家AMD早就用 7nm 了。”
intel 争辩道:“差别大乎哉?不大也!”
小二:“差别很大呀,同样面积上AMD的晶体管数量是你的两倍”
intel 涨红了脸:“你懂什么,7nm是7e-9米,10nm是10e-9米,两者差值只有3e-9。因为差值小于1e-6,所以可以认为它俩完全相等”
众人竟无法反驳。
1