【发布时间】:2021-05-07 18:53:16
【问题描述】:
这里有两个类似的问题(1.-直到 n 的奇数的总和;2.-系列 1/n 的总和)要使用 for 循环来解决。 我选择了显示的策略,而对于第一个问题,我的循环按预期工作,对于第二个问题,它不会迭代。 我看不出有什么区别,无法理解最后一种情况出了什么问题。
----1----- :
int main()
{
// Example: Input=5, Output=1+3+5=9
int i, lastNum ,sumUneven;
printf("Until what n should the uneven numbers be added: ");
scanf("%d", &lastNum);
sumUneven=0;
for (i=1; 2*i-1<=lastNum; i++) {
sumUneven=sumUneven + (2*i-1);
}
printf("Sum of uneven numbers until %d: %d", lastNum, sumUneven);
}
----2------------:
int main()
{
//My goal: Input=n; Output= 1+ 1/2 + 1/3....+1/n.
int i, n, sum;
printf("Until what n should this series be calculated: ");
scanf("%d", &n);
sum=0;
for (i=1; i<=n; i++) {
sum = sum + 1/i;
}
printf("Sum of the series until 1/%d: %d", n, sum);
}
【问题讨论】:
-
肯定是在迭代,但是你在 C 语言中使用 integer division 并没有得到预期的结果。
-
我建议在这里使用括号
2*i-1<=lastNum,即使它在逻辑上是正确的。