C语言编写程序,输入如下图形

112112321
1234321

首先介绍我们要先明白这个算法的原理:

1、如果有n行,那么第一行前面就需要 n-1 个空格来进行填充(后面的空格可以不用管)。

2、每一行中的数字都是左右对称的打印的。

下面介绍两种实现方法, 希望对你能有帮助。

第一种最简单的写法,便于初学者进行理解,就是直接进行打印:

void printfA()
{
     //打印出4行
    cout << "   1\n";
    cout <<"  121\n";
    cout <<" 12321\n";
    cout <<"1234321\n";
}

第二种方法,是可以控制打印行数的:

void printfB()
{
    //输入想要打印的行数
    int iCount = 0;
    cout << string("Input the iCount = ");
    cin >> iCount;
    //打印金字塔型数字
    for(int i = 1; i<= iCount; ++i)
    {
        //打印空格
        for(int j = 1; j<=iCount - i; ++j)
        {
            cout << string(" ");
        }
        //打印数字前半部分
        for (int k = 1; k <= i; ++k)
        {
            cout << k ;
        }
        //打印数字后半部分
        for (int k = i-1; k >0 ; --k)
        {
            cout << k ;
        }
        cout <<  endl;  //换行
    }
}

演示效果如下:

当然, 除了以上介绍的两种方法外, 还有很多其他的方法来实现,建议有机会可以多看些编程的书籍了解下。

望采纳, 谢谢。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-16
#include<stdio.h>

int main()
{
  int i,j,k,t;
  char a[16];
  printf("请输入金字塔字符:\n");
  for(i=0;i<16;i++)
  {
    scanf("%c",&a[i]);//输入构成金字塔的字符
   
  }
  t=0;//计数器,用来累计数组个数
  for(i=1;i<=4;i++)
  {   
    for(k=4;k>i;k--)
 {
 printf(" ");//输出每行前面的空格,形成金字塔
 } 
for(j=1;j<=2*i-1;j++)
{
        
 printf("%c",a[t]);//输入每行字符
 t++;//计数器加1
}
printf("\n");//每行末尾加换行
  }
 
   

  return 0;
}

运行结果:

第2个回答  2019-02-16
main()
{
int i,j,k;
printf("请输入行数");
scanf("%d",&k);
for(i=0;i<k;i++)
{
for(j=0;j<i+1;j++)printf("%d",j+1);
for(;j>0;j--)printf("%d",j);
printf("\n");
}
}
第3个回答  2019-02-16



如图

追问

大兄弟有心了

相似回答