请用C语言打印出两个空心菱形叠加
时间: 2024-10-21 11:09:28 浏览: 27
要使用C语言打印出两个空心菱形叠加的效果,可以利用嵌套循环来控制每一行的字符输出。下面是一个示例代码:
```c
#include <stdio.h>
void printHollowDiamonds(int n) {
int i, j;
// 打印上半部分的第一个空心菱形
for (i = 1; i <= n; i++) {
// 打印左边的空格
for (j = 1; j <= n - i; j++) {
printf(" ");
}
// 打印左边的星号
if (i == 1) {
printf("*");
} else {
printf("*");
for (j = 1; j <= 2 * (i - 1) - 1; j++) {
printf(" ");
}
printf("*");
}
// 打印右边的空格
for (j = 1; j <= 2 * (n - i); j++) {
printf(" ");
}
// 打印第二个空心菱形的左边的星号
if (i == 1) {
printf("*");
} else {
printf("*");
for (j = 1; j <= 2 * (i - 1) - 1; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
// 打印下半部分的第一个空心菱形
for (i = n - 1; i >= 1; i--) {
// 打印左边的空格
for (j = 1; j <= n - i; j++) {
printf(" ");
}
// 打印左边的星号
if (i == 1) {
printf("*");
} else {
printf("*");
for (j = 1; j <= 2 * (i - 1) - 1; j++) {
printf(" ");
}
printf("*");
}
// 打印右边的空格
for (j = 1; j <= 2 * (n - i); j++) {
printf(" ");
}
// 打印第二个空心菱形的左边的星号
if (i == 1) {
printf("*");
} else {
printf("*");
for (j = 1; j <= 2 * (i - 1) - 1; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
}
int main() {
int n;
printf("请输入菱形的高度(奇数): ");
scanf("%d", &n);
if (n % 2 != 0) {
printHollowDiamonds(n);
} else {
printf("高度必须是奇数。\n");
}
return 0;
}
```
### 解释
1. **输入部分**:程序首先提示用户输入菱形的高度 `n`,并且检查是否为奇数。
2. **上半部分**:
- 外层循环 `i` 控制行数,从1到 `n`。
- 内层循环 `j` 控制每一行的空格和星号的输出。
- 第一行只输出一个星号,其他行输出两个星号中间的空格。
3. **下半部分**:
- 外层循环 `i` 控制行数,从 `n-1` 到1。
- 内层循环 `j` 控制每一行的空格和星号的输出。
- 同样地,第一行只输出一个星号,其他行输出两个星号中间的空格。
通过这种方式,可以打印出两个空心菱形叠加的效果。
阅读全文