简单模拟题,理清顺序就OK.
题意就是输入一个数和一个符号,打印除一个沙漏的形状,形状是有奇数个符号组成,依次递减,如下所示.
*****
***
*
***
*****
#include "iostream"
#include "stdio.h"
#include "string"
#include "string.h"
#include "map"
using namespace std;
int main()
{
int count;
char c;
int i,j,k;
cin>>count>>c;
//c = '*';
//count = 19;
int num[50];
num[0] = 1;
int oddnum[50];
oddnum[0] = 1;
for(i=1;i<50;i++)
{
oddnum[i] = oddnum[i-1]+2;
}
for(i=1;i<50;i++)
{
num[i] = oddnum[i]*2 + num[i-1];
}
for(i=0;i<50;i++)
{
if(count<num[i])
break;
}
i--;
int len = i;
int resultnum = count - num[i];
for(k=0;i>=0;i--,k++)
{
for(j=0;j<k;j++)
cout<<" ";
for(j=0;j<oddnum[i];j++)
{
cout<<c;
}
cout<<endl;
}
for(k=(oddnum[len]-1)/2-1,i=1;i<=len;i++,k--)//(5-1)/2 - 1 = 1
{
for(j=0;j<k;j++)
cout<<" ";
for(j=0;j<oddnum[i];j++)
{
cout<<c;
}
cout<<endl;
}
cout<<resultnum<<endl;
return 0;
}