我正在尝试将数字 (x0) 的倍数与级数 (r) 和次数 (n) 相加。如果我使用数字 x0 = 6, r = 3, n = 3,结果应该是 6+9+12=27,但程序总是给我18。
我尝试不同时间更改公式,但如果我在纸上这样做,结果是正确的,所以我担心问题可能是语法......
所以程序在C:
#include <stdio.h>
int sum_progression(int x0, int r, int n)
{
return (n/2) * ((2 * x0) + ((n - 1) * (r)));
}
void test_sum_progression(void)
{
int x0;
int r;
int n;
scanf("%d", &x0);
scanf("%d", &r);
scanf("%d", &n);
int z = sum_progression(x0,r,n);
printf("%d\n", z);
}
int main(void)
{
test_sum_progression();
return 0;
}
感谢您的帮助!
最佳答案
当使用带有除法的整数时,会计算该值,然后将其截断为整数。
如果你将 int 除以 int 你应该这样做:
返回 (n/(double)2) * ((2 * x0) + ((n - 1) * (r)));
关于c - C 中的算术级数的结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089454/