神奇,不理解这区别,求助

P1035 [NOIP2002 普及组] 级数求和

xiaoxiaogui @ 2024-08-16 23:44:49

第一次写的代码,wa5个,过了1个

#include<stdio.h>
int main()
{
    int k,i;
    double s=0;
    scanf("%d",&k);
    for(i=1;s<k;i++)
    {
        s+=1.0/(i*1.0);
    }
    printf("%d",i);
    return 0;
}

后面写的代码,ac过了


#include<stdio.h>
int main()
{
    int k,i;
    double s=0;
    scanf("%d",&k);
    for(i=1;;i++)
    {
        s+=1.0/(i*1.0);
        if(s>k)
        break;
    }
    printf("%d",i);
    return 0;
}
`
第一个和第二个代码的判断为什么不一样???

by TakeMyHand @ 2024-08-16 23:51:20

第一个应该是i<=k


by ftzx @ 2024-08-16 23:55:55

一开始少了一个i==k的情况


|