版权声明:转载本文请引用 https://blog.csdn.net/weixin_42346564/article/details/82190984
1.普通代码
#include <iostream>
using namespace std;
int main()
{
int n;//行数
cout << "请输入正三角形的层数: n= " ;
cin>>n;
if (n)//n:层数
{
for (int i = 1; i <= n; i++) //i:从第一层到第n层
{
for (int k = 0; k < n-i; k++) //k:kongge空格
{
cout << " ";
}
for (int j = 0; j < 2 * i - 1; j++)
{
cout << "*";
}
cout << endl;
}
}
}
2.
///////////////////////////////////////////////////
//正三角形
// *
// * * *
//* * * * *
//////////////////////////////////////////////////
#include <iostream>
using namespace std;
int CalcStarCount(int layer)
{
return (2 * layer - 1);
}
void DrawStar(int maxLayer, int layer)
{
int maxStarCnt = CalcStarCount(maxLayer); // 最大层 * 的个数
int starCnt = CalcStarCount(layer); // 当前层 * 的个数
int blankCnt = maxStarCnt - starCnt; // 当前层空格的个数
int pointCnt = blankCnt / 2; // 两端空格的个数
// 先画空格
for (int i = 0; i < pointCnt; i++)
{
cout << " ";
}
// 再画*
for (int i = 0; i < starCnt; i++)
{
cout << "*";
}
// 先画空格
for (int i = 0; i < pointCnt; i++)
{
cout << " ";
}
cout << endl;
}
void Sleep(long time)
{
for (int i = 0; i < time; i++)
for (int j = 0; j < 100000; j++)
;
}
void DrawStar2(int maxLayer, int layer, int dirc)
{
if (dirc)
{
if (layer >= 1)
{
DrawStar2(maxLayer, --layer, dirc);
}
else
return;
}
//具体画 * 的过程
if (layer && layer != maxLayer)
{
int starCnt = layer;
int maxRowCnt = maxLayer * 2 - 1;
int pointCnt = (maxRowCnt - 2 * starCnt - 1) / 2;
// 画左端的空格
for (int i = 0; i < pointCnt; i++)
{
cout << "_";
Sleep(1000);
}
for (int i = 0; i < layer; i++)
{
cout << "*";
if (i == layer - 1)
break;
else
cout << " ";
Sleep(1000);
}
// 画右端的空格
for (int i = 0; i < pointCnt; i++)
{
cout << "_";
Sleep(1000);
}
cout << endl;
}
if (!dirc)
{
if (layer >= 1)
{
DrawStar2(maxLayer, --layer, dirc);
}
else
return;
}
}
int main()
{
int layer = 0;
cout << "请输入层数: ";
cin >> layer;
#if 0
for (int i = 0; i <= layer; i++)
DrawStar(layer, i);
cout << endl << endl;
for(int i = layer; i >= 0; i--)
DrawStar(layer, i);
#else
DrawStar2(layer + 1, layer + 1, 1);
cout << endl << endl;
DrawStar2(layer + 1, layer + 1, 0);
#endif
system("pause");
return 0;
}