首页 > 解决方案 > 如何根据用户给出的数字打印带有文本的金字塔?

问题描述

目前停留在根据用户输入给出的数字从散列(#'s)中创建金字塔。CS50 的示例仅描述了如何根据给定的数字创建一个正方形。

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int n = get_int("Number:\n");
    if(n>0 && n<9)
    for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < n; j++)
    {
      printf("#");
    }
  printf("\n");
  }
}

预期结果是根据用户给出的输入创建一个大小为 # 的 x 量的金字塔。

实际结果是一个正方形,根据用户给出的输入,大小为 # 的 x 量。

标签: ccs50

解决方案


您需要一个循环打印空格,直到第二个循环的计数器 (j) 小于 ni。请看下面:

#include <stdio.h>

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

    printf("Number: ");
    scanf("%d", &n);

    for (i = 0; i < n; i++)
    {

        for (j = 0; j < n-i; j++)
        {
            printf(" ");
        }

        for (k =0; k <= i; k++)
        {
            printf("# ");
        }

        printf("\n");
    }

} // end main function

推荐阅读