如何用C语言打印出三角星号塔?
用C语言打印三角形的星号塔,可以说是在C语言学习中是十分经典的一个题目,但对于新手来说这个程序看起来不长,但有点不好理解,下来我会分部说说都代表啥,为啥程序这样就能打印出来一个三角塔。
操作方法
- 01
我用的CodeBlocks来进行演示。
- 02
打开软件输入程序,运行,可得到三角塔。(程序我会发在最后一步)。
- 03
下来我说一下内部程序每一步都是什么作用。(外部环境程序就不说了,基础)。
- 04
创建所需变量,i j k space,特别注意space,之所以给它复制空格,因为三角塔其实是一个左半部分为一个空格组成的半个倒三角形(如图标记)。
- 05
在接下来这个for循环嵌套中,可以发现 i j 各控制一个变量,如果你自己在纸上一个一个写出来每次循环的话,就会发现,i 在控制横行,而 j 在控制每一列,因为内部for j>=i ,所以可以看出,每横行随着 i 一次次的增大而打印的空格越来越少(这个嵌套就是打印上面说的半个空格倒三角形,)。
- 06
而如图这个循环就是在每横行空格打印完后补上需要的‘ * ’。
- 07
上面所说的打印空格的规律是: 第1横行,打印3个空格。 第2横行,打印2个空格。 第3横行,打印1个空格。 第4横行,打印0个空格。
- 08
而在后面补上的信号规律则是: 第1横行,补上1个星号。 第2横行,补上3个星号。 第3横行,补上5个星号。 第4横行,补上7个星号。 而这个需要自己在输入程序之前发现每行补上的数目与每行的关系,即可列出程序。,上面的空格也是,不过相比之下比这个简单,不用验算就看得出来规律。
- 09
完整程序如下: #include <stdio.h> #include <stdlib.h> main() { int i,j,k; char space=' '; for(i=1;i<=4;i++) { for(j=3;j>=i;j--) { printf("%c",space); } for(k=1;k<=(2*i-1);k=k+1) { printf("*"); } printf("\n"); } }