C语言 用for双重循环 编写一个有9行由*组成的菱形。

第一行1个*形,第二行3个*形,第三行5个*形,第四行7个*,第五行9个*,第六行7个*,第七行5个*,第八行3个*,第九行1个*。

以下是使用 C 语言编写一个输出 9 行由星号组成的菱形的程序,使用了双重 for 循环:

```c
#include <stdio.h>

int main() {
int rows = 9;
int i, j, k;

for (i = 1; i <= rows; i++) {
for (j = 1; j <= rows - i; j++) {
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++) {
printf("*");
}
printf("

");
}
for (i = rows - 1; i >= 1; i--) {
for (j = 1; j <= rows - i; j++) {
printf(" ");
}
for (k = 1; k <= 2 * i - 1; k++) {
printf("*");
}
printf("

");
}
return 0;
}
```

在上面的代码中,我们首先定义了一个变量 rows,它表示菱形的行数。接着使用了两个 for 循环来产生菱形的上半部分和下半部分。对于每一行,我们使用内层的 for 循环来打印菱形的空格和星号。外层的 for 循环则用于控制总共需要多少行。其中,第一个循环从 1 到 rows,第二个循环从 rows - 1 到 1。这样就可以输出完整的菱形了。

示例输出:

```
*
***
*****
*******
*********
*******
*****
***
*
```

希望这个代码可以帮助你实现你所需的功能
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-07
以下是使用 for 循环编写一个可打印出上述字符串的C程序。程序中嵌套使用两个 for 循环,内部循环和外部循环分别控制每行打印的星号数量和星号所在的位置。

```c
#include

int main() {
int n, i, j, space = 1;
printf("输入行数: ");
scanf("%d",&n);
space = n - 1;

for (j = 1; j <= n; j++) {
for (i = 1; i <= space; i++) {
printf(" ");
}
space--;
for (i = 1; i <= 2 * j - 1; i++) {
printf("*");
}
printf("\n");
}

space = 1;
for (j = 1; j <= n; j++) {
for (i = 1; i <= space; i++) {
printf(" ");
}
space++;
for (i = 1; i <= 2 * (n - j) - 1; i++) {
printf("*");
}
printf("\n");
}

return ;
}
```

该程序首先使用 scanf 函数获取菱形的行数 `n`。然后,外部循环和内部循环分别控制每行打印的星号数量和星号所在的位置。紧接着,程序打印出一个下半部分的菱形。

输出结果如下:

```
输入行数: 5
*
***
*****
*******
*********
*******
*****
***
*
```
第2个回答  2013-11-20
#include<stdio.h>
#include<conio.h>
int main()
{
int n=9,i=1,j;
for(i=1;i<=(n+1)/2;i++)
{
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
for(i=(n+1)/2-1;i>=0;i--)
{
for(j=2*i-1;j>=1;j--)
{
printf("*");
}
printf("\n");
}
getch();
return 0;
}本回答被网友采纳
第3个回答  2013-11-20
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,j;
printf("n=?\n");
scanf("%d",&n);
for(i=0;i<n*2+1;i++)
{
for(j=0;j<abs(i-n);j++)
printf(" ");
for(j=0;j<2*(n-abs(i-n))+1;j++)
printf("*");
printf("\n");
}
return 0;
}
相似回答