C及C++ 基础循环示例详解

目录
  • 正文
    • 手动(通用)方法(迭代方法)
  • 使用循环
    • 循环
    • While 循环
    • do-while 循环

正文

在编程中,有时需要多次执行某些操作或(例如)n次。当我们需要重复执行一个语句块时,就会使用循环。

例如:假设我们要打印 10 次“Hello World”。这可以通过两种方式完成,如下所示:

手动(通用)方法(迭代方法)

我们必须手动为 C 编写 print(),为 C++ 语句编写 cout 10 次。假设你必须写 20 次(写 20 条语句肯定会花费更多时间)现在想象你必须写 100 次,一遍又一遍地重写相同的语句真的很忙。所以,这里的循环有它们的作用。

说明需要循环的 C 程序

#include <stdio.h>
int main()
{
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	printf( "Hello World\n");
	return 0;
}

来说明需要循环的C++ 程序

#include <iostream>
using namespace std;
int main()
{
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	cout << "Hello World\n";
	return 0;
}

输出:

Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

使用循环

在Loop中,语句只需要编写一次,循环将执行10次,如下所示。在计算机编程中,循环是重复的指令序列,直到达到特定条件。

  • 完成一项操作:例如获取一项数据并对其进行更改,然后检查某些条件,例如计数器是否达到规定的数量。
  • 计数器未达到: 如果计数器未达到所需数量,则序列中的下一条指令返回到序列中的第一条指令并重复执行。
  • 计数器到达: 如果条件已经达到,下一条指令“落入”到下一条顺序指令或分支到循环外。

主要有两种类型的循环:

  • 入口控制循环:在这种类型的循环中,测试条件在进入循环体之前被测试。For 循环和While 循环是入口控制循环。
  • 退出受控循环:在这种类型的循环中,测试条件在循环体的末尾进行测试或评估。因此,无论测试条件是真还是假,循环体都会至少执行一次。do-while循环是退出控制循环。
编号 循环类型和说明
1. while 循环——首先检查条件,然后执行主体。
2. for 循环——首先初始化,然后,条件检查,执行主体,更新。
3. do-while - 首先,执行主体然后条件检查

循环

for 循环是一种重复控制结构,它允许我们编写一个执行特定次数的循环。该循环使我们能够在一行中一起执行 n 个步骤。 
语法:

for (initialization expr; test expr; update expr)
{
     // 循环体
     // 我们要执行的语句
}

例子:

for(int i = 0; i < n; i++){
}

在 for 循环中,使用循环变量来控制循环。首先,将此循环变量初始化为某个值,然后检查此变量是否小于或大于计数器值。如果语句为真,则执行循环体并更新循环变量。重复步骤直到退出条件到来。

  • 初始化表达式:在这个表达式中,我们必须将循环计数器初始化为某个值。例如:int i=1;
  • 测试表达式:在这个表达式中,我们必须测试条件。如果条件评估为真,那么我们将执行循环体并转到更新表达式,否则我们将退出 for 循环。例如:i <= 10;
  • 更新表达式:执行循环体后,此表达式将循环变量递增/递减某个值。例如:i++;

循环等效流程图:

例子:

用于说明 for 循环的 C 程序

#include <stdio.h>
int main()
{
	int i=0;
	for (i = 1; i <= 10; i++)
	{
		printf( "Hello World\n");
	}
	return 0;
}

用于说明 for 循环的 C++ 程序

#include <iostream>
using namespace std;
int main()
{
	for (int i = 1; i <= 10; i++)
	{
		cout << "Hello World\n";
	}
	return 0;
}

输出:

Hello World 
Hello World 
Hello World 
Hello World 
Hello 
World 
Hello World 
Hello World 
Hello World 
Hello World

While 循环

