.本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉盡可能多的符號。
輸入格式:
輸入在一行給出1個正整數N(≤1000)和一個符號,中間以空格分隔。
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。
輸入樣例:
19 *
輸出樣例:
*****
***
*
***
*****
2
新手。。。
#include<stdio.h> main() { int i,n,x,f,j,y=1; char a; scanf("%d %c",&n,&a); do { x=2*y*y+4*y+1; if(x<n) y++; else if(x>n) { y--; f=2*y*y+4*y+1; } else { f=n; break; } }while(x<n); for(i=1;i<=y;i++) { for(j=1;j<=(i-1);j++) printf(" "); for(j=1;j<=3+2*(y-1)-2*(i-1);j++) printf("%c",a); printf("\n"); } for(i=1;i<=y+1;i++) { for(j=1;j<=(y-i+1);j++) printf(" "); for(j=1;j<=2*i-1;j++) printf("%c",a); printf("\n"); } printf("%d\n",n-f); }