大佬们 哪里错了

Believe One 2019-01-15 07:13:44
/*用宏定义求绝对值,用问号运算符*/
#include<stdio.h>
#define ABS(x) (x>0?(x):(-x))

void main()
{
float x=0;

printf("请输入一个数\n");
scanf("%f\n",&x);

float y;
y=ABS(x);

printf("y=%.3f",y);

printf("\n");


}
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2019-01-16
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
zhouqunhai 2019-01-16
  • 打赏
  • 举报
回复
你的输入不对啊
自信男孩 2019-01-16
  • 打赏
  • 举报
回复
去掉scanf中的'\n',因为scanf是格式化输入,没有匹配'\n'。

另外,对于浮点数和0比较不能按照整型数与0比较方法。

浮点数比较方法(float):
if (x > 0 && x > 1e-6)
printf("x大于0\n");
if (x < 0 && fabs(x) > 1e-6)
printf("x 小于0\n");
if (fabs(x) < 1e-6)
printf("x等于0\n");
棉猴 2019-01-16
  • 打赏
  • 举报
回复
scanf("%f\n",&x); 

的意思是,scanf()读取了缓冲区中的数据之后,继续读取缓冲区下一行的数据。如果缓冲区的下一行没有数据,则scanf()就会阻塞。所以此时没有数据输出,需要“再输入一个随便的数字”,scanf()函数才会返回程序才会向下继续运行。
棉猴 2019-01-16
  • 打赏
  • 举报
回复
scanf("%f\n",&x); 

改为
scanf("%f",&x); 
Believe One 2019-01-15
  • 打赏
  • 举报
回复
输入一个数字之后 还要再输入一个随便的数字才能出现结果

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