a516237481 @ 2019-09-30 12:09:06
int main() { int n,k; double sum; n=1; scanf("%d",&k); for(sum=0;sum<k;sum+=1.0/n) { n++; } printf("%d",n); } 第一次sum=0,n=2; 第二次sum=0.5,n=3;
by a516237481 @ 2019-09-30 12:11:12
n前加了double也是一样的结果
by 只以 @ 2019-09-30 12:11:42
希望更丰富的展现?使用Markdown
by Lstdo @ 2019-09-30 12:35:31
本来就不执行的
by Fabj7_s9w @ 2019-09-30 13:19:20
希望更丰富的展现?使用Markdown
by 火车司机 @ 2019-09-30 13:37:06
如果您学过
int sum=0;
while (sum<k) {
n++;
sum+=1.0/n;
}
所以第三条语句在第一次循环时会执行,只不过是在
如果您想要第一次就执行这个语句,可以写成以下代码
for (sum=1.0/n;sum<k;sum+=1.0/n) {
n++;
}
by 火车司机 @ 2019-09-30 13:37:47
@a516237481
by a516237481 @ 2019-12-21 11:50:03
@火车司机 如果是类似你说的while形式,那么第一遍判定sum<k成立后,应该n+1,然后sum也加个1/n,那么第一遍的结果应该是n=1,sum=1,但结果是sum=0,我觉得是第一遍第三条语句不执行。
by 火车司机 @ 2019-12-21 20:59:01
@a516237481 对,抱歉我审题有误,给您带来麻烦了