小李自认为自己的代码水平很高,想用C语言本写个程序把给定的符号打印成沙漏的形状,然而一直没有成功想请你帮帮他。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行
时间: 2023-11-25 17:51:28 浏览: 68
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, j, k;
char c;
scanf("%d %c", &n, &c); // 输入符号和总个数
int h = (n + 1) / 2; // 计算沙漏高度
for (i = 1; i <= h; i++) { // 打印上半部分
for (j = 1; j <= i - 1; j++) {
printf(" ");
}
for (k = 1; k <= 2 * (h - i) + 1; k++) {
printf("%c", c);
}
printf("\n");
}
for (i = h + 1; i <= n; i++) { // 打印下半部分
for (j = 1; j <= n - i; j++) {
printf(" ");
}
for (k = 1; k <= 2 * (i - h) + 1; k++) {
printf("%c", c);
}
printf("\n");
}
printf("%d", n - 2 * h * h + 1); // 输出剩余符号个数
return 0;
}
```