【问题标题】:Building a half tree in C用C构建半棵树
【发布时间】:2021-12-07 11:36:41
【问题描述】:

我正在尝试构建以下半树形式

x
xx
xxx
xxxx
xxxxx
....
N xxxxx

但我无法到达中间的“*”。相反,我有第二个循环产生的间隙。

我使用的代码:

#include <stdio.h> 

main(){ 
    int N;
    int i,j;
    printf("Enter the number: "); 
    scanf("%d",&N);
    for (i=1;i<=N;i++){
        printf("x"); 
        for(j=1; j<=(N-i); j++){ 
        printf(" "); 
        }
        printf("x");
        printf("\n");
    }
}

您能告诉我如何填充 *s 吗?

提前谢谢你。

编辑基于 cmets

如果我将printf(" "); 更改为printf("x");,我会得到一棵倒置的半树,如下面的 N=6 所示

xxxxxx
xxxxx
xxxx
xxx
xx
x

【问题讨论】:

  • 你的意思是printf(" ");?为什么不把它改成printf("x");
  • 为什么要打印空格?您的模式不需要空格。此外,您每行至少打印 2*'x'。一个在内部循环之前,一个在内部循环之后。这不适用于第一行。
  • 但我无法到达中间的“”。相反,我有第二个循环产生的间隙。*那是因为第二个循环打印空格(间隙)。如果你不打印间隙,你就不会得到间隙。 :)
  • printf("x") 真的应该是printf('*') 吗?
  • 嘿,我已经进行了几次测试,并且在您提到的“*”和“x”方面出现了错误。

标签: c for-loop


【解决方案1】:

将第二个for 循环中的条件从j&lt;=(N-i) 更改为j &lt; i。见下文。

halfTree.c

#include <stdio.h>

int main(int argc, char * argv[]){
    int N;
    int i, j;

    N = atoi(argv[1]);

    for(i=0; i < N; i++)
    {
        printf("*");

        for(j=0; j < i; j++)
            printf("*");

        printf("\n");
    }

    return 0;
}

使用下面的命令编译并运行上面的代码

gcc halfTree.c -o halfTree
./halfTree 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多