多重循环,也称嵌套循环,由一个外层循环和一个或多个内层循环组成。
for循环在C语言基础中占有重要地位,其中最能体现for的多重循环的就是打印各种形状的三角形,进而根据打印各种三角形的规律合并打印出菱形。
首先,我们来打印最简单的几个不同的三角形:
靠右直角三角形:
#include int main(){ int i;int j;// 外层循环可以打印出五行for(i=1;i<=5;++i){// 内层循环依靠1、2、3、4、5,分别打印出每一行相应数量的星星for(j=1;j<=i;++j){printf(" *"); } printf("\n"); } return 0; }
靠左直角三角形:
#include int main(){int i;int j;for(i=0;ii;j--){printf("");}for(j=0;j<=i;j++){printf(" *");}printf("\n");}return 0;}
靠左倒直角三角形:
#include int main(){int i;int j;for(i=5;i>=1;--i){for(j=1;j<=i;++j){printf(" *");}printf("\n");} return 0;}
靠右倒直角三角形:
#include int main(){ int i,j;for(i=5; i>=1; i--) {for(j=1; j<=5-i; j++)printf(""); for(j=1; j<=i; j++ )printf("* "); printf("\n"); } return 0; }
等腰三角形:
#include int main(){int i,j;for(i=5;i>=1;--i) {for(j=1;j=i;j--){printf("*");}for(j=5;j>=i+1;j--){printf("*");}printf("\n");}return 0;}
接下来,就将上面的几个三角形的写法结合起来,可以打印出菱形。
下面是用星形打印的菱形:
#include int main(){int i,j; for(i=1; i<=5; i++) {// 画空格for(j=1; j<=5-i; j++)printf("");for(j=1; j<=i; j++)// 画字符)printf("* ");for(j=1;j=1; i--) {for(j=1; j<=5-i; j++)printf("");for(j=1; j<=i; j++ )printf("* ");for(j=1;j<=i-1;j++)printf("* ");printf("\n");}return 0;}
然后下面是我空闲时想到用空格打印出来的空白格菱形。我根据上面的内容的思路打印出来的菱形总有点问题,可以看一下下面这段代码,这是一开始打印出来的,并不是自己满意的菱形:
#include int main(){int i,j;for(i=0;ii;j--){printf(" *");}for(j=0;j<i;j++){printf(" ");}for(j=0;j<i;j++){printf(" ");}for(j=0;j<i;j++){printf(" ");}for(j=0;ji;j--){printf(" *");}printf("\n");}for(i=1;i<=5;i++){for(j=0;ji;j--){printf(" ");}for(j=5;j>i;j--){printf(" ");}for(j=5;j>i;j--){printf(" ");}for(j=5;j>i;j--){printf(" ");}for(j=0;j<i;j++){printf(" *");}printf("\n");}}
我将各种三角形的打印方法结合起来打印出上面这个图形,上面这个看起来像是菱形,但其实仔细看并不是菱形。
接着做了一下修改,之后第一行和最后一行就多出了一个星号:
#include int main(){int i,j;for(i=0;ii;j--){printf(" *");}for(j=0;j<i;j++){printf("");}for(j=1;j<i;j++){//有修改 printf("");}//for(j=0;j<i;j++){//printf(" ");//}//for(j=0;ji;j--){printf(" *");}printf("\n");}for(i=2;i<=5;i++){for(j=0;ji;j--){printf("");}//for(j=5;j>i;j--){//printf(" ");//}//for(j=5;j>i;j--){//printf(" ");//}for(j=4;j>i;j--){//有修改 printf("");}for(j=0;j<i;j++){printf(" *");}printf("\n");}}
上面这个看起来中间已经得到我们想要的菱形,但是旁边却挤出来两个星号,还是有瑕疵。
最后就换了一种方式进行打印得到了想要的菱形,但是感觉有点笨。
下面最后的代码请各位参考学习:
#include int main(){int i,j;printf(" * * * * * * * * *\n");for(i=1;ii;j--){printf(" *");}for(j=0;j<i;j++){printf("");}for(j=1;j<i;j++){//******i=0改为i=1(从第二行开始打印) -------理解:上半部分的右边部分整体向左进k两个空格 printf("");}//for(j=0;j<i;j++){//printf(" ");//}//for(j=0;ji;j--){printf(" *");}printf("\n");}for(i=2;i<5;i++){//去掉(i=5)可以去掉最后一行 ,i=2可以从第二行开始打印(即去掉第一行) for(j=0;ji;j--){printf("");}//for(j=5;j>i;j--){//printf(" ");//}//for(j=5;j>i;j--){//printf(" ");//}for(j=4;j>i;j--){//******(j=4)去掉第一行,从第二行开始打印 --------理解:下半部分的右边部分整体向左进k两个空格 printf("");}for(j=0;j<i;j++){printf(" *");}printf("\n");}printf(" * * * * * * * * *");}
希望对你有帮助!