在C语言中,可以使用两层嵌套循环来打印出钻石形状。以下是一个示例代码,它可以打印出一个规则的星号构成的钻石形状图案:
```c
include
int main() {
int row = 15; // 钻石的大小
int half = row / 2 + 1; // 对称轴上的行数
int i, j;
// 打印钻石的上半部分
for (i = 1; i <= half; i++) {
// 打印前导空格
for (j = 1; j <= half - i; j++) {
printf(" ");
}
// 打印星号
for (j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
// 打印钻石的下半部分
for (i = 1; i < half; i++) {
// 打印前导空格
for (j = 1; j <= i; j++) {
printf(" ");
}
// 打印星号
for (j = 1; j <= 2 * (half - i - 1) + 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
代码解释:
初始化
`row`:钻石的大小,这里设置为15。
`half`:对称轴上的行数,计算公式为 `row / 2 + 1`。
打印上半部分
外层循环 `for (i = 1; i <= half; i++)` 控制行数。
第一个内层循环 `for (j = 1; j <= half - i; j++)` 打印前导空格。
第二个内层循环 `for (j = 1; j <= 2 * i - 1; j++)` 打印星号。
打印下半部分
外层循环 `for (i = 1; i < half; i++)` 控制行数。
第一个内层循环 `for (j = 1; j <= i; j++)` 打印前导空格。
第二个内层循环 `for (j = 1; j <= 2 * (half - i - 1) + 1; j++)` 打印星号。
通过这种方式,程序可以动态地调整前导空格和星号的数量,从而打印出对称且逐渐收窄的星号序列,最终呈现出完整的钻石形态。