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");
}
}