如何摆脱角色以获得所需的输出

How can I get rid off a character to get the desired output

这里有很多关于打印三角形的问题,但是这个有点不同,所以我希望你不介意再看一个。

我正在尝试生成以下输出:

+
|\
| \
|  \
+---+

我编写了以下代码,但得到的输出是:

+
|
|\
| \
|  \
+---+

如何去除第二行的 | 字符以获得所需的输出?

#include <stdio.h>

int main() {
    int i, j, k, r;
    printf("Enter number of rows: \n");
    scanf("%d", &r);

    printf("+\n");
    for (i = 1; i < r - 1; i++) {
        for (j = 0; j < i; j++) {
            if (j == 0) {
                printf("|");
            } else if (j > 0 && j < i - 1) {
                printf(" ");
            } else if (j == i - 1) {
                printf("\");
            } else {
                continue;
            }
        }
        printf("\n");
    }
    printf("+");
    for (k = 0; k < r - 3; k++) {
        printf("-");
    }
    printf("+\n");
    return 0;
}

从 2 开始循环,这意味着该行将打印 2 个字符。

改变

for (i=1;i<r-1;i++) {

for (i=2;i<r-1;i++) {

这将为 r=6 生成所需的输出。

有一种更简洁的方法来打印整个三角形。我会将它分解成更小的函数,以便更清楚地说明发生了什么。

#include<stdio.h>

void printTriangleRow(int rowNumber) {
    printf("|");
    for(int i = 0; i < rowNumber; ++i) {
        printf(" ");
    }
    printf("\\n");
}

void printTriangleBottom(int sideLength) {
    printf("+");
    for(int i = 0; i < sideLength; ++i) {
        printf("-");
    }
    printf("+\n");
}

void printTriangleWithSideLength(int sideLength) {
    printf("+\n");
    for(int i = 0; i < sideLength; ++i) {
        printTriangleRow(i);
    }
    printTriangleBottom(sideLength);
}

int main() {
    int rowCount;
    printf("Enter number of rows: \n");
    scanf("%d", &rowCount);
    printTriangleWithSideLength(rowCount);
}

现在,如果这里有错误,理解每个部分的情况、识别错误并修复它会容易得多。