c菜鸟。这个程序到底错哪了

c初学者。这个程序到底哪里错了?
题目:
Description
给出一个8*8的01矩阵,请判断出由数字1所填充的图形(三角形/梯形/椭圆形/矩形)。

Input
第一行输入N,表示有N组测试数据 接下来八行为矩阵内容,每两个数字中间用一个空格隔开 每两个矩阵中间有一个空行

Output
输出判断出的形状,每个占一行(三角形输出"triangle",梯形输出"trapezia",椭圆输出"ellipse",矩形输出"rectangle")   你可以在纸上画个图形看看,每种图都是有不同的特点。如 0 0 0 0 0 0 0 0           0 0 0 1 1 0 0 0是椭圆   0 0 1 1 1 1 0 0  0 0 1 1 1 1 0 0  0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0   是梯形 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0


Sample Input

2
0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0
0 0 1 1 1 1 1 0
0 0 1 1 1 1 1 0
0 0 1 1 1 1 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0
0 0 1 1 1 1 0 0
0 0 1 1 1 0 0 0
0 0 1 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

Sample Output

rectangle
triangle
Hint梯形的底一定处于水平线上,不会出现特殊情况





我的代码:
#include<stdio.h>
int main()
{
char a[8][15];
int i,j,t;
int r[8],c[15],s1=0,s2=0,flag=0,n,max,maxi;
scanf("%d",&n);
getchar();
for(t=0;t<n;t++)
{
for(i=0;i<8;i++)
{
r[i]=0;
for(j=0;j<15;j++)
{
a[i][j]='\0';
c[j]=0;
}
}
s1=0;
s2=0;
flag=0;


for(i=0;i<8;i++)
{
gets(a[i]);
if(a[i][0]=='\0')
i=i-1;
}


for(i=0;i<8;i++)
{
s1=0;
for(j=0;j<15;j++)
{
if(a[i][j]=='1')
s1++;
}
r[i]=s1;
}
for(i=0;i<15;i++)
{
s2=0;
for(j=0;j<8;j++)
{
if(a[j][i]=='1')
s2++;
}
c[i]=s2;
}


s1=0;
s2=0;
max=c[0];
maxi=0;
for(i=1;i<8;i++)
{
if(r[i]>max)
{
max=r[i];
maxi=i;
}
}
for(i=0;i<15;i++)
{
if(r[i]==1)
s1++;
if(c[i]==1)
s2++;
}
if(s1==1&&max!=1)
{
flag=1;
printf("triangle\n");
continue;
}
if(s2==2&&r[maxi+1]!=r[maxi-1]&&r[maxi]!=r[maxi+1])
{
flag=1;
printf("trapezia\n");
continue;
}


for(i=0;i<7;i++)
{
if(r[i]!=0)