0

我试图编写一个简单的 c 程序,用导数做一些事情,但这不是问题的重点:当我运行程序时,它要求我输入一堆浮点值,但我输入什么并不重要scanf 函数将始终为变量分配“垃圾”值,这是代码:

double a, b, c, d, x, h;
printf("Please enter the coefficient of X cubed: ");
scanf("%3f", &a);
printf("\nPlease enter the coefficient of X squared: ");
scanf("%3f", &b);
printf("\nPlease enter the coefficient of X: ");
scanf("%3f", &c);
printf("\nPlease enter the free coefficient: ");
scanf("%3f", &d);
printf("\nPlease enter x: ");
scanf("%3f", &x);
printf("\nPlease enter the offset: ");
scanf("%3f", &h);

printf("%.3f %.3f %.3f %.3f %.3f %.3f", a,b,c,d,x,h);

我输入了 a、b、c、d、x 和 h 的值,但 printf 函数显示的值非常奇怪——与我输入的完全不同。

我用我想到的所有可能的方式搜索了它,但我似乎无法找到它发生的原因。

有人可以尝试弄清楚它为什么会发生吗?

4

2 回答 2

4

使用lf转换说明符来读取double值,而不是使用转换f说明符来读取float值。fscanf并且fprintf功能在这方面是不对称的。

于 2012-07-23T22:28:06.677 回答
0

您必须使用%lf%g提取双打,而不是%f.

于 2012-07-23T22:29:19.717 回答