solution.md 1.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3
# 计算sin(x)

计算sin(x)=x-x^3/3!+x^5/5!-X^7/7!+......,直到最后一项的绝对值小于10-7时停止计算。其中-2Π<=x<=2Π,^表示次方,如x^3表示x的3次方。
每日一练社区's avatar
每日一练社区 已提交
4 5 6

**输入**

每日一练社区's avatar
每日一练社区 已提交
7
一个实数x,-2Π<=x<=2Π
每日一练社区's avatar
每日一练社区 已提交
8 9 10

**输出**

每日一练社区's avatar
每日一练社区 已提交
11
sin(x)的值
每日一练社区's avatar
每日一练社区 已提交
12 13 14 15

**输入样例**

```json
每日一练社区's avatar
每日一练社区 已提交
16
3.142
每日一练社区's avatar
每日一练社区 已提交
17 18 19 20 21
```

**输出样例**

```json
每日一练社区's avatar
每日一练社区 已提交
22
-0.000407347
每日一练社区's avatar
每日一练社区 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
```

以下程序实现了这一功能,请你填补空白处内容:

```cpp
#include <stdio.h>
#include <math.h>
double sin(double);
double nResult(double, double);
int main()
{
    double x = 0;
    scanf("%lf", &x);
    printf("sin(%lf)=%lf\n", x, sin(x));
    return 0;
}
double sin(double x)
{
    int i = 0;
    double result = 0, n = 0;
ToTensor's avatar
ToTensor 已提交
43
    ____________________;
每日一练社区's avatar
每日一练社区 已提交
44 45 46 47 48 49 50
    return result;
}
double nResult(double x, double n)
{
    return n == 1 ? x : nResult(x, n - 1) * x / n;
}
```
每日一练社区's avatar
每日一练社区 已提交
51 52 53 54

## template

```cpp
每日一练社区's avatar
每日一练社区 已提交
55 56
#include <stdio.h>
#include <math.h>
每日一练社区's avatar
每日一练社区 已提交
57
double sin(double);
每日一练社区's avatar
每日一练社区 已提交
58
double nResult(double, double);
每日一练社区's avatar
每日一练社区 已提交
59 60
int main()
{
每日一练社区's avatar
每日一练社区 已提交
61 62 63 64
    double x = 0;
    scanf("%lf", &x);
    printf("sin(%lf)=%lf\n", x, sin(x));
    return 0;
每日一练社区's avatar
每日一练社区 已提交
65 66 67
}
double sin(double x)
{
每日一练社区's avatar
每日一练社区 已提交
68 69 70 71 72
    int i = 0;
    double result = 0, n = 0;
    while (fabs(n = nResult(x, 2 * ++i - 1)) > 0e-7)
        result += (i % 2 == 1) ? n : -n;
    return result;
每日一练社区's avatar
每日一练社区 已提交
73
}
每日一练社区's avatar
每日一练社区 已提交
74
double nResult(double x, double n)
每日一练社区's avatar
每日一练社区 已提交
75
{
每日一练社区's avatar
每日一练社区 已提交
76
    return n == 1 ? x : nResult(x, n - 1) * x / n;
每日一练社区's avatar
每日一练社区 已提交
77 78 79 80 81 82
}
```

## 答案

```cpp
每日一练社区's avatar
每日一练社区 已提交
83 84
while (fabs(n = nResult(x, 2 * ++i - 1)) > 0e-7)
	result += (i % 2 == 1) ? n : -n;
每日一练社区's avatar
每日一练社区 已提交
85 86 87 88 89 90 91
```

## 选项

### A

```cpp
每日一练社区's avatar
每日一练社区 已提交
92 93
while (fabs(n = nResult(x, 2 * i - 1)) > 0e-7)
	result += (i % 2 == 1) ? n : -n;
每日一练社区's avatar
每日一练社区 已提交
94 95 96 97 98
```

### B

```cpp
每日一练社区's avatar
每日一练社区 已提交
99 100
while (fabs(n = nResult(x, 2 * i++ - 1)) > 0e-7)
	result += (i % 2 == 1) ? n : -n;
每日一练社区's avatar
每日一练社区 已提交
101 102 103 104 105
```

### C

```cpp
每日一练社区's avatar
每日一练社区 已提交
106 107
while (fabs(n = nResult(x, 2 * ++i + 1)) > 0e-7)
	result += (i % 2 == 1) ? n : -n;
每日一练社区's avatar
每日一练社区 已提交
108
```