18C++循环结构-多重循环(1)
一、循环的嵌套
问题:

#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)完善程序。
编程序输出如图所示的图形。
11111
22222
33333
44444
#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、输出
0
12
345
6789
#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;
}



浙公网安备 33010602011771号