【发布时间】:2013-10-27 13:27:48
【问题描述】:
我想解决这个问题,因为我比任何其他语言都更了解 JavaScript,所以我首先用 JavaScript 编写它,现在我正在尝试将它翻译成 C。
这是我的 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,问题出在哪里?
【问题讨论】:
-
你如何检查返回码?
echo $?? -
Javascript 不区分整数和浮点数,而 C 可以。您的 C 版本将整数除以整数,计算结果为
floor(i/(2*j))。你应该不使 i 或 j 加倍;将显式强制转换添加到 i 或 j,或者 - 最简单的方法 - 将2更改为2.0。 -
@CharlieBurns 是的,也打印 0
-
@CharlieBurns:那要证明什么?
RES是一个 float! -
@KerrekSB 我几乎不认为将其表示为谐波数的函数是“封闭形式”
标签: javascript c for-loop sum