一、概要
在c语言中,if,switch,for,while,do-while可以相互间多次嵌套。
if(){
for()
{
for()
{
}
}
}
while()
{
for(){
}
for(){
}
}
break,continue只跳出当前循环,不会影响外重循环,不会因为内重循环跳出整个循环体,只影响与自己最近的一个循环。
for()
{
for()
{
break;
}
}
二、二重循环
#include "stdio.h" void main() { int i,j; for(i=1;i<=2;i++) { printf("---------------\n"); for(j=1;j<=3;j++) { printf("****************\n"); } printf("---------------\n\n"); } }
#include "stdio.h" void main() { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { printf("*"); } printf("\n"); } }
*
**
***
****
*****
99乘法表
#include "stdio.h" void main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%dx%d=%d ",j,i,j*i); } printf("\n"); } }
2.1、一重循环平行嵌套多重循环
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,j,k; for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { printf("*"); } for(j=1;j<=5;j++) { printf("@"); } printf("\n"); } }
等腰三角形
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,j,k; for(i=1;i<=5;i++) { for(k=1;k<=5-i;k++) { printf(" "); } for(j=1;j<=2*i-1;j++) { printf("*"); } printf("\n"); } } /* 1 1 4 2 3 3 3 5 2 4 7 1 5 9 0 */
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,j,k; for(i=1;i<=5;i++) { for(k=1;k<=i-1;k++) { printf(" "); } for(j=1;j<=11-2*i;j++) { printf("*"); } printf("\n"); } } /* 1 1 4 0 9 11-2*i 2 3 3 1 7 11-4 3 5 2 2 5 11-6 4 7 1 3 3 11-8 5 9 0 4 1 11-10 ********* ******* ***** *** * */
三、三重循环
百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
公鸡 x 0-100/5
母鸡 y 0-100/3
小鸡 z 0-100*3
5*x+3*y+z/3==100&&z%3==0
x+y+z==100
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int x,y,z; for(x=0;x<=100/5;x++) for(y=0;y<=100/3;y++) for(z=0;z<=100*3;z++) { if((x*5+y*3+z/3==100)&&(z%3==0)&&(x+y+z==100)) { printf("x=%d y=%d z=%d\n",x,y,z); } } }
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { //0-9 //XYZ int x,y,z; for(x=0;x<=3;x++) { for(y=0;y<=3;y++) { for(z=0;z<=3;z++) { printf("\n%d%d%d",x,y,z); } } printf("\n"); } }
四、菱形
/* Note:Your choice is C IDE */ #include "stdio.h" #include <math.h> void main() { int i=1,j,k,r=5; //r表示行数 for(i=-1*r;i<=r;i++){ for(k=1;k<=abs(i);k++) { printf(" "); } for(j=1;j<=(2*r+1)-2*abs(i);j++) { printf("*"); } printf("\n"); } } /* -4 -3 -2 -1 0 1 2 3 4 */
五、菱形与函数
/* Note:Your choice is C IDE */ #include "stdio.h" #include <math.h> //定义一个输出函数,用于重复向屏幕输出信息 //c表示参数,要输入的字符 //n表示重复次数 void out(char c,int n) { int i; for(i=1;i<=n;i++) { printf("%c",c); } } void main() { int i=1,j,k,r=10; for(i=-1*r;i<=r;i++){ out(' ',abs(i)); out('*',(2*r+1)-2*abs(i)); printf("\n"); } } /* -4 -3 -2 -1 0 1 2 3 4 */
六、空心菱形
#include "stdio.h" #include <math.h> void main() { int i=1,j,k,r=8; //r表示行数 for(i=-1*r;i<=r;i++){ //控制行数 for(k=1;k<=abs(i);k++) //控制空格 { printf(" "); } for(j=1;j<=(2*r+1)-2*abs(i);j++) //控制星号与中间的空格 { //如果是第一列或最后一列 if(j==1||j==((2*r+1)-2*abs(i))) { printf("*"); }else{ printf(" "); } } printf("\n"); } }