C语言for循环输出字符图形

编程就像搭积木,简单的循环也能创造出美丽的图案

1. 基本三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main() {
int i, j, rows = 5;

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

return 0;
}

输出结果:

1
2
3
4
5
* 
* *
* * *
* * * *
* * * * *

代码解析:

  • 外层循环控制行数
  • 内层循环控制每行打印的星号数量
  • printf("\n")用于换行

2. 倒三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main() {
int i, j, rows = 5;

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

return 0;
}

输出结果:

1
2
3
4
5
* * * * * 
* * * *
* * *
* *
*

3. 金字塔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int main() {
int i, j, space, rows = 5;

for(i = 1; i <= rows; i++) {
// 打印空格
for(space = 1; space <= rows - i; space++) {
printf(" ");
}

// 打印星号
for(j = 1; j <= 2*i-1; j++) {
printf("*");
}

printf("\n");
}

return 0;
}

输出结果:

1
2
3
4
5
    *
***
*****
*******
*********

代码解析(金字塔结构):

  1. 空格控制逻辑分析:
    • 每行前导空格数 = 总行数 - 当前行号(rows - i)
    • 示例演示:当总行数rows=5时,第1行需要4个空格(5-1)
  2. 星号打印原理:
    • 星号数量遵循2n-1的等差数列公式(n为当前行号)
    • 数学验证:第3行(i=3)星号数 = 2*3-1 = 5
  3. 循环结构解析:
    • 外层循环:控制金字塔高度(i从1到rows)
    • 内层循环1:控制前导空格(space从1到rows-i)
    • 内层循环2:控制星号打印(j从1到2*i-1)
  4. 常见调试问题:
    • 星号显示不齐:检查空格循环是否先于星号循环执行
    • 金字塔变形:确认星号数公式是否正确应用
    • 边界错误:注意循环条件是否包含等号(<=)

4. 空心金字塔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main() {
int i, j, space, rows = 5;

for(i = 1; i <= rows; i++) {
// 打印空格
for(space = 1; space <= rows - i; space++) {
printf(" ");
}

// 打印星号
for(j = 1; j <= 2*i-1; j++) {
if(j == 1 || j == 2*i-1 || i == rows) {
printf("*");
} else {
printf(" ");
}
}

printf("\n");
}

return 0;
}

输出结果:

1
2
3
4
5
    *
* *
* *
* *
*********

5. 菱形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>

int main() {
int i, j, space, rows = 5;

// 上半部分
for(i = 1; i <= rows; i++) {
for(space = 1; space <= rows - i; space++) {
printf(" ");
}
for(j = 1; j <= 2*i-1; j++) {
printf("*");
}
printf("\n");
}

// 下半部分
for(i = rows-1; i >= 1; i--) {
for(space = 1; space <= rows - i; space++) {
printf(" ");
}
for(j = 1; j <= 2*i-1; j++) {
printf("*");
}
printf("\n");
}

return 0;
}

输出结果:

1
2
3
4
5
6
7
8
9
    *
***
*****
*******
*********
*******
*****
***
*

总结

通过简单的for循环嵌套,我们可以创建各种有趣的字符图形。掌握这些基础图案后,你可以尝试:

  • 改变图形大小
  • 使用不同字符
  • 组合不同图案
  • 添加颜色(如果支持)

这些练习不仅能加深对循环的理解,还能培养编程思维和创造力。


C语言for循环输出字符图形
http://tingshuoyiqing.top/2025/03/07/字符图形/
作者
ting
发布于
2025年3月7日
许可协议