【问题标题】:How to delete spaces in matrix?如何删除矩阵中的空格?
【发布时间】:2021-04-10 17:03:53
【问题描述】:

我的任务是绘制一个坐标系和直线 y+x=n,因为 n

#include <stdio.h>

int
main()
{
    int n, i, j;

    scanf("%d", &n);
    char m[12][63] = { " " };
    for (i = 0; i < 12; i++) {
        for (j = 0; j < 63; j++) {
            m[i][j] = ' ';
            if (i == 0 && j == 1)
                m[i][j] = '0';
            if (i == 11 && j == 61)
                m[i][j] = '2';
            if (j == 0 && i != 0 && i != 11)
                m[i][j] = '0' + 10 - i;
            if (j == 2 && i != 11)
                m[i][j] = '+';
            if (i == 11 && j % 3 == 2)
                m[i][j] = '0' + ((j - 2) / 3) % 10;
            if (i == 11 && j % 3 == 1 && j > 29 && j < 59)
                m[i][j] = '1';
            if (i == 10 && j % 3 == 2)
                m[i][j] = '+';
        }
    }
     for(i=1;i<n+1;i++){
         if((10-n+i)!=10 && (2+3*i)!=1)
        m[10-n+i][2+3*i]='*';
        }
    m[0][0]='1';
    for (i = 0; i < 12; i++) {
        for (j = 0; j < 63; j++) {
            printf("%c", m[i][j]);
        }
        printf("\n");
    }
}
//n=5
 10+
 9 +
 8 +
 7 +
 6 +
 5 +
 4 +  *
 3 +     *
 2 +        *
 1 +           *
 0 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +
   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

【问题讨论】:

    标签: arrays c matrix


    【解决方案1】:

    听起来您不想在每行上打印尾随空格。所以你需要找到并跳过那些尾随空格而不是打印它们:

    for (i = 0; i < 12; i++) {
        int eol = 63;
        while (eol > 0 && m[i][eol-1] == ' ') --eol;
        for (j = 0; j < eol; j++) {
            printf("%c", m[i][j]);
        }
        printf("\n");
    }
    

    【讨论】:

    • 问题解决了。我可以请您对此进行简要解释吗?
    • 非常简单——您可以在每一行找到最后一个非空格字符,然后打印到该字符,而不是后面的任何空格。
    猜你喜欢
    • 2022-01-14
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多