在研究for 循环时,我们已经看到迭代次数是预先知道的,即循环体需要执行的次数是我们已知的。while 循环用于我们事先 不知道循环的确切迭代次数的情况。根据测试条件终止循环执行。语法:我们已经说过,一个循环主要由三个语句组成——初始化表达式、测试表达式和更新表达式。三个循环的语法 - For、while 和 do while 主要区别在于这三个语句的位置。 ****\

初始化表达式;
while ( test_expression )
{
   // 语句 update_expression;
}

流程图:

例子:

C 程序来说明 while 循环

#include <stdio.h>
int main()
{
	// 初始化表达式
	int i = 1;
	// 测试表达式
	while (i < 6)
	{
		printf( "Hello World\n");
		// 更新表达式
		i++;
	}
	return 0;
}

C++程序来说明while循环

#include <iostream>
using namespace std;
int main()
{
	// 初始化表达式
	int i = 1;
	// 测试表达式
	while (i < 6)
	{
		cout << "Hello World\n";
		// 更新表达式
		i++;
	}
	return 0;
}

输出:

Hello World
Hello World
Hello World
Hello World
Hello World

do-while 循环

在 do-while 循环中,循环执行也会根据测试条件终止。do-while 循环和while 循环之间的主要区别在于do-while 循环中的条件在循环体的末尾进行测试,即do-while 循环是退出控制的,而其他两个循环是入口控制的循环。 
注意:在 do-while 循环中,无论测试条件如何,循环体都将至少执行一次。语法:

initialization expression;
do
{
   // 陈述
   update_expression;
} while (test_expression);

注意:注意循环末尾的半冒号(“;”)。

流程图:

例子:

用于说明 do-while 循环的 C 程序

#include <stdio.h>
int main()
{
	int i = 2; // 初始化表达式
	do
	{
		// 循环体
		printf( "Hello World\n");
		// 更新表达式
		i++;
	} while (i < 1); // 测试表达式
	return 0;
}

用于说明 do-while 循环的 C++ 程序

#include <iostream>
using namespace std;
int main()
{
	int i = 2; // 初始化表达式
	do
	{
		// 循环体
		cout << "Hello World\n";
		// 更新表达式
		i++;
	} while (i < 1); // 测试表达式
	return 0;
}

输出:

Hello World

在上述程序中,测试条件 (i<1) 的计算结果为假。但是,由于循环是一个退出 - 控制循环体将执行一次。

以上就是C及C++ 中的循环示例详解的详细内容,更多关于C C++ 循环的资料请关注我们其它相关文章!

(0)

