Изменить это:
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. Если нет, обязательно включите предупреждения компиляции вашего компилятора.