c - 如何根据用户给出的数字打印带有文本的金字塔?
问题描述
目前停留在根据用户输入给出的数字从散列(#'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 量。
解决方案
您需要一个循环打印空格,直到第二个循环的计数器 (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
推荐阅读
- python - Getting errors when I import libraries used for facial recognition?
- mysql - MySQL远程时缓存如何工作?
- pass-by-reference - 为什么按值传递有时比按引用传递更好
- user-interface - 为 ubuntu 服务器 18.04.3 安装 GUI
- python-3.x - 如何根据两个以上的列条件在 pandas 中创建一列?
- javascript - 为什么 redux dispatch 在钩子值更新之前发生?
- javascript - 如何在 UI 线程和 service worker 之间共享 WebAssemly 模块?
- c# - 如果程序第一次在 C# 中运行,则显示一个消息框
- php - 将所有值传递给一个变量,然后拆分它们
- laravel - 如何使用 JWT 令牌使忘记密码更安全?