相关推荐

  • C++如何将二叉搜索树转换成双向循环链表(双指针或数组)

    目录 二叉搜索树转换成双向循环链表 二叉搜索树与双向链表(C++中等区) 解题思路 代码展示 二叉搜索树转换成双向循环链表 本文解法基于性质:二叉搜索树的中序遍历为 递增序列 . 将二叉搜索树 转换成一个 “排序的循环双向链表”,其中包含三个要素: 1.排序链表:节点应从小到大排序,因此应使用 中序遍历 2.“从小到大”访问树的节点.双向链表:在构建相邻节点的引用关系时,设前驱节点 pre 和当前节点 cur , 不仅应构建 pre.right= cur,也应构建 cur.left = pre

  • C++11的for循环的新用法(推荐)

    字符串 string str = "this is a string"; for(auto ch : str) cout << ch << endl; 等价于 for(int i = 0; i < str.size(); i++) cout << str[i] << endl; vector vector<int> v = {1, 2, 3, 4, 5}; for(auto i : v) cout << i

  • C++ 双向循环链表类模版实例详解

    目录 1.插入某个节点流程 2.构造函数修改 3.重新实现append和prepend函数 4.修改迭代器类 5.LinkedList.h代码如下 6.测试运行 总结 在上章C++图解单向链表类模板和iterator迭代器类模版详解 我们学习了单链表,所以本章来学习双向循环链表 我们在上个文章代码上进行修改, 由于双向循环链表在我们之前学的单链表上相对于较为复杂,所以需要注意的细节如下所示. 1.插入某个节点流程 如下图所示: 对应代码如下所示: /*插入一个新的节点*/ bool insert

  • C/C++如何实现循环左移,循环右移

    目录 实现对一个无符号数的循环左移和循环右移 循环移位直接可用的函数(循环右移.循环左移) 整体代码 本文的小技巧 注意的地方 字符串循环左|右移实现(C/C++) 字符串循环右移K位 字符串循环左移K位 循环左右移结果相同条件 实现对一个无符号数的循环左移和循环右移 循环移位直接可用的函数(循环右移.循环左移) //val表示需要移位的数 n表示移位位数 //字节数乘以8代表一共多少位 //向右循环移n位的结果:假设数据一共size位,向左移size-n位,再与原数右移n位进行或操作的结果 /

  • C++实现约瑟夫环的循环单链表

    约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.. 从编号为 k 的人开始报数,数到 m 的那个人出圈:他的下一个人又从 1 开始报数,数到 m 的那个人又出圈:依此规律重复下去,直到剩余最后一个胜利者.. 例如:有10个人围成一圈进行此游戏,每个人编号为 1-10 .. 若规定数到 3 的人出圈.. 则游戏过程如下.. (1)开始报数,第一个数到 3 的人为 3 号,3 号出圈.. 1, 2, [ 3 ], 4, 5, 6, 7

  • C++实现转置矩阵的循环

    目录 前言 一.思路分析 二.代码实现 1.转置矩阵函数 2.调用函数实现转置矩阵 总结 前言 矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩阵的转置. 一.思路分析 转置矩阵与原矩阵的区别在于行列交换,我们可以构建一个二维数组完成对原矩阵的存储,我们只需将每个元素与其行列相反的位置处的元素进行交换,就可完成对矩阵的转置. 二.代码实现 1.转置矩阵函数 我们首先编写一个函数,完成对矩阵的转置. 代码如下(示例): /* Alkaid#3529 */ // 转职矩

  • C及C++ 基础循环示例详解

    目录 正文 手动(通用)方法(迭代方法) 使用循环 循环 While 循环 do-while 循环 正文 在编程中,有时需要多次执行某些操作或(例如)n次.当我们需要重复执行一个语句块时,就会使用循环. 例如:假设我们要打印 10 次“Hello World”.这可以通过两种方式完成,如下所示: 手动(通用)方法(迭代方法) 我们必须手动为 C 编写 print(),为 C++ 语句编写 cout 10 次.假设你必须写 20 次(写 20 条语句肯定会花费更多时间)现在想象你必须写 100 次

  • vue实例成员 插值表达式 过滤器基础教程示例详解

    目录 一. 什么是Vue 二.为什么学Vue 三.如何使用Vue 下载安装? 插值表达式 四.vue特点 1.虚拟DOM 2.数据的双向绑定 3.单页面应用 4.数据驱动 五.Vue实例 六.实例成员 - 挂载点 | el - 自定义插值表达式括号| delimiters - 数据 | data - 过滤器 | filters - 方法 | methods - js对象(即字典)补充 - 插值表达式转义 | delimters - 计算属性 | computed - 监听属性 | watch 一

  • Go语言基础反射示例详解

    目录 概述 语法 一.基本操作 二.修改目标对象 三.动态调用方法 总结 示例 概述 在程序运行期对程序动态的进行访问和修改 reflect godoc: https://golang.org/pkg/reflect/ reflect包有两个数据类型: Type:数据类型 [reflect.TypeOf():是获取Type的方法] Value:值的类型[reflect.ValueOf():是获取Value的方法] 语法 一.基本操作 获取变量类型 func TypeOf(i interface{

  • Kotlin编程基础数据类型示例详解

    目录 本文总览 1.数值类型 2.布尔型 3.字符串 3.1 字符串字面值 3.2 字符串模板 4.数组 4.1 普通数组 4.2 原⽣类型数组 5.类型检测和类型转换 5.1 智能转换 5.2 is 与 !is 操作符 5.3 转换操作符: as 与 as? 总结 本文总览 上一篇学习了Kotlin基础语法知识,本篇开始会深入探讨一下Kotlin各个基础语法点.首先来熟悉Kotlin的数据类型和类型转换版块. 1.数值类型 在Kotlin中提供了数值类型: 整数类型:Byte,Short,In

  • Go语言基础for循环语句的用法及示例详解

    目录 概述 语法 注意 示例一  死循环,读取文件 示例二  打印乘法表 示例三  遍历字符串,数组,map 概述 for循环是一个循环控制结构,可以执行指定次数的循环 语法 第一种 for {} //无线循环 第二种 for 条件语句{} 第三种 for 初始语句; 条件语句; 迭代后语句 {} 第四种 for key,value:=range 表达式/变量{} 注意 省略初始条件,相当于while循环体必须用 { } 括起来初始化语句和后置语句是可选的如果只剩下条件表达式了,那么那两个分号也

  • Go语言基础切片的创建及初始化示例详解

    目录 概述 语法 一.创建和初始化切片 make 字面量 二.使用切片 赋值和切片 切片增长 遍历切片 总结 总示例 示例一  两个slice是否相等 示例二 两个数字是否包含 概述 切片是一种动态数组 按需自动改变大小 与数组相比,切片的长度可以在运行时修改 语法 一.创建和初始化切片 make 使用内置函数make()创建切片: var slice []type = make([]type, len, cap) //简写: slice := make([]type, len, cap) 字面

  • JavaScript实现基础排序算法的示例详解

    目录 前言 正文 1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 前言 文本来总结常见的排序算法,通过 JvavScript  来实现 正文 1.冒泡排序 算法思想:比较相邻两个元素的大小,如果第一个比第二个大,就交换它们.从头遍历到尾部,当一轮遍历完后,数组最后一个元素是最大的.除去最后一个元素,对剩下的元素重复执行上面的流程,每次找出剩余元素中最大的,遍历完后,数组是升序的 算法分析:总共需要进行length * (length - 1) / 2 次比较,所以时间复杂度为O(n^2)

  • Kotlin协程的基础与使用示例详解

    目录 一.协程概述 1.概念 2.特点 3.原理 1)续体传递 2)状态机 二.协程基础 1.协程的上下文 2.协程的作用域 3.协程调度器 4.协程的启动模式 5.协程的生命周期 1)协程状态的转换 2)状态标识的变化 三.协程使用 1.协程的启动 1)runBlocking方法 2)launch方法 3)async方法 4)suspend关键字 5)withContext方法 6)suspend方法 2.协程间通信 1)Channel 2)Channel的容量 3)produce方法与act

  • Go语言基础单元测试与性能测试示例详解

    目录 概述 单元测试 代码说明如下 问题 注意 性能测试 基本使用 自定义测试时间 概述 测试不是Go语言独有的,其实在很多语言都有测试,例如:Go.Java.Python- 要想成为一名合格的大牛,这是程序员必须具备的一项技能,特别是一些大公司,这是加分的一项,主要有如下优点: 代码可以随时测试,保证代码不会产生错误 写出更加高效的代码 testing文档 Testing_flags文档 单元测试 格式:func TestXXX(t *testing.T) //add.go package c

  • Go语言基础Json序列化反序列化及文件读写示例详解

    目录 概述 JSON序列化 结构体转JSON map转JSON 切片转JSON JSON反序列化 JSON转map JSON转结构体 JSON转切片 写JSON文件 map写入JSON文件 切片写入JSON文件 结构体写入JSON文件 读JSON文件 解码JSON文件为map 解码JSON文件为切片 解码JSON文件为结构体 示例 概述 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的.键值对的数据交换格式.结构由大括号'{}',中括

随机推荐