如何在C中输入一个带0和小数的数字并做它的正弦?

How to input a number with 0 and decimal in C and do its sine?

我目前正在学习 C 课程,我必须编写一个程序来打印 (0, 1) 之间输入 x 的正弦函数。问题是,我不知道我做错了什么。

double x;
double result = 0;

printf("Input a number betwen 0 and 1: ");
scanf("%.f", x);

result = sin(x);

printf("\aThe sine of %.8f is %.8f\n", x, result);

system("pause>null");
return 0;

这是我写的代码;当我尝试输入 0.5 时机器 returns 给我一个“0.00000 的正弦是 0.0000”,但是如果我将变量声明为 0.5,程序工作正常并给出正确答案。当我尝试使用 scanf 输入数字时出现错误,并且 activity 说我必须输入它。

我在网上查了一下,什么也找不到,我是这个世界的新手,大约 2 周前开始。

您的 scanf("%.f", x); 行有两个基本问题。首先,%.f 格式说明符是错误的:. 对于此类输入无效,并且 double 值需要 l(小写 L)前缀 - 所以使用 %lf.

其次,与该格式说明符对应的参数必须是合适的 (double) 变量的 地址

因此,使用 scanf("%lf", &x);,您的程序将运行。

启用警告

double x; scanf("%.f", x); 应该发出警告,因为 "%f" 需要匹配的 float *,而不是 double.

使用"%lf"读一个double

更好的是,检查 scanf() return 值以确保发生有效输入。

if (scanf("%lf", &x) == 1) {
  result = sin(x);
  printf("\aThe sine of %.8f is %.8f\n", x, result);
}