```c
include
int main() {
int rows, i, j, space;
printf("请输入菱形的行数: ");
scanf("%d", &rows);
space = rows - 1; // 打印上半部分菱形
// 打印上半部分菱形
for (i = 1; i <= rows; i++) {
// 打印空格
for (j = 1; j <= space; j++) {
printf(" ");
}
space--;
// 打印星号
for (j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
space = 1; // 打印下半部分菱形
// 打印下半部分菱形
for (i = 1; i <= rows - 1; i++) {
// 打印空格
for (j = 1; j <= space; j++) {
printf(" ");
}
space++;
// 打印星号
for (j = 1; j <= 2 * (rows - i) - 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
代码解释:
输入行数 :程序首先提示用户输入菱形的行数。
打印上半部分菱形
使用一个外层循环遍历每一行。
内层第一个循环打印空格,空格的数量从 `rows - 1` 递减到 1。
内层第二个循环打印星号,星号的数量从 `2 * i - 1` 递增到 `2 * rows - 1`。
打印下半部分菱形
使用一个外层循环遍历每一行。
内层第一个循环打印空格,空格的数量从 1 递增到 `rows - 2`。
内层第二个循环打印星号,星号的数量从 `2 * (rows - i) - 1` 递减到 `2 * 1 - 1`。
建议:
该代码假设用户输入的是一个正整数,并且没有进行输入验证。在实际应用中,建议添加输入验证以确保程序的健壮性。
代码中的空格和星号打印逻辑是基于每行的行数来计算的,这样可以确保菱形图案的对称性。