目录
[一、for 语句](#一、for 语句)
[for 循环案例](#for 循环案例)
[for 循环结构语义分析](#for 循环结构语义分析)
[二、beak 语句](#二、beak 语句)
[三、continue 语句](#三、continue 语句)
循环结构
在实际生活中,经常会将同一件事情重复做很多次,在 C++ 语言中,也经常需要重复执行 同一代码块,这时就需要使用循环结构。
![](https://file.jishuzhan.net/article/1729699662392201217/76187dd1e65803665bbbef0befe1791f.webp)
一、for 语句
![](https://file.jishuzhan.net/article/1729699662392201217/0eaa950563efff0b64e870fb37e128d1.webp)
for 循环案例
输入一个整数n,输出1~n的所有整数。
cpp
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
/**
输入一个整数n,输出1~n的所有整数。
**/
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<i<<"\n"<<endl;
}
return 0;
}
编译运行,查看输出结果
![](https://file.jishuzhan.net/article/1729699662392201217/db7c49d9da979e5c732a222b10319c34.webp)
编译调试
1、工具》编译选项》代码生成/优化》连接器 然后在"产生调试信息"那里吧 no 改为 yes
![](https://file.jishuzhan.net/article/1729699662392201217/caa7cad8ec01e7b3708cb5b3b96d7628.webp)
2、设置断点
3、点击菜单 运行-调试,按F5也是可以的,或者点击工具栏上的那个 √ 也是可以开始调试的。叉号是停止调试。
![](https://file.jishuzhan.net/article/1729699662392201217/d8d2d46ad7872914c86870c1798e9b9b.webp)
4、设置需要监控的对象
![](https://file.jishuzhan.net/article/1729699662392201217/512e3b4c60f4e3ab732579af3594fc19.webp)
5、点击查看对象,输入 i 这时候我们就可以查看 i 每一步的输出值了。
![](https://file.jishuzhan.net/article/1729699662392201217/eb8731fe95bb38d826be47d951a70b6d.webp)
下一步,是单步执行,但是不进入子函数。
单步进入,单步执行,进入子函数。
跳过和跳过函数很明白了。
下一条语句,在汇编代码就可以看到,是逐句执行汇编代码
进入语句,也是在汇编代码中可以看到,也是逐句执行汇编代码。
但是它与 下一步语句 区别是,下一条语句不会进入到系统调用,比如标准库的汇编代码,但是进入语句 会进入标准库的汇编代码。
注:调试程序,大家可以自行去练习一下,多动手时间跟踪一下,你就会很熟练了。
for 循环结构语义分析
![](https://file.jishuzhan.net/article/1729699662392201217/3cff8042c616bdb3440bf11c52e771bb.webp)
二、beak 语句
break语句是指直接跳出所在的循环。注:break 只能跳出当前所在的循环体。
![](https://file.jishuzhan.net/article/1729699662392201217/2f9b8f16b185330762e0daee1b3661f7.webp)
输入一个整数n,输出1~n的所有整数,遇到5时停止。
cpp
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
/**
输入一个整数n,输出1~n的所有整数,遇到5时停止。
**/
int n;
cin>>n;
for(int i=1;i<=n;i++){
if(i==5)
break;
cout<<i<<"\n";
}
cout<<"this is a break test";
return 0;
}
运行查看结果
![](https://file.jishuzhan.net/article/1729699662392201217/f25b83d55a25cc8cafd7fcb446eee1fa.webp)
三、continue 语句
continue语句是指直接执行下一次循环。
![](https://file.jishuzhan.net/article/1729699662392201217/4bde983b8485f7e0e38b1e4e09a7eb40.webp)
案例1:
输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。
cpp
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
/**
输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。
**/
int n;
cin>>n;
for(int i=1;i<=n;i++){
if(i%2==0)
continue;
cout<<i<<"\n";
}
cout<<"this is a continue test";
return 0;
}
运行查看结果
![](https://file.jishuzhan.net/article/1729699662392201217/8fc5cb306c3ff60d9f8b14c068598802.webp)
案例2:
输入一个整数n(0<n<10),输出n! 。
cpp
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
/**
*
* 输入一个整数n(0<n<10),输出n的阶乘 n!
* n!= n*(n-1)*(n-2)*...1
*
**/
long long n,fac=1;
cin>>n;
for(int i=1;i<=n;i++){
fac = fac*i;//fac*=i;
}
cout <<"fac="<<fac<<endl;//flush 刷新缓存区
return 0;
}
查看运行结果
![](https://file.jishuzhan.net/article/1729699662392201217/fadd7940facc4a119ba9104255c79380.webp)
案例3:
输出斐波那契数列第10项( F(1)= F(2)= 1; F(N)= F(N-1) + F(N-2) )。
注:什么叫斐波那契数列?直白点就是当前数据项的值等于它前两项的数值之和。
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称"兔子数列",其数值为:1、1、2、3、5、8、13、21、34......在数学上,这一数列以如下递推的方法定义:F (0)=1,F (1)=1, F (n)=F (n - 1)+F (n - 2)(n ≥ 2,n∈ N*)。
cpp
#include <iostream>
#include <windows.h>
using namespace std;
/**
* 输出斐波那契数列第10项( F(1)= F(2)= 1; F(N)= F(N-1) + F(N-2) )
**/
//定义一个int数组
long long f[100+5];
int main(){
f[1]=f[2]=1;
for(int i=3;i<=100;i++){
f[i]=f[i-1]+f[i-2];
}
cout<<"f[10]="<<f[10]<<endl;
return 0;
}
运行结果:
![](https://file.jishuzhan.net/article/1729699662392201217/5c580e5d98d3358fafe51e0471c47346.webp)
下一节讲解循环结构 while 语句的用法