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。)
另一个问题是两个整数相除就是整数除法,它会截断任何小数部分。在除法之前,您需要将分子或分母转换为 float
或 double
。 (通常 double
比 float
更好,除非你有一个内存占用很大的大数组。)
对上述答案的一个小优化:
您实际上不需要标准函数 pow
来计算 -1
的幂。
相反,您可以使用:
int minusOnePow(int i) {
return 1 - 2 * (i & 1);
}
解释:
- 如果
i
是偶数,则 i & 1 == 0
和函数 returns 1
- 如果
i
是奇数,则 i & 1 == 1
和函数 returns -1
我必须用 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。)
另一个问题是两个整数相除就是整数除法,它会截断任何小数部分。在除法之前,您需要将分子或分母转换为 float
或 double
。 (通常 double
比 float
更好,除非你有一个内存占用很大的大数组。)
对上述答案的一个小优化:
您实际上不需要标准函数 pow
来计算 -1
的幂。
相反,您可以使用:
int minusOnePow(int i) {
return 1 - 2 * (i & 1);
}
解释:
- 如果
i
是偶数,则i & 1 == 0
和函数 returns1
- 如果
i
是奇数,则i & 1 == 1
和函数 returns-1