循环嵌套

来源:互联网 发布:网络结婚主持台词 编辑:程序博客网 时间:2024/06/05 17:17
   多层循环执行的过程是外层循环每执行一次,内层循环就完整的执行一遍。
#include<iostream.h>void main(){    int i,j,k;    cout<<"i"<<"j"<<"k"<<endl;    for(i=0;i<2;i++)        for(j=0;j<2;j++)            for(k=0;k<2;k++)                cout<<i<<j<<k<<endl;}

这是一个三层循环,最外层循环每定一个i值时,第二层循环j从0~1执行两次循环;第二层循环的循环变量j每定一个值,第三层循环的k从0~1执行两次循环,第三层的循环体cout<<i<<j<<k;共执行了2*2*2=8次循环。通过运行结果,可以非常清楚的了解循环过程。

例题一、打印乘法口诀表。

#include<iostream.h>void main(){    int i,j,k;    for(i=1;i<=9;i++)    {        for(j=1;j<=i;j++)            cout<<j<<"*"<<i<<"="<<i*j<<" ";                cout<<endl;                }}

用i控制行,用j控制列,需要两层循环。
例题二、两个乒乓球队比赛,各出3人,甲队为a,b,c三人,乙队为x,y,z三人,有人向队员打听比赛名单,a说他不和x比,c说他不和x、z比,请找出三对比赛选手的名单。
用穷举法。

#include<iostream.h>void main(){    char i,j,k;    for(i='x';i<='z';i++)        for(j='x';j<='z';j++)        if(i!=j)//a和b的对手不能是同一个人            for(k='x';k<='z';k++)                if(i!=k&&j!=k)//a,b,c的对手不能同一个人                    if(i!='x'&&k!='x'&&k!='z')                    //a的对手不是x,c的对手不是x和z                        cout<<"顺序是"<<"a--"<<i<<" "<<"b--"<<j<<" "<<"c--"<<k;}

i 是a的对手,j是b的对手,k是c的对手。
循环中的中途退出
break语句
1、break语句用在switch中时,使程序跳出switch而执行switch后的程序
2、break语句用在for、do-while和while中,可使程序终止循环而执行循环后的语句。通常break与if配合,即满足条件时便跳出循环。
例题三、输入一个数判断是否为素数。
素数是只能被1和自身整除的数。

#include<iostream.h>void main(){    int n;    cin>>n;    int i=2;    for(;i<n;i++)        if(n%i==0)            break;        if(i>=n)            cout<<"是素数";        else            cout<<"不是素数";

1、break语句不能用于循环语句或者switch语句之外任何语句中。
2、在多层循环中一个break只能跳出一层,而跳到最外层需要多个地方设置break。

continue语句
continue语句是跳过循环体中剩余语句而强行执行下一次循环,continue语句只用于循环体中,通常与if配合。
continue和break区别是,continue只结束本次循环,继续执行下一次循环,而break则是结束整个循环。
例题四、输出能被3和7整除的三位整数。

#include<iostream.h>void main(){    int i;    int count=0;    for(i=100;i<1000;i++)    {        if(i%3!=0) continue;        if(i%7!=0) continue;        count++;        cout<<i<<" ";        if(count%5==0)            cout<<endl;    }}

continue对for循环,跳过循环体其余语句,转向循环增量表达式3的计算。对do-while和while循环,跳过循环体其余语句,转向循环条件的判定,继续判定是否循环。
循环嵌套时,break和continue只影响包含他们的最内层循环,与外层循环无关。