初学者的一个问题!关于ACM的一个程序问题,hdu1092,两个答案区别在哪啊,第一个是正确的,第二个是错的

#include
int main(void)
{int a;
int i, sum;
int n;
while (scanf_s("%d", &n) != EOF)
{if(n != 0)
{sum=0;
for(i=0; i < n; i++)
{scanf_s("%d", &a);
sum+=a;}
printf("%d\n", sum);}
else break;
}
return 0;
}

include
int main(){
int n,sum,a,i;
while(scanf("%d",&n)!=EOF)
if(n==0)
{break;}
else
{sum=0
for(i=0;i<n;i++)
{scanf("%d",&a);
sum=sum+a}
printf("%d\n",sum);}
return 0;
}

错在哪,请详细指出来,谢谢!!!!

第二个程序有一些语法错误


#include <stdio.h>

int main(){
    int n,sum,a,i;
    while(scanf("%d",&n)!=EOF)
        if(n==0)
        {
            break;
        }
        else
        {
            sum=0;
            for(i=0;i<n;i++)
            {
                scanf("%d",&a);
                sum=sum+a;
            }
            printf("%d\n",sum);
        }
    return 0;
}