IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言基础—循环语句 -> 正文阅读

[C++知识库]C语言基础—循环语句


1、for 循环

表达式:

for (表达式1; 表达式2; 表达式3)
{
	语句块1;
}

表达式1:初始化,最早被执行,有且执行一次;
表达式2:判断条件,为真循环继续,为假循环结束,每次进入循环都需要判断,每次都执行
表达式3:步进,修改循环因子值,执行完语句块1之后执行,每次都执行

分析如下代码:

例1:

int main()
{
	int i;
	for (i = 0, printf("#1, %d\n", i);
		printf("#2, %d\n", i), i < 3;
		i++, printf("#3, %d\n", i))
	{
		printf("****1, %d\n", i);
	}
	return 0;
}

在这里插入图片描述

例2:输出 3 个数字

int main()
{
	int i;
	for (i = 0; i < 3; i++)
	{
		printf("%d\n", i);
	}
	return 0;
}

for 循环中的三个表达式都可以省略(两个分号不能省略),例如上面的程序可以(但是不建议)改成如下代码

int main()
{
	int i = 0;   // 初始化
	for (; ; )
	{
		if (i >= 3) {  // 判断
			break;
		}
		printf("%d\n", i);
		i++;   // 修改循环因子
	}
	return 0;
}

总结:for 循环是使用最多的循环语句,其最大的特点就是三个表达式放在一起,不容易漏写,大家且用且珍惜(●’?’●)

2、while 循环

表达式:

while (表达式1)
{
	语句块1
}

表达式1为真循环继续,为假循环结束

例子:将上面的例子改为 while 循环

int main()
{
	int i = 0;   // 初始化
	while (i < 3) {  // 判断
		printf("%d\n", i);
		i++;   // 修改循环因子
	}
	return 0;
}

3、do while 循环

表达式:

do
{
	语句块1
} while(表达式1);

表达式1为真循环继续,为假循环结束

例子:将上面的例子改成 do while 循环

int main()
{
	int i = 0;   // 初始化
	do {
		printf("%d\n", i);
		i++;   // 修改循环因子
	} while (i < 3);   // 判断条件
	return 0;
}

注意:

  • while 保证语句块至少执行 0 次及以上
  • do while 保证语句块至少执行 1 次及以上
  • 当表达式的第一次的值为 “真” 时,两种循环完全相同

4、break 的使用

break 用于跳出 switch 或者跳出一层循环

例如:求满足如下条件的 x 的值

1 + 2 + 3 + … + x < 1000 且 1 + 2 + 3 + … + x + (x+1) > 1000

输出 x 和求和的值

void SumTo1000()
{
	int sum = 0;   // 保存累加的值
	int i;   // i 后面还需要使用,则定义在 for 循环外面
	for (i = 1; ; i++) {
		sum += i;
		if (sum > 1000) {
			break;   // 符合条件,结束循环
		}
	}
	printf("x = %d, 和 = %d\n", i - 1, sum);
}

输出结果:
在这里插入图片描述

5、continue 的使用

continue:提前结束本次(趟)循环,直接进入下一次(趟)循环

例子:输出 100~200 之间的不能被 3 整除的数

法一:

for (n = 100; n < 200; n++) {
	if (n % 3 != 0) {
		printf("%d  ", n);
	}
}

法二:利用 continue 关键字实现

for (n = 100; n < 200; n++) {
	if (n % 3 == 0) {
		continue;   // 提前结束本次循环,后面的输出不执行
	}
	printf("%d  ", n);
}

6、综合练习

例1:用 π / 4 = 1 ? ( 1 / 3 + 1 / 5 ? 1 / 7 + . . . ) \pi/4 = 1-(1/3 + 1/5 - 1/7 + ...) π/4=1?(1/3+1/5?1/7+...) 公式求 π \pi π 的近似值,直到发现某一项的绝对值小于10-6 为止

分析:

  • 该公式用于求 π / 4 \pi/4 π/4,只需要将最后的结果乘以 4 即为 π \pi π 的值;
  • 公式中的每一项均由符号、分子和分母组成,那么在程序中只需要将这三部分处理好

代码如下:

double GetPi()
{
	int flg = 1;   // 保存符号位
	double m = 1;  // 分母
	double n = 1;  // 分子
	double tmp = 0;  // 累加和
	while (n / m > 1e-6) {
		tmp += flg * n / m;
		flg *= -1;
		m += 2;
	}
	return tmp * 4;
}
int main()
{
	double ret = GetPi();
	printf("%lf\n", ret);
	return 0;
}

例2:求斐波那契(Fibonacci)数列的第 n 个数。这个数列有如下特点:第1、第2两个数为 1、1。从第 3 个数开始,该数是前面两个数之和。即:
{ F 1 = 1 ( n = 1 ) F 2 = 2 ( n = 2 ) F n = F n ? 1 + F n ? 2 ( n ≥ 3 ) \begin{cases} F_1 = 1 & (n=1)\\ F_2 = 2 &(n=2)\\ F_n = F_{n-1} + F_{n-2} & (n\geq3) \end{cases} ? ? ??F1?=1F2?=2Fn?=Fn?1?+Fn?2??(n=1)(n=2)(n3)?

int Fibon(int n)
{
	int f1 = 1;   // 保存第一项的值
	int f2 = 1;   // 保存第二项的值
	int f3 = 1;   // 当前项的值
	for (int i = 3; i <= n; ++i) {
		f3 = f1 + f2;   // 当前项的值等于前两项之和
		f1 = f2;   // 还没达到需要求的项数,则两个值需要后移
		f2 = f3;
	}
	return f3;
}
int main()
{
	int n = 3;
	printf("%d\n", Fibon(n));
	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:54:41  更:2022-09-13 10:57:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 14:55:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码