二进制和&的操作数无效; (有'浮动*'和'浮动')

时间:2015-08-21 16:24:12

标签: c

我无法弄清楚我需要做些什么来让我的代码工作,我尝试了一些事情,但同样的错误不断发生。我不确定如何继续,代码的主要问题似乎是将小时和分钟转换为仅数小时。我知道这是一个非常基本的问题,但我是初学者,似乎无法找到解决方案。

// freezer.c
// Estimates the temperature in a freezer given the elapsed time since a power failure.
#include <stdio.h>
#include <math.h>

int main(void) {
     float dec_time, // input - time in hours and minutes.
           temperature, // output - temperature in degrees celsius
           hours, // input for dec_time
          minutes; // input for dec_time 

     /* Get the time in hours and minutes */
     printf("hours and minutes since power failure: ");
     scanf("%lf%lf", &hours &minutes);

     /* Convert the time in hours and minutes into only hours in real number */
     dec_time = hours + (minutes / 60.0);

     // Using time via an equation to estimate the temperature
     temperature = ((4 * dec_time * dec_time) / (dec_time + 2)) - 20;

     // Display the temperature in degrees celsius
     printf("Temperature in freezer %9.2f.\n", temperature);

     return 0;
 }

任何人都可以给予解释的任何解释将非常感谢。

编辑:当我将逗号添加到计算机代码中的scanf()语句时,标题中的主要编译错误已解决。我还将%lf更改为%f,但现在当我将单个数字键入a.out时,例如3,程序直到我键入q!才会计算。

3 个答案:

答案 0 :(得分:3)

scanf("%lf%lf", &hours &minutes)更改为scanf("%f%f", &hours, &minutes)。否'l'@melpomene添加逗号@Anton Malyshev

还建议检查结果是否为2.(成功扫描了2个字段)。

if (2 != scanf("%f%f", &hours, &minutes)) {
  puts("Input error");
  exit(1);
}

答案 1 :(得分:2)

scanf("%lf%lf", &hours &minutes);
                      ^ comma needed

您错过了逗号,

重写如下 -

scanf("%f%f",&hours,&minutes);  // make sure you use only %f and not %lf

答案 2 :(得分:1)

你错过了逗号,它应该如何:scanf("%lf%lf", &hours, &minutes)