为什么gets(a)改成scanf(“%s”,a);就能AC,但是测试都一样!!

#include
#include
main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
getchar();
int i,sum=0,sj=1,len;
char a[105];
scanf("%s",a);/*这里用gets(a);就是错误的
len=strlen(a);

    for(i=0;i<len;i++)
    {
        if(a[i]=='1')
        {
            if(sj<6)
            {
                sum+=sj*10;
                sj++;
            }
            else
            {
                sj=1;
                sum+=sj*10;
                sj++;
            }
        }
        else
        {
            sj=1;
        }
    }
    if(sum>=0&&sum<50)
    {
        printf("0\n");
    }
    else if(sum>=50&&sum<150)
    {
        printf("1\n");
    }
    else if(sum>=150&&sum<250)
    {
        printf("2\n");
    }
    else if(sum>=250&&sum<350)
    {
        printf("3\n");
    }
    else if(sum>=350&&sum<450)
    {
        printf("4\n");
    }
    else if(sum>=450&&sum<550)
    {
        printf("5\n");
    }
    else if(sum>=550&&sum<650)
    {
        printf("6\n");
    }
    else if(sum>=650&&sum<750)
    {
        printf("7\n");
    }
    else
    {
        printf("8\n");
    }
}   

}

http://zhidao.baidu.com/link?url=Sh-f81y3X4bc4rtE0bjPeFtwjiUCrE7qS78XeQRRF1Et3LlwCetcYetKU6Umimrhkwaepr63b1yPW-4M0IKtza

既然你都已经定位到了出错位置,调试不是很简单么?
在那一行设置一个断点,单步调试,分别查看正常和不正常情况下缓冲区a中的内容有什么不同不就清楚了?