一、循环的嵌套
问题:
#include <iostream>
using namespace std;
int main()
{int j;for(j=1;j<=5;j++)cout<<'*';return 0;
}
再编一程序,每次输出3行,每行5个"*"号。
在外层加一个循环语句来实现;流程图如:
#include <iostream>
using namespace std;
int main()
{int i,j;for(i=1;i<=3;i++){for(j=1;j<=5;j++) cout<<'*';cout<<endl; } return 0;
}
运行过程:
这种循环体中又引入循环语句的方式,称为循环的嵌套,处于外层的循环叫作外循环,处于内层的循环叫作内循环,根据嵌套的层数有双重环、三重循环等。
![]() |
---|
我们来看一下,下面这段程序是不是双重循环?
for(i=1;1<=3,++)cout<<'*';
for(j=1;j<5:j++)cout<<'*';
cout<<endl;
这两个循环是并列关系,不是嵌套关系,所以不是双重循环。
练习:
1、尼克在家里通过网络观看狐狸老师的C++教学视频,可以选择1280×720高清模式,也可以选择1920×1080全高清模式。请问1280×720和192×1080指的是( )。
A.内存 B.存储容量 C.分辨率 D.显示器大小
2、阅读程序写结果。
#include <iostream>
using namespace std;
int main()
{int i, j:for(i=l;i<=3;i++){for(j=1;j<=5;j++)cout <<j;cout << endl;}
return 0;
}
i,j输出:___________
(3)完善程序。
编程序输出如图所示的图形。
11111222223333344444
#include <iostream>
using namespace std;
int main()
{int i, j;for(i=1;____;i++){for(j=1;_______;j++)cout<<________;cout <<endl;}returm 0;
}
二、双重循环的应用
实例1
图形的窍门:试编一程序,输出如图所示的三角形图形。
流程图:
#include <iostream>
using namespace std;
int main()
{int i,j;for(i=1;i<=5;i++){for(j=1;j<=i;j++)cout<<'*';cout<<endl; } return 0;
}
思考:
#include <iostream>
#include <iomanip> //为了使用setw()来设置域宽
using namespace std;
int main()
{int i,j;for(i=1;i<=5;i++) //外循环控制行数{ cout<<setw(41-i) <<' '; //占位,右对齐,每行位置for(j=1;j<=i*2-1;j++) //内层循环控制每行的个数cout<<'*'; //输出的内容cout<<endl; //换行} return 0;
}
实例2
九九乘法表:编程输出九九乘法表
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)cout<<i<<'*'<<j<<'='<<setw(2)<<i*j<<" ";cout<<endl;}
}
实例3
鸡兔同笼
大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?试编一程序求笼中鸡和兔各有几只?
可以用枚举算法,鸡兔同笼,有35个头,则鸡最少1只,最多34只。有94只脚,兔子最少1只,最多23只。当满足头35个、脚94只时,输出鸡和兔的只数,流程图如图示。
#include <iostream>
using namespace std;
int main()
{int ji,tu;for(ji=1;ji<=34;ji++)for(tu=1;tu<=23;tu++){if(ji+tu==35)if(ji*2+tu*4==94)cout<<"鸡:"<<ji<<" 兔:"<<tu<<endl;}return 0;
}
可以把两个条件用逻辑与(&&)连接起来。
if(ji+tu==35 && (ji*2+tu*4==94)
练习:
(一)选择题
1、家用扫地机器人具有自动避障、清扫、自动充电等功能,这主要是应用了信息技术中的( )
A.人工能技术 B.网络技术 C.多媒休技术 D.数据管理技术
2、物联网在生活中得到了越来越广泛的应用,下列不属于物联网应用的是( )
A.手机远程遥控家中电器的运行 B.电视遥控器遥控电视 C.高速公路收费站ETC通道 D.手机远程高控蔬菜大棚的温度
3、尼克的手机在风之巅广场搜索到Wi-Fi信号,使可通过Wi-Fi上网,这是应用了( )技术。
A.虚拟现实 B.无线网络 C.网络安全 D.人工智能
(二)阅读程序写结果
1、
#include <iostream>
using namespace std;
int main()
{int i,j;char t='A';for(i=1;i<=3;i++){for(j=1;j<=i;j++)cout<<t;cout<<endl;t++;}
return 0;
}
i,j,t输出:____________________
2、
#include <iostream>
using namespace std;
int main()
{int i, j, ans=0;for(i=1;i<=3;i++)for(j=1;j<=5;j++)ans++;cout << ans << endl;
return 0;
}
i,j,ans输出:_____________________
3、
#include <iostream>
using namespace std;
int main()
{int i, j, ans=0;for(i=1;i<=3;i++)for(j=1;j<=5;j++)ans+=i;cout << ans << endl;
return 0;
}
i,j,ans输出:_____________________
(三)完善程序
1、输出
0123456789
#include <iostream>
using namespace std;
int main()
{int i,j,t=0;for(i=1;________;i++){cout<<setw(40);for(j=1;j<=i;j++){cout<<t;___________;}________;}return 0;
}
2、
#include <iostream>
using namespace std;
int main()
{int i,j,ans;ans=0;for(i=1;i<=99;i++)for(j=1;j<=i;j++){____________;if(i==99&&j==9)_________;}cout<<ans<<endl;return 0;
}
3、求1×1×1×1+2×2×2×2+3×3×3×3+·-n×n×n×n的和是多少?
#include <iostream>
using namespace std;
int main()
{int i,f,n;long long sum, sumn;sum=0;cout<<"n=";cin>>n;for(i=1;i<=n; i++){___________;for(j=1;j<=4:j++)sumn*=i;___________;}cout<<sun <<endi;return 0;
}