构建一个金字塔,数字介于1和插入的整数之间

0 c++

我正在尝试建立一个数字介于1和插入数字之间的金字塔.例如,如果我将6插入整数,则piramid将如下所示:

12345654321
 234565432
  3456543
   45654
    565
     6 
Run Code Online (Sandbox Code Playgroud)

我尝试使用for循环,但我得到任何一行或++数字到6.这是代码:

#include<stdio.h>
#include <iostream>
#include <conio.h>

int main()
{
  int i,j,d;
  std::cin >> d;
  for(i=1;i<=d;i++)
  {
     for(j=1;j<=i;j++)
       printf("%d",j);
     printf("\n");
  }
  getch();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题,如图所示构建金字塔.

sbi*_*sbi 10

由于这是作业,我不会粘贴算法,但这里有一些提示:

  • 12345654321可以通过从1到6计数然后再回到1来打印.

  • __3456543__意味着对于小于n的数字,您必须输出a _,其中n取决于您要打印的级别.

  • 在循环中定义循环变量:for(int i=1;i<=d;i++) ...它们只在循环中有用,循环外的访问通常是一个错误,然后由编译器标记.

  • 最后没有必要getch();.当您在调试器中时,可以在最后一行放置断点.如果你不是,你不想只是为了结束你的程序而按键.

  • 如果您使用std::cout << jstd::cout << '\n'输出,则您也不需要printf().(一旦你想要格式化,许多人会告诉你printf格式字符串更容易.我不相信,但会接受它,如果不是你可以崩溃任何具有printf格式错误的格式字符串的应用程序,而它是很多更难以想出一种使用流来崩溃应用程序的方法.)

  • 如果你抛弃getch()和printf(),则不需要包含conio.h或stdio.h (2认同)