c编程输出不正确的求和工具

summation implement in c programming output incorrect

我必须用 C 编程语言求出给定级数的总和。

根据公式,如果 n=1,则输出应为 4(2/3)= 8/3

我写的c程序代码:

#include <stdio.h>

int main() {
    int n, i;
    float sum = 0;
    printf("Enter the value of n: ");
    scanf("%d", &n);

    for (i = 0; i <= n; i++) {
        sum = sum + 4 * ((-1) ^ i / ((2 * i) + 1));
    }

    printf("Sum of the series: %f", sum);
    return 0;
}

我得到了输出-8。

我的代码哪里做错了?

谢谢。

C 中的 ^ 运算符是 exclusive-or,不是求幂。没有指数运算符,但是你可以考虑如何用其他运算符来获得 (-1)^i 的效果,例如 ?:。 (您可能会看到使用 pow 函数的建议,但它用于浮点数,而不是整数,因此不是一个好的 drop-in。)

另一个问题是两个整数相除就是整数除法,它会截断任何小数部分。在除法之前,您需要将分子或分母转换为 floatdouble。 (通常 doublefloat 更好,除非你有一个内存占用很大的大数组。)

对上述答案的一个小优化:

您实际上不需要标准函数 pow 来计算 -1 的幂。

相反,您可以使用:

int minusOnePow(int i) {
    return 1 - 2 * (i & 1);
}

解释:

  • 如果 i 是偶数,则 i & 1 == 0 和函数 returns 1
  • 如果 i 是奇数,则 i & 1 == 1 和函数 returns -1