Attention: 如果喜歡我寫的文章,歡迎來我的github主頁給star
Github:github.com/MuziJin
本題要求你寫個(gè)程序把給定的符號(hào)打印成沙漏的形狀。例如給定17個(gè)*
,要求按下列格式打印
*****
***
*
***
*****
所謂“沙漏形狀”,是指每行輸出奇數(shù)個(gè)符號(hào);各行符號(hào)中心對(duì)齊;相鄰兩行符號(hào)數(shù)差2;符號(hào)數(shù)先從大到小順序遞減到1,再從小到大順序遞增;首尾符號(hào)數(shù)相等。
給定任意N個(gè)符號(hào),不一定能正好組成一個(gè)沙漏。要求打印出的沙漏能用掉盡可能多的符號(hào)。
輸入格式:
輸入在一行給出1個(gè)正整數(shù)N(≤1000)和一個(gè)符號(hào),中間以空格分隔。
輸出格式:
首先打印出由給定符號(hào)組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號(hào)數(shù)。
輸入樣例:
19 *
輸出樣例:
*****
***
*
***
*****
2
Code
#include <stdio.h>
#include <math.h>
int main(void)
{
int N;
char c;
scanf("%d %c", &N,&c);
int i=1,j;
int n = sqrt((double) (N + 1) / 2);
for (i = 1; i <= n; i++)
{
for (j = 1; j<i; j++)
printf(" ");
for (j = 2 * (n - i) + 1; j >= 1; j--)
printf("%c", c);
putchar('\n');
}
for (i = 1; i <= n - 1; i++)
{
for (j = 1; j <= n-i-1; j++)
printf(" ");
for (j = 1; j <= 2 * i + 1; j++)
printf("%c", c);
putchar('\n');
}
printf("%d", N - (2 * n*n - 1));
return 0;
}
轉(zhuǎn)載請(qǐng)注明出處:github.com/MuziJin