C语言二维数组问题删除行问题

C语言如何删除二维数组的指定一行,并且在最上面补全为0.
求教。

已经帮你改了,有bug记得告知我一下

#include "stdio.h"
int main()
{
    int a[10][10];
    int m, n, i, j, t, s, count,cnt = 0;
    scanf("%d%d", &m, &n);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    printf("\n");
    for (i = m - 1; i >= 0; i--)
    {
        count = 0;
        cnt ++;//记录遍历的行数
        if(cnt > m) break;//如果当前遍历过的行数>m说明全部遍历过了,退出循环
        for (j = 0; j < n; j++)
        {
            if (a[i][j] == 1)
                count++;
        }
        if (count == n)
        { //删
            if (i == 0)
            { //删第一行
                for (t = 0; t < n; t++)
                {
                    a[i][t] = 0;
                }
                break;
            }
            for (s = i; s > 0; s--)
            {
                for (t = 0; t < n; t++)
                {
                    a[s][t] = a[s - 1][t];
                }
            }
            for (t = 0; t < n; t++)
            { //第一行补0
                a[0][t] = 0;
            }
            i ++;//由于下降了一行,这里的i加一重新遍历这一行
        }
    }
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}