您的位置:首页 > 其它

PAT乙级 打印沙漏(20)

2015-12-19 17:53 375 查看
简单模拟题,理清顺序就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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: