杭电oj2013蟠桃记 为什么不对呢

#include "stdio.h"

int main()
{
int n,sum=1,i;
while( scanf("%d",&n)!=EOF)
{
if( n<=1 || n>=30 )
break;
else
{
for( i=n; i>0; i-- )
{
sum = (sum+1)*2;
}
}
printf("%d\n",sum);
}

}

想结束,要用 ctrl+Z,然后回车

 #include <stdio.h>  
int main()
{
    int n,sum=1,i;
    while( scanf("%d",&n)!=EOF)
    {
        if( n<=1 || n>=30 )
            break;
        else
        {
            sum=1;//修改
            for( i=n; i>1; i-- )//修改
            {
                sum = (sum+1)*2;
            }
        }
        printf("%d\n",sum);
    }
}