数字金字塔C++版
废话不多说,上代码:
#include <iostream>
using namespace std;
int main()
{
for(int i=1;i<=9;++i)
{
for( int j =9;j>i;j--)
{
cout << " ";
}
for( int k=1;k<=(2*i+1)/2;++k)
{
cout << k ;
}
for(int k =(2*i)/2;k>1;k--)
{
cout << k - 1;
}
cout << endl;
}
return 0;
}
输出结果:
上图可以直接看出,要求输出的结果是成对称分布的,所以左半部分的公式就可以直接求出来: (2当前行数+1)/2 ,然后直接使用循环就可以打印出来
//从1开始,至左半部分终点
for( int k=1;k<=(2i+1)/2;++k)
{
cout << k ;
}
//从最右边开始至左部分终点
for(int k =(2*i)/2;k>1;k–)
{
//避免在最中间(就是对称轴)位置出现重复的数字(也就是刚刚比对称轴的数字小1)
cout << k - 1;
}
//嵌套循环输出这类结果时必不可少的换行!!
cout << endl;