一:内外循环独立进行
#include<bits/stdc++.h>
int main(){
int i,j;
for(i=0;i<5;i++){//外层循环 共循环5次
for(j=0;j<5;j++) //内层循环 每次输出五个*
printf("* ");
if(j%5==0){
printf("\n");//输出5个换行
}
}
}
这是输出结果
这种循环内外互不干涉,每一次内循环都输出5个
二:内部循环依赖于外部循环
#include<bits/stdc++.h>
int main(){
int i,j;
for(i=0;i<1;i++){//外层循环 共循环5次
for(j=0;j<i;j++) //内层循环 每次输出i个*
printf("* ");
printf("\n");
}
}
这时输出结果
第一种相当于内部循环进行5次,外部循环也进行5次,相当于外部循环把内部循环的结果打印了5次,外部每循环一次,内部都打印5个*
而第二种为什么不一样那,内部循环收到外部循环的控制,
内部每次第一次当i=0,即循环条件0<0不成立,内部不循环无输出,只打印空行,
第二次当i=1,循环条件j<1,内部循环一次打印*,接着打印空行。
第三次当i=2,循环条件j<2,内部循环两次次打印*,接着打印空行。
关于内循环的练习可以做一下杨辉三角问题
题目描述
按要求输入如下格式的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
最多输出10层
输入
输入只包含一个正整数n,表示将要输出的杨辉三角的层数。
输出
对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开
这里先给出代码
#include<bits/stdc++.h>
int main(){
int s;
scanf("%d",&s);
int a[s][s];//定义一个二维数组,
for(int x=0;x<s;x++){
for(int y=0;y<s;y++){
if(y==0||x==y){//可以看出当二维数组a[i][0]和a[i][i]都是1
a[x][y]=1;
}else{
a[x][y]=a[x-1][y-1]+a[x-1][y];//根据规律看出
}
}//这个循环是就是嵌套循环第一种
}
for(int x=0;x<s;x++)
{
for(int y=0;y<=x;y++)
{
printf("%d ",a[x][y]);//
}
printf("\n");
} //嵌套循环第二种
return 0;
}