MrKeanu @ 2020-02-17 11:40:19
第一次是用for语句写的循环体,结果怎么都不对,但是用while语句写就对了,这是什么原因呢?
楼下附上源代码。
for语句:
#include<stdio.h>
int main(){
int n,k;
double s=0.0;
scanf("%d",&k);
for(n=1;s<=k;n++){
s =s+ 1.0/n;
printf("%d",n);
return 0;
}
while语句:
#include<stdio.h>
int main(){
int n,k;
double s=0.0;
scanf("%d",&k);
while(s<=k){
n++;
s+=1.0/n;
}
printf("%d",n);
return 0;
}
by UnyieldingTrilobite @ 2020-02-17 12:10:00
@SIXIANG
请不要欺负人家萌新,你也曾是初学
by a___ @ 2020-02-17 12:10:57
不是,for完了加上一个n--不香吗
by liqingyang @ 2020-02-17 12:11:37
@MrKeanu 这个东西我研究过
首先for语句的执行顺序是:
第一个分号前面,第一个分号后面,第二个分号后面,第一个分号后面,第二个分号后面,第一个分号后面,第二个分号后面,第一个分号后面......所以它会加完后发现不对,再改
by SIXIANG32 @ 2020-02-17 12:14:12
@Zyque 我也才1年啊,菜的不像话
by liqingyang @ 2020-02-17 12:15:20
望关注!
by SIXIANG32 @ 2020-02-17 12:15:28
@iTwinkle 哦,对,但我直接输出return0;
by SIXIANG32 @ 2020-02-17 12:28:53
@iTwinkle 忘说了,我以为这事大家都知道,而且我写的用的是return 0不是break
by MrKeanu @ 2020-02-17 13:31:44
@Program404 谢谢提醒啊,复制粘贴的时候漏掉了,初始值是不是0不影响结束条件的,循环次数是一样的。
by MrKeanu @ 2020-02-17 13:33:37
@SIXIANG 半年多了,但平时很少用c艹
by MrKeanu @ 2020-02-17 13:35:40
@SIXIANG 谢谢提醒啊,这个是写回答时复制粘贴漏了的(尴尬.jpg)