C语言实现星号点号的交错打印

来源:互联网 发布:java跳跃表 编辑:程序博客网 时间:2024/06/10 20:51

题目:实现如下图所示的星号点号的交错打印

*

*.*.

*..*..*..

*...*...*...*...

*....*....*....*....*....

*.....*.....*.....*.....*.....*.....

规律:每行星号之间点号的个数为该行星号总数的个数减1

代码如下:双层递归实现

void dot(int N)//实现点的打印{if (N == 0)//处理第一行的情况return;if (N == 1){printf("%c", '.');return;}else{dot(N - 1);printf("%c", '.');return;}}void asterisk(int N1,int N2)//N2的设置是为了防止每次迭代改变dot()函数中的参数{if (N1 == 1){printf("%c", '*');dot(N2);return;}else{asterisk(N1 - 1,N2);//打印星号printf("%c", '*');dot(N2);return;}}


测试:

void main(){for (int i = 1; i < 9; ++i){asterisk(i, i - 1);printf("\n");}getchar();}

测试结果:





0 0