打印数字图形

目录

1.题目描述:先要求你从键盘输入一个整数n(1<=n<=9),打印出指定的数字图形。

2.输入:输入包含多组测试数据。每组输入一个整数n(1<=n<=9)。

3.输出:对于每组输入,输出指定的数字图形。注意:每行最后一个数字后没有任何字符。

4.样例输入:5

5.样例输出:

6.思路

7.代码展示: 

8.结果展示

 9.原题目链接


1.题目描述:先要求你从键盘输入一个整数n(1<=n<=9),打印出指定的数字图形。

2.输入:输入包含多组测试数据。每组输入一个整数n(1<=n<=9)。

3.输出:对于每组输入,输出指定的数字图形。
注意:每行最后一个数字后没有任何字符。

4.样例输入:5

5.样例输出:

    1
   121
  12321
 1234321
123454321
 1234321
  12321
   121
    1

6.思路

可以观察这个输出图形是一个上下左右都对称的图形。

第一版:按照左右对称输出,先输出左边,但是问题就是一旦上一行没有输出完,那么跳入下面的行的时候,如何让鼠标返回去是一个问题,所以这个想法行不通。

第二版:定义数组输出,整个二维数组填充最后一个又一个输出就行,但是问题就是:空格的地方需要有数据,那如果定义为字符串数组,中间的数字是有规律的,那数字输出来就很麻烦,定义为整形数组那空格没办法输出来,所以这个想法依旧不通过

第三版:按照上下对称输出,观察规律,很容易能看出n与输出行数i和列数j的关系,可以写出下列代码,但实际上,我并没有写出来,思路出来,去,看到这个答案的时候还是挺懵的,但是仔细观察加上在编译器里一步一步调试的时候就很清楚了。

ps:当你看不懂别人代码的时候,可以调试,一步一步下来之后就能明白了,加油!

7.代码展示: 

#include
#include
using namespace std;

void printTopPart(int n)//打印左半部分
{
    for(int i=1;i<=n;i++)
    {
        //打印空格
        for(int j=1;j<=n-i;++j)
        {
            cout<<" ";
        }
        //打印上半部分递增数据
        for(int j=1;j<=i;j++)
        {
            cout<=1;j--)
        {
            cout<=1;i--)
    {
        for(int j=1;j<=n-i;j++)
        {
            cout<<" ";
        }
        for(int j=1;j<=i;j++)
        {
            cout<=1;j--)
        {
            cout<>n)
    {
        if(n<1||n>9)
    {
        cout<<"输入数据错误"<

8.结果展示

打印数字图形_第1张图片

 9.原题目链接

卡码网KamaCodericon-default.png?t=N6B9https://kamacoder.com/

你可能感兴趣的:(编程,算法,c++,开发语言)