打印菱形图案 Score 20 Author C课程组 Organization 浙江大学 本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。 输入格式: 输入在一行中给出一个正的奇数n。 输出格式: 输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。 输入样例: 7 输出样例: * * * * * * * * * * * * * * * * * * * * * * * * *
时间: 2025-06-14 18:48:10 浏览: 16
### 打印菱形图案的C语言实现
以下是使用C语言编写的程序,能够根据用户输入的奇数`n`打印由星号组成的正菱形图案。代码逻辑基于对称性,通过控制空格和星号的数量来构造图案。
```c
#include <stdio.h>
int main() {
int n;
printf("请输入一个奇数:");
scanf("%d", &n);
if (n % 2 == 0) { // 如果输入不是奇数,则提示错误并退出
printf("输入有错,请输入奇数!\n");
return 1;
}
int mid = n / 2;
// 上半部分(包括中间行)
for (int i = 0; i <= mid; i++) {
// 打印空格
for (int j = 0; j < mid - i; j++) {
printf(" ");
}
// 打印星号
for (int k = 0; k < 2 * i + 1; k++) {
printf("*");
}
printf("\n");
}
// 下半部分
for (int i = mid - 1; i >= 0; i--) {
// 打印空格
for (int j = 0; j < mid - i; j++) {
printf(" ");
}
// 打印星号
for (int k = 0; k < 2 * i + 1; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
### 程序逻辑说明
- **输入验证**:程序首先读取用户输入的整数`n`,并通过判断`n % 2 == 0`确保输入为奇数[^2]。如果输入不符合要求,则输出错误信息并终止程序。
- **上半部分生成**:对于菱形的上半部分(包括中间行),通过两层循环分别打印空格和星号。外层循环控制行数,内层循环控制每行的空格和星号数量[^3]。
- **下半部分生成**:下半部分是对上半部分的镜像,因此通过调整外层循环的范围实现反转效果[^4]。
### 示例运行
#### 输入样例1:
```
请输入一个奇数:7
```
#### 输出样例1:
```
*
***
*****
*******
*****
***
*
```
#### 输入样例2:
```
请输入一个奇数:5
```
#### 输出样例2:
```
*
***
*****
***
*
```
### 注意事项
- 确保用户输入的是奇数,否则程序将提示错误并退出。
- 菱形的高度`n`决定了图案的大小,输入越大,图案越宽广[^3]。
阅读全文
相关推荐















