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


