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中的算术级数不是正确的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++中的向量加法并不完全正确[重复]

For循环问题中的PHP字符迭代[重复]

可以验证 HTML 文档是不是格式正确的 Java API [重复]

进行Python算术运算[重复]

opencv中的重复轮廓

Eclipse中的控制台打印顺序[重复]