1
double low = 0 , high = 0.0,n = 0.0;
----
printf("Enter the integral limits (low high): ");
scanf("%lf %lf", &low, &high);

printf("%lf%lf",low,high);
printf("Enter the number of subinternals (n): ");
scanf("%lf",&n);

当我测试这个程序时(通过

    printf("%lf%lf",low,high);) (6th line)

对于低和高,我得到 0.000000 和 0.000000 的值。我在程序开始时初始化了它们,现在我正在尝试为它们输入值。

我究竟做错了什么?

{PS 我在 Windows 7 笔记本电脑上。我已经尝试将“%f”更改为“%lf”并返回“%f”)

我应该怎么办?(请帮忙!)

编辑:我不确定刚刚发生了什么。我错误检查了

        if (2 != scanf("%lf %lf", &low, &high))
               printf("scanf failed!\n")

而发生的事情是,在我的“..(低高):”之后,我输入了 1 和 2,然后程序正在等待更多输入,然后我再次输入 1 和 2,这一次,它给出了正确的打印...不知道发生了什么?

输出画面: http ://s1288.photobucket.com/user/Kdragonflys/media/ss_zps6b85396e.png.html

4

2 回答 2

2

你需要%lffor doubles with scanf,如果你有两个doubles 要阅读,你还需要其中两个。

所以改变:

scanf("%f", &low, &high);

至:

scanf("%lf %lf", &low, &high);

也改变:

scanf("%f",&n);

至:

scanf("%lf",&n);

注意:错误检查总是一个好主意 -scanf返回成功处理的值的数量。所以你可以检查第一个scanf电话是否像这样工作:

if (scanf("%lf %lf", &low, &high) != 2)
    printf("scanf failed!\n");
于 2013-10-25T16:06:14.497 回答
0

尝试这个,

double low = 0.0 , high = 0.0,n = 0.0;
----
printf("Enter the integral limits (low high): ");
scanf("%lf %lf", &low, &high);

printf("%lf %lf",low,high);
printf("Enter the number of subinternals (n): ");
scanf("%lf",&n);
于 2013-10-25T16:10:50.250 回答