首页 > 解决方案 > C中的星号金字塔

问题描述

练习:编写一个程序,读取一个自然数n并绘制一个星号金字塔。型号n = 5

    *
   ***
  *****
 *******
*********

代码:

int main ()
{
    int n, i, j=1, aux1, aux2;
    int spaces=1;
    scanf ("%d", &n);

    for (i=0; i<n; i++)
    {
        spaces += 1;
    }
    printf ("\n");
    for (i=0; i<n; i++)
    {
        aux1 = j;
        aux2 = spaces;

        while (aux2 >= 1)
        {
            printf (" ");
            aux2--;
        }

        while (aux1 >= 1)
        {
            printf ("*");
            aux1--;
        }

        j += 2;
        spaces--;

        printf ("\n");
    }

    return 0;
}

我的代码从在线法官那里收到“演示错误”,因为每行的最后一个星号后面都有一个空格。有关如何修复它的任何提示?

标签: cloopsfor-loop

解决方案


您的代码在每一行的开头都有空格,而不是结尾。

这是我能想到的解决该问题的最简单方法:

#include <stdio.h>
#include <stdlib.h>


int main(void)
{
    int i, j, height;

    scanf("%d", &height);

    for (i = 0; i < height; i++) {
        for (j = 0; j < height - i - 1; j++)
            putchar(' ');

        for (; j < height + i; j++)
            putchar('*');

        putchar('\n');
    }

    return EXIT_SUCCESS;
}

推荐阅读