初学C语言,有个小问题求大佬解答。关于scanf问题。
#include <stdio.h>int main(void)
{
float fl_num;
printf("Enter a floating-point value:");
scanf("%f\n", &fl_num);
printf("fixed-point notation: %f\n", fl_num);
printf("exponential notation: %e\n", fl_num);
printf("p notation: %a\n", fl_num);
return 0;
}
这个是我的代码。
为什么在scanf这一行中%f后面加上换行,需要这样输入才会展示出结果,
Enter a floating-point value:64.25
1
fixed-point notation: 64.250000
exponential notation: 6.425000e+01
p notation: 0x1.01p+6
难道不应该是输入64.25后变成这样吗
Enter a floating-point value:64.25
fixed-point notation: 64.250000
exponential notation: 6.425000e+01
p notation: 0x1.01p+6 本帖最后由 jackz007 于 2019-10-16 18:38 编辑
如果不想自找麻烦,scanf() 的格式串里内容越少越好,甚至连空格都不要有,尤其是不能有回车符 '\n',不要问什么,只要作为经验记住就可以了。 在scanf()下一行加 printf("\n"); 是不是会好一点。 scanf()操作的是输入流,从键盘读入数据。输入需要个数的数据,按照空格或者逗号隔开,最后enter结束输入。
再使用printf()函数操作输出流时,把你从键盘输入的数据输出到屏幕显示
如果你想让显示为上述你想要的结果,可以这样写
#include <stdio.h>
int main(void)
{
float fl_num;
printf("Enter a floating-point value:");
scanf("%f", &fl_num);
puts("");//这一句可以去掉,写上的目的是为了分隔输入前后的语句
printf("fixed-point notation: %f\n", fl_num);
printf("exponential notation: %e\n", fl_num);
printf("p notation: %a\n", fl_num);
return 0;
}
运行结果如下:
Enter a floating-point value:64.25
fixed-point notation: 64.2500
exponential notation: 6.42500
p notation: 0x1.010000p+6
页:
[1]