这题一直不对,求解惑?

image.png

#include <stdio.h>
#include <math.h>
#define PI 3.1415926
int main()
{
    float  sum = 0, term = 1, h;
    int n = 1, t = 1,x;
    int T;
    scanf("%d", &T);
    while (T--) {
        scanf("%d", &x);
        if (x <= 0 || x >= 180) continue;
        h = x * PI / 180.0;
        sum = h; term = h; t = -1; n = 1;
        while (fabs(term) >= 0.000001) {
            term *= h * h /((2 * n + 1) * 2 * n);
            sum += t * term;
            t = -t;
            n++;
        }
        printf("%.6f", sum);
        if (T)  printf("\n");
    }
    return 0;
}
阅读 1.6k
1 个回答

你的结果没问题啊,仅仅是输入次序跟题目有点出入,你的结果是这样的。

3
90
1.000000
30
0.500000
60
0.866025

把程序改成

#include <stdio.h>
#include <math.h>
#define PI 3.1415926

int main()
{
    float  sum = 0, term = 1, h;
    int n = 1, t = 1, i;
    int T;
    int x[10];

    scanf("%d", &T);
    for (i = 0; i < T; i++)
    {
        scanf("%d", &x[i]);
    }

    for (i = 0; i < T; i++)
    {
        if (x[i] <= 0 || x[i] >= 180) continue;
        h = x[i] * PI / 180.0;
        sum = h; term = h; t = -1; n = 1;
        while (fabs(term) >= 0.000001)
        {
            term *= h * h / ((2 * n + 1) * 2 * n);
            sum += t * term;
            t = -t;
            n++;
        }
        printf("%.6f\n", sum);
    }
    return 0;
}

就跟题目一致了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题