一、概要
在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"); } }