题目
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式及样例
格式
样例
输出格式及样例
格式
样例
参考代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int n;//正整数n
int ch;//符号
scanf("%d %c", &n, &ch);
int half=n/2;
// 7 5 3 1 1 3 5 7
int sum = 0;
int i = 0;
int tmp;
while (2*sum-1 < n) {
tmp = sum;//用于计算所剩
sum += 2 * i + 1;
i++;
}
int result = n-(2 * tmp - 1);
int flag = 0;//衔接处换行标记
int m = i-1;
//上半区
for (int j = m; j >0; j--) {
for (int t = m-j; t >0; t--)
printf(" ");
for (int k = 2 * j; k > 0; k--) {
if (k == 1) {
flag = 1;
break;
}
printf("%c",ch);
}
printf("\n");
}
//下半区
for (int j = 1; j < m; j++) {
for (int t = j; t < m-1; t++)
printf(" ");
for (int k = 2*j+1; k > 0; k--) {
printf("%c",ch);
}
printf("\n");
}
printf("%d", result);
return 0;
}