1027.打印沙漏
本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”,要求按下列格式打印
************ *****所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。
給定任意N個符號,不一定能正好組成一個沙漏。要求打印出的沙漏能用掉盡可能多的符號。
輸入格式:
輸入在一行給出1個正整數N(<=1000)和一個符號,中間以空格分隔。
輸出格式:
首先打印出由給定符號組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號數。
輸入樣例: 19 * 輸出樣例: ************ *****2
#include "stdafx.h" #include<stdio.h> #include<string.h>#pragma warning(disable:4996)int main() {int sum,n = 0;scanf("%d", &sum);getchar();char c = getchar();//得到層數和剩余數量while ((2 * (n + 1) * (n + 1) - 1) <= sum){n++;}int temp = sum - (2 * n * n - 1);//打印上半層for (int i = 0; i < n; i++){for (int j = 0; j < (i + 2 * (n - i) - 1); j++){if (j < i){printf(" ");}else{printf("%c",c);}}printf("\n");}//打印下半層for (int i = 1; i < n; i++){for (int j = 0; j < ((2 * i + 1) + (n - 1 - i)); j++){if (j < (n - 1 - i)){printf(" ");}else{printf("%c",c);}}printf("\n");}printf("%d\n", temp);return 0; }總結
- 上一篇: 1066. 图像过滤(15)
- 下一篇: MyEclipse上Git的使用(包含导