c语言 输入n,输出由*构成的菱形和纺锤形,每个图形均为2n-1行.
时间: 2024-05-10 22:21:35 浏览: 151
以下是实现代码:
```c
#include <stdio.h>
int main() {
int n, i, j, k;
printf("请输入n:");
scanf("%d", &n);
// 输出菱形
for (i = 1; i <= 2*n-1; i++) {
k = i <= n ? i : 2*n-i;
for (j = 1; j <= n-k; j++) {
printf(" ");
}
for (j = 1; j <= 2*k-1; j++) {
printf("*");
}
printf("\n");
}
// 输出纺锤形
for (i = 2*n-2; i >= 1; i--) {
k = i <= n ? i : 2*n-i;
for (j = 1; j <= n-k; j++) {
printf(" ");
}
for (j = 1; j <= 2*k-1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
首先输入n,然后按照规律输出菱形和纺锤形。
菱形的行数为2n-1,第i行的星号个数为2i-1。我们可以用一个变量k来表示当前行的星号个数,k的取值范围为1到n,当i<=n时,k=i,否则k=2n-i。
为了保证菱形居中,每行前面需要输出一定数量的空格,数量为n-k。
纺锤形的行数比菱形少1,因此从2n-2开始循环,结束于1。输出原理和菱形一样,只是循环顺序相反,需要先输出下半部分,再输出上半部分。
运行程序,输入n=5时,输出的结果如下:
```
请输入n:5
*
***
*****
*******
*********
*******
*****
***
*
```
阅读全文