求解惑,两个程序,输入10000结果算出来不一样,问题出在哪里了呢

#include<stdio.h>
int main()
{
int N;
int sum=0;
scanf("%d",&N);
for(int i=1; ;i++)
{

    sum+=i*i;
    if(sum==N)
    {
        printf("%d",i);break;
    }
    if(sum>N)
    {
        printf("%d",i-1);break;
    }
}
return 0;

}
#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
for(int i=1; ;i++)
{
int sum=0;
sum+=i*i;
if(sum==N)
{
printf("%d",i);break;
}
if(sum>N)
{
printf("%d",i-1);break;
}
}
return 0;
}

第二段错了啊,sum是要累加的,必须在循环外定义
你第二段代码,最终的sum只是等于当前循环的i的平方,并不能起到平方和累加效果的