本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:19 *输出样例:
***** *** * *** ***** 2
1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 int main() 5 { 6 int sum,n,t;char ch; 7 cin>>sum>>ch; 8 if(sum>=1){ 9 n=1; 10 sum--; 11 t=1; 12 } 13 while(sum>=(t+2)*2) 14 { 15 sum-=(t+2)*2; 16 n++; 17 t+=2; 18 } 19 int i,j; 20 for(i=n;i>=1;i--) 21 { 22 for(j=n-i;j>0;j--) 23 printf(" "); 24 for(j=(i*2)-1;j>0;j--) 25 printf("%c",ch); 26 /*for(j=n-i;j>0;j--) 27 printf(" ");*///害得我格式错误... 28 printf(" "); 29 } 30 for(i=2;i<=n;i++) 31 { 32 for(j=n-i;j>0;j--) 33 printf(" "); 34 for(j=(i*2)-1;j>0;j--) 35 printf("%c",ch); 36 /*for(j=n-i;j>0;j--) 37 printf(" ");*/ 38 printf(" "); 39 } 40 printf("%d ",sum); 41 return 0; 42 }