PS: 符号数右边如果有空格,不用输出,会报格式错误!!!
#include<iostream>
using namespace std;
int main()
{
int N; char ch;
cin >> N>>ch;
int line = 1; //记录上面第一层的符号数
N = N - 1; //记录剩下没用掉的符号数
for (int i = 0; i < N; i++)
{
//符号数还够最外面两层符号数
if ((N - (line + 2) * 2)>0){
N = N - (line + 2) * 2;
line = line + 2;
}
}
int Temp = line;
int t = 0;
//输出上三角
for (int i = 0; i < line / 2; i++)
{
t = line - Temp; //有多少个空格
for (int k = 0; k < t/2; k++)
{
cout << " ";
}
for (int j = Temp; j > 0; j--)
{
cout << ch;
}
//下一行有多少个符号数
Temp -= 2;
cout << endl;
}
//输出下三角
for (int i = 0; i <= line / 2; i++)
{
t = line - Temp;
for (int k = 0; k < t/2; k++)
{
cout << " ";
}
for (int j = Temp; j > 0; j--)
{
cout << ch;
}
Temp += 2;
cout << endl;
}
cout << N ;
return 0;
}