如何在C语言中按对读取浮点数?

4

编写一个程序,请求两个浮点数,并打印它们的差值除以它们的乘积的值。让程序循环遍历输入值对,直到用户输入非数字输入为止。 使用函数返回计算的值。

我已经成功完成了这个练习,但是使用函数时无法正确完成。程序本身运行但实际上没有返回任何值,甚至崩溃了。

请帮忙解决问题。

这是我的程序:

#include <stdio.h>
#include <string.h>

double result (double x, double y);

int main(void)
{
     double num1, num2, res;
     printf("This while calculate difference of two numbers by their product.\n");
     printf("Enter first number followed by second number\n");

     while (scanf("%lf %lf", &num1, &num2 ==2))
     {
         res= result(num1, num2);
         printf("the result is equal to %.3g\n", res);
         printf("Enter next set of numbers or q to quit\n");
     }
     return 0;
}
double result(double x, double y)
{
    double output;
    output = (y-x)/(x*y);
    return output;
}

while (scanf("%lf %lf", &num1, &num2 == 2)) 这一行代码是在做什么? - Leonardo
你尝试了所以给你加一分。尝试缩进代码。我会回复的。 - Ed Heal
2个回答

8
while (scanf("%lf %lf", &num1, &num2 ==2))

原本的意图是:

while (scanf("%lf %lf", &num1, &num2) ==2)

给他加1 - 这个论坛上少有的几个作业问题之一,至少做了一点尝试。 - Ed Heal

2
尝试更改。
  while (scanf("%lf %lf", &num1, &num2 ==2))

为了

 while (scanf("%lf %lf", &num1, &num2) ==2)

我很惊讶它编译通过了。打开所有警告。 - Ed Heal
为什么它不能编译? - Barmar
你认为 while (2 == scanf("%lf %lf", &num1, &num2)) 有意义吗? - dcaswell
@EdHeal:它能编译通过,这也让我感到惊讶。这是我在回答后尝试的第一件事情。 - LihO
是的 - 尤达 - 法国人一直这样做 - Ed Heal
@LihO &num2 == 2 相当于 (int)(&num2) == 2。虽然没有太多意义,但在语法上是有效的。 - Barmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接