八、C++中的循环 for while do...while及控制流语句

(1) for、while、do...while循环

简单来讲,循环就是多次执行同样的代码

例,如何输出重复内容多次:①代码复制多次;②写个函数调用多次;③写循环重复执行代码5次

1、for循环

for循环括号中有三部分,每部分用“;”分隔开。

        第一部分是变量声明,一般在此处声明临时变量,通常为int i=0;i代表迭代器(iterator),实际上变量名与变量初值都无所谓。在for循环之前执行一次。

        第二部分是条件,满足条件时,一直执行for循环中的代码。布尔值,执行每一次循环前会检验。

        第三部分是下次for循环前会执行的代码。每次循环结束后执行的代码。

for循环下是循环体,即for循环中会重复执行代码(由条件决定是否多次执行,可能根本不执行)。

#include 
#include "Log.h"

int main() 
{
	for (int i = 0; i < 5; i++)
	{
		Log("Hello World!");
	}
			
	std::cin.get(); 
 }

首先执行for循环这一行,创造变量i,再检查条件是否为真。条件为真,跳进循环体,执行循环体代码,执行到}时,执行for()中的第三部分,即i++,i由0变1,然后再检查条件i<5?条件为真再执行循环体代码。直到i=4的一次循环最后i++变成了5,不满足条件然后退出循环。执行for循环下方的代码std::cin.get();

变量声明放在for前,然后空着第一部分也可以。第三部分放在循环体的最后结果也一样。for循环非常灵活。

#include 
#include "Log.h"

int main() 
{
    int i = 0;
    bool condition = true;
	for ( ; i < 5; )
	{
		Log("Hello World!");
        i++;
        if(!(i < 5))
            condition = false;
	}
			
	std::cin.get(); 
 }

for循环的三个部分中甚至可以调用函数。第二部分如果时true循环就变成了死循环。

2、while循环

while循环类似for循环,没有第一部分的声明和结尾第三部分的代码,只有第二部分的条件。

声明需要在while循环之前,循环末尾执行第三部分代码(循环后、下次循环前执行的代码)。

#include 
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
	}

	Log("-------分割线-------");

	int i = 0;//为while循环声明变量,for循环内定义的i作用域只在for循环内
	while (i < 5)
	{
		Log("Hello");
		i++;
	}
	std::cin.get();
}

什么时候使用while循环?什么时候使用for循环?主要取决于是否需要新变量。从经验上来讲,如果已经有用来检验的布尔值,选择while循环,不用每次循环都改变条件,循环前不用去声明变量(已通过布尔条件值进行了声明)。而在遍历数组的时候,数组大小确定时,选择for循环,因为每次循环都会产生新的变量,这个变量在访问数组的时候有用,访问数组元素时需要偏移量或者索引。

3、do...while循环

do {循环体 }while(条件);不太常用

do...while循环与while循环的区别:do...while循环至少会被执行一次

do...while循环即使条件为假,也会运行一下里面的代码,而不是想while循环一样跳过,运行到最后while的条件,发现为假,循环结束

#include 
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
	}

	Log("-------分割线-------");

	int i = 0;//为while循环声明变量,for循环内定义的i作用域只在for循环内
	while (i < 5)
	{
		Log("Hello");
		i++;
	}
	Log("-------分割线-------");
	do
	{
		Log("Hello");
		
	} while (i < 5);
	std::cin.get();
}

14

(2)控制流语句 continue、break、return

1、continue 只能用于循环内部;如果还能进行迭代的话,直接进入下一次迭代,否则就结束循环。

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		Log("Hello World!");
		continue;//此处continue不会影响整体循环
	}

	std::cin.get();
#include 
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i % 2 == 0)
			continue;//跳过偶数次迭代(i=0、2、4)
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();
}

 输出结果:

八、C++中的循环 for while do...while及控制流语句_第1张图片

只要运行到continue,就开始了下一次循环的迭代

2、break 主要用于循环,但也经常出现在switch语句中 功能:直接跳出循环

#include 
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i > 1)
			break;//i=2时遇到break,循环结束
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();

运行结果:

八、C++中的循环 for while do...while及控制流语句_第2张图片

 i=2时执行break语句,跳出循环。运行到break时循环就结束。

3、return 直接完全退出函数 函数需要返回值,当输入return上下文(context)自动返回

yoid可以直接用return。如果函数需要返回值,在输入return的时候就必须要提供值。

return是需要一个整数作为返回值的函数


#include 
#include "Log.h"

int main()
{
	for (int i = 0; i < 5; i++ )
	{
		if (i > 1)
			std::cin.get();//保持输出窗口常开
			return 1;
		Log("Hello World!");
		std::cout << i << std::endl;
	}

	std::cin.get();
}

结果:返回代码为1.

遇到return,自动退出当前函数并返回值,return不用像break和continue那样在循环内使用。return可以被写在任何地方。

控制流语句控制程序的运行,循环、控制流、条件语句本身就是逻辑编程的本质,是用来控制程序运行的工具。

15

你可能感兴趣的:(visual,studio,c++)