javascript - 在此 C 代码中无法正常工作

标签 javascript c for-loop sum

我想解决这个问题,因为我比任何其他语言都更了解 JavaScript,所以我首先用 JavaScript 编写它,现在我正在尝试将它翻译成 C。

Sample image

这是我的 JavaScript 代码

var SUM=0,RES=1,n=prompt('Enter n'),i=1,j=1;
for(var i=1;i<=n;i++){

  SUM = 0;

  for(var j=1;j<=i;j++){

    SUM = SUM+ i/(2*j);

  }
  RES = RES * SUM
}
console.log(RES)

认为这运作良好。我将它翻译成 C,结果是:

#include "stdio.h"

int main(void) 
{
   int n,i,j;
   float SUM=0,RES=1;
   printf("n equals to ");
   scanf("%d", &n); 

    for(i=1;i<=n;i++){
        SUM = 0;

        for(j=1;j<=i;j++){

            SUM = SUM + i/(2*j);

        }
        RES = RES * SUM;
    }
   return RES;
}

JavaScript 至少返回一个数字。 C代码总是返回0,问题出在哪里?

最佳答案

被整数除法欺骗(一个很常见的问题)!如果您将一行更改为:

SUM = SUM + (float)i/(2*j);

原因是因为整数除法的结果是另一个整数。所以每当

i/2*j < 1 (for positive integers)

您的结果被 chop 为 0。在您的情况下,不等式始终为真,因此您只是将大量零相加。只需先将 i 转换为 float ,然后除以得到 double 结果。

关于javascript - 在此 C 代码中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19618575/

相关文章:

javascript - Firebase createUserWithEmailAndPassword() 来自已通过身份验证的帐户

javascript - 如何在 JavaScript 中解析具有动态键值的 JSON

c - 套接字与 INADDR_ANY 绑定(bind)以及具有多个接口(interface)的多播中的特定接口(interface)

java - 搜索字符串是否相差一个字符

javascript - 空值跳闸循环

javascript - 在 IE 中访问嵌套 iframe 中的 javascript 函数

javascript - 如何返回调用 javascript 的弹出窗口内网格的值?

c - 为什么 poll 要求它的 main 参数在调用之后仍然存在?

c - 如何将 16 位整数连续附加到固定的 8 位数组

c - 关闭 for 循环后结构中的值发生变化