#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int s;
char m;
cin >> s >> m;
int n;
n = sqrt((s + 1) / 2);
int flag = (2 * n - 1);
int count;
for (count = 0; flag > 0; count++)
{
for (int j = 0; j < count; j++)
{
cout << ' ';
}
for (int i = 1; i <= flag; i++)
{
cout << m;
}
n--;
flag = 2 * n - 1;
cout << endl;
}
int count1 = count;
for (int i = 2; i <= count1; i++)
{
for (int j = 1; j <= count - i; j++)
{
cout << ' ';
count--;
}
for (int k = 1; k <= 2 * i - 1; k++)
{
cout << m;
}
cout << endl;
}
int end = s - (2 * count1 * count1 - 1);
cout << end;
}
题主考虑的太复杂了,精简下,供参考:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int s, n;
char m;
cin>>s>>m;
n=sqrt((s+1)/2);
for(int i=n;i>0;i--)
{
for(int j=1;j<=n-i;j++)
cout<<" ";
for(int j=2*i-1;j>=1;j--)
cout<<m;
cout<<endl;
}
for(int i=2;i<=n;i++)
{
for(int j=n-i;j>=1;j--)
cout<<" ";
for(int j=1;j<=2*i-1;j++)
cout<<m;
cout<<endl;
}
cout<<(s-(2*n*n-1));
return 0;
}
程序要求是什么呢