1027 打印沙漏 (20 分)

题目链接:1027 打印沙漏 (20 分)

 

这道题目是按照题目要求输出图形。

1、图形具有上下对称性

2、图形中每行有规律。

思路:可以根据终端输入的n来判断图形上半部分输出的行数。然后我们按照对称性输出下半部分即可。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n,row,sum,space;
 7     char c;
 8     cin>>n>>c;
 9     int count=(n+1)/2;
10     for(row=1,sum=0;sum<=count;sum+=2*row-1,row++);
11         row-=2;    //计算出可以打印的行数。 
12     for(space=0;row>0;row--,space++)
13     {
14         for(int i=0;i<space;i++)
15             cout<<" ";
16         for(int k=0;k<2*row-1;k++)
17         {
18             cout<<c;n--;
19         }
20         cout<<endl;        
21     }
22     for(space-=2,row=2;space>=0;space--,row++)
23     {
24         for(int i=0;i<space;i++)
25             cout<<" ";
26         for(int k=0;k<2*row-1;k++)
27         {
28             cout<<c;n--;
29         }
30         cout<<endl;    
31     }
32     cout<<n<<endl;
33     return 0;
34 }
35 
36  

 

 

特别注意:

不能输出多余的空格。

posted @ 2019-01-14 12:53  focusDing  阅读(334)  评论(0编辑  收藏  举报