Printf возвращает только нули - PullRequest
0 голосов
/ 03 ноября 2018

Я сижу прямо перед моим компьютером, но не имею понятия, где моя ошибка. Так вот мой код в C:

#include <stdio.h>
#include <math.h>

double f (double x);

int main ()
{
    double x;

    printf("Please type in a decimal number: ");
    scanf("&lf", &x);

    printf("%", f(x));

    return 0;
}

double f (double x)
{
    return (fabs(x) * sin(x) * 10e-2);
}

Я читаю код несколько раз, но я либо слишком глуп, либо просто не могу найти ошибку. Пожалуйста, помогите мне. Я был бы очень рад, если бы вы мне помогли.

Надеюсь, у вас, ребята, есть идея или совет для меня (даже это было бы полезно).

1 Ответ

0 голосов
/ 03 ноября 2018

Изменить это:

scanf("&lf", &x);

к этому:

scanf("%lf", &x);

и это:

printf("%", f(x));

к этому:

printf("%lf", f(x));

Вместо того, чтобы сидеть перед компьютером, попросите помощи компилятора, скомпилировав флаг -Wall, чтобы включить значительное количество предупреждений. Тогда ваш опубликованный код должен был дать вам:

prog.c: In function 'main':
prog.c:11:11: warning: too many arguments for format [-Wformat-extra-args]
   11 |     scanf("&lf", &x);
      |           ^~~~~
prog.c:13:13: warning: spurious trailing '%' in format [-Wformat=]
   13 |     printf("%", f(x));
      |             ^
prog.c:13:12: warning: too many arguments for format [-Wformat-extra-args]
   13 |     printf("%", f(x));
      |            ^~~

, который помог бы вам точно определить проблему и начать поиск в интернете, например, до Чтение двойных значений с помощью scanf в c , не обошлось бы!


PS: я предполагал, что вы используете компилятор GCC. Если нет, обязательно включите предупреждения компиляции вашего компилятора.

...