空柠檬 2021-12-06 03:23 采纳率: 90.5%
浏览 95
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 南七灵 2021-12-06 03:50
    关注

    已经帮你改了,有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");
        }
    }
     
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月7日
  • 已采纳回答 12月6日
  • 创建了问题 12月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部