C中的算术级数不是正确的结果[重复]
Posted
技术标签:
【中文标题】C中的算术级数不是正确的结果[重复]【英文标题】:Not the right result with Arithmetic Progression in C [duplicate] 【发布时间】:2014-09-28 20:41:53 【问题描述】:我试图将数字 (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;
感谢您的帮助!
【问题讨论】:
printf("%d\n", (3/2));
.
现在让我们给他一些时间来学习吧。
我不明白:/我是 C 新手,有些东西不太好理解。为什么我应该打印 3/2?
@BrunoRodrigues:深入了解问题的根源。
天哪,我现在明白了:/ 所以要解决我可以使用 double 对吗?
【参考方案1】:
当使用带除法的整数时,计算值然后截断为整数。 如果您将 int 除以 int,您应该执行以下操作: 返回 (n/(double)2) * ((2 * x0) + ((n - 1) * (r)));
【讨论】:
使用浮点的坏主意。虽然范围有限,并且只能除以 2,但它可能会起作用。 你是对的。改为双倍。 @atlanteh:double
也是浮点数...
谢谢大家...抱歉我没有远见:/有时当我们专注于某些事情时,我们看不到最简单的事情:/
这里绝对不要使用浮点数以上是关于C中的算术级数不是正确的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章