PTA basic 1027 打印沙漏 (20 分) c语言实现(gcc)

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****
 

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *
 

输出样例:

*****
 ***
  *
 ***
*****
2
 
 

 

 1 #include "stdio.h"
 2 //测试用例
 3 //5 * //测试点2
 4 //19 *
 5 
 6 int main(){
 7     int i=1,n,m,temp,j,space,charNum,count=0;
 8     char c;
 9     scanf("%d %c",&n,&c);
10     m=(n-1)/2;
11     temp=m;
12     while(temp>2)//测试点2
13     {
14         i++;
15         temp=temp-2*i-1;
16     }
17     
18     for(j=i-1;j>=0;j--){
19         space=i-j-1;
20         charNum=j*2+1;
21         count+=charNum;
22         while(space){
23             printf(" ");
24             space--;
25         }
26         while(charNum){
27             printf("%c",c);
28             charNum--;
29         }
30         printf("\n");
31     }
32     
33     for(j=1;j<i;j++){
34         space=i-j-1;
35         charNum=j*2+1;
36         count+=charNum;
37         while(space){
38             printf(" ");
39             space--;
40         }
41         while(charNum){
42             printf("%c",c);
43             charNum--;
44         }
45         printf("\n");
46     }
47     printf("%d\n",n-count);
48     return 0;
49 }

 

posted @ 2021-04-24 00:27  keiiha  阅读(259)  评论(0编辑  收藏  举报