【C++】C++基础知识(四)---程序流程结构

C++基础知识(四)

  • 1. 顺序结构
  • 2. 选择结构
    • 2.1 if语句
    • 2.2 switch语句
    • 2.3 选择结构案例
  • 3. 循环结构
    • 3.1 循环语句
    • 3.2 循环结构案例
  • 4. 跳转语句

C++中支持的三种流程结构:顺序结构、选择结构、循环结构

  1. 顺序结构:程序按照顺序执行,不会发生跳转
  2. 选择结构:根据条件是否满足,有选择的执行相应的功能
  3. 循环结构:根据条件是否满足,循环多次执行某代码块

1. 顺序结构

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第1张图片

2. 选择结构

2.1 if语句

1. 单行if语句

  • 语法:

if (条件) {执行语句}

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第2张图片
  • 实例
#include 
using namespace std;

int main() {

	// 单行if语句
	// 1、输入考试分数
	int score = 0;
	cout << "请输入考试分数: " << endl;
	cin >> score;

	// 2、提示输入的分数
	cout << "输入的分数为: " << score << endl;

	// 3、判断
	if (score >= 600)
	{
		cout << "恭喜你考上了985大学!" << endl;
	}

	system("pause");
	return 0;
}

  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第3张图片

2. 多行if语句

  • 语法

if (条件) {执行语句1}
else {执行语句2}

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第4张图片
  • 实例
#include 
using namespace std;

int main() {

	// 多行if语句
	// 1、输入考试分数
	int score = 0;
	cout << "请输入考试分数: " << endl;
	cin >> score;

	// 2、提示输入的分数
	cout << "输入的分数为: " << score << endl;

	// 3、判断
	if (score >= 600)
	{
		cout << "恭喜你考上了985大学!" << endl;
	}
	else
	{
		cout << "希望你再接再厉!" << endl;
	
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第5张图片

3. 多条件if语句

  • 语法

if (条件1) {执行语句1}
else if (条件2) {执行语句2}
else if (条件3) {执行语句3}
else {执行语句4}

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第6张图片
  • 实例
#include 
using namespace std;

int main() {
	// 多条件if语句
	// 如果考试分数大于等于600分,恭喜你考上985大学!屏幕上输出;
	// 如果考试分数大于等于550分,恭喜你考上211大学!屏幕上输出;
	// 如果考试分数大于等于500分,恭喜你考上一本大学!屏幕上输出;
	// 如果考试分数大于等于400分,恭喜你考上二本大学!屏幕上输出;
	// 如果考试分数小于400分,很遗憾你未能考上本科大学,希望你再接再厉!屏幕上输出。
	
	// 1、输入考试分数
	int score = 0;
	cout << "请输入考试分数: " << endl;
	cin >> score;

	// 2、提示输入的分数
	cout << "输入的分数为: " << score << endl;

	// 3、判断
	if (score >= 600)
	{
		cout << "恭喜你考上了985大学!" << endl;
	}
	else if (score >= 550)
	{
		cout << "恭喜你考上211大学!" << endl;
	}
	else if (score >= 500)
	{
		cout << "恭喜你考上一本大学!" << endl;
	}
	else if (score >= 400)
	{
		cout << "恭喜你考上二本大学!" << endl;
	}
	else
	{
		cout << "很遗憾你未能考上本科大学,希望你再接再厉!" << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第7张图片

4. 嵌套if语句

  • 语法

if (条件1)
{
执行语句1;
if (条件2) {执行语句2}
else if (条件3) {执行语句3}
else {执行语句4}
}
else if (条件4) {执行语句5}
else if (条件5) {执行语句6}
else {执行语句7}

  • 流程图:

流程图与多条件if语句流程图类似

  • 实例
#include 
using namespace std;

int main() {

	// 嵌套if语句
/*
	案例:
	if score > 600 考入一本大学;
		if score > 700 能考入清华北大;
		if score > 650 能考入浙大上交复旦;
		if score > 600 能考入厦大中南;
	if score > 500 考入二本大学;
	if score > 400 考入三本大学;
	其他情况下,很遗憾未能考上本科大学!
*/

	// 1、输入考试分数
	int score = 0;
	cout << "请输入考试分数: " << endl;
	cin >> score;

	// 2、提示输入的分数
	cout << "输入的分数为: " << score << endl;

	// 3、判断
	if (score >= 600)
	{
		cout << "恭喜你考上了重本大学!" << endl;
		if (score >= 700)
		{
			cout << "可以选择清华北大" << endl;
		}
		else if (score >= 650)
		{
			cout << "可以选择浙大上交复旦" << endl;
		}
		else
		{
			cout << "可以选择厦大中南" << endl;
		}
	}
	else if (score >= 500)
	{
		cout << "恭喜你考上一本大学!" << endl;
	}
	else if (score >= 400)
	{
		cout << "恭喜你考上二本大学!" << endl;
	}
	else
	{
		cout << "很遗憾你未能考上本科大学,希望你再接再厉!" << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第8张图片

2.2 switch语句

  • 语法

switch(表达式)
{
case 结果1 : 执行语句;
break;
case 结果2 : 执行语句;
break;

case 结果n : 执行语句;
break;
default : 执行语句;
break;
}

  • 实例
#include 
using namespace std;

/*
case中如果没有break,语句将会一直往下执行。
if与switch的区别:
switch语句中表达式类型只能是整型和字符型,不可以是一个区间;但是其结构清晰,执行效率比较高。
*/

int main() {

	// 1、提示请输入电影评分
	cout << "请输入电影评分:" << endl;
	
	// 2、提示输入的数据大小
	int score = 0;
	cin >> score;
	cout << "您的电影评分为:" << score << endl;

	// 3、switch语句判断
	switch (score)
	{
	case 10:
	case 9:
		cout << "您对本电影的评价为经典之作!" << endl;
		break;
	case 8:
	case 7:
		cout << "您对本电影的评价为非常棒!" << endl;
		break;
	case 6:
	case 5:
		cout << "您对本电影的评价为一般!" << endl;
		break;
	default:
		cout << "您对本电影的评价为非常差!" << endl;
		break;
	}

	system("pause");
	return 0;
}

  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第9张图片
  • 注意:

1、case中如果没有break,语句将会一直往下执行。

2、if与switch的区别:
switch语句中表达式类型只能是整型和字符型,不可以是一个区间;但是其结构清晰,执行效率比较高。

2.3 选择结构案例

1. 三目运算符
通过三目运算符可以实现简单的判断。

  • 语法

表达式1(a > b) ? 表达式2(a) :表达式3(b)
返回的是一个变量
if a > b为真 则返回a;
if a > b为假 则返回b;

  • 实例
#include 
using namespace std;

int main() {

	// 1、输入数据
	int a = 0;
	int b = 0;
	int c = 0;
	cin >> a;
	cin >> b;

	// 2、提示输入的数据大小
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	// 3、判断
	c = a > b ? a : b;
	(a > b ? a : b)= 520;

	// 4、输出结果
	cout << "进行判断后a = " << a << endl;
	cout << "进行判断后b = " << b << endl;
	cout << "进行判断后c = " << c << endl;

	system("pause");
	return 0;
}

  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第10张图片

2. 求三个数中的最大值

  • 案例描述

A、B、C三个数比较大小(三个数互不相等时),求其中的最大值

  • 实现思路

—>if A>B
----------->if A>C,则A最大
----------->else,则C最大
—>else
----------->if B>C,则B最大
----------->else,则C最大

  • 实例
#include 
using namespace std;

int main() {

	// 1、输入数据
	int num1 = 0;
	int num2 = 0;
	int num3 = 0;
	cin >> num1;
	cin >> num2;
	cin >> num3;

	// 2、提示输入的数据大小
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;
	cout << "num3 = " << num3 << endl;

	// 3、判断
	if (num1 > num2)
	{
		if (num1 > num3)
			cout << "最大的数为num1 = " << num1 << endl;
		else
			cout << "最大的数为num3 = " << num3 << endl;
	}
	else
		if (num2 > num3)
			cout << "最大的数为num2 = " << num2 << endl;
		else
			cout << "最大的数为num3 = " << num3 << endl;

	system("pause");
	return 0;
}

  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第11张图片

3. 循环结构

3.1 循环语句

1. while语句

满足循环条件,执行循环语句

  • 语法

while (表达式)
{循环语句}

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第12张图片

  • 实例

#include 
using namespace std;

int main() {

	int num = 0;
	while (num < 10) 
	{
		cout << num << endl;
		num++;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第13张图片

注意:在执行循环语句的时候,必须设置跳出循环的出口,否则会出现死循环。

2. do while语句

  • 语法

do {循环语句}
while (循环条件)

  • 流程图
    【C++】C++基础知识(四)---程序流程结构_第14张图片

  • 实例

#include 
using namespace std;

int main() {

	int num = 0;
	do 
	{
		cout << num << endl;
		num++;
	} while (num < 10);

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第15张图片

while与do while的区别:

while是先判断条件如果条件满足则执行语句;
do while是先执行一次语句再进行判断条件是否满足,若满足继续执行语句。

3. for语句

  • 语法

for(起始表达式(0);条件表达式(1);末尾循环(3))
{循环语句(2);}
在使用for循环语句时,程序执行的顺序如编号0-3所示

for循环结构比较清晰,比较常用

  • 实例
#include 
using namespace std;

int main() {

	for (int i = 0; i < 10; i++) 
	{
		cout << i << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第16张图片

4. 循环嵌套

  • 任务描述

通过循环语句在屏幕上输出:

* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
  • 代码实现
#include 
using namespace std;

int main() {

	for (int i = 0; i < 10; i++) 
	{
		for (int j = 0; j < 10; j++)
		{
			cout << "* ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第17张图片

3.2 循环结构案例

1. 猜数字while

  • 案例描述

基本功能:
随机生成一个1~100之间的数字,用户去猜测这个数字是多少,猜测不对时会对玩家进行提醒:猜测过大!猜测过小!恭喜你猜对了!猜错了会继续让你猜测,猜对了游戏则会退出!
附加功能:
玩家猜测的机会不是无限的,仅仅只有6次机会,如果6次也还未猜对,也会退出游戏,并提醒玩家,很遗憾,您未能通关!

  • 代码实现
#include 
using namespace std;
#include  //ctime为系统时间头文件

int main() {
	//添加一个随机数的种子,作用利用当前系统时间生成随机数,防止每次随机数都一样
	srand((unsigned int)time(NULL));
	//1、生成一个随机数
	int rand_number = rand() % 100 + 1;
	//cout << "随机生成的数为:" << rand_number << endl;

	int num = 0; //输入变量
	int number = 1; //计数变量
	while (1)
	{
		if (number <= 6)
		{
			//2、用户输入猜测数字
			cin >> num;
			cout << "您猜的数字为:" << num << endl;
			number++;

			//3、进行判断
			if (num > rand_number)
			{
				cout << "您猜的数字过大!" << endl;
			}
			else if (num < rand_number)
			{
				cout << "您猜的数字过小!" << endl;
			}
			else
			{
				cout << "恭喜你猜对了!游戏结束!" << endl;
				break; //在循环中,可以利用break这个关键字退出当前循环
			}
		}
		else
		{
			cout << "您猜的次数已达6次还未猜对,很遗憾,未能通关!望再接再厉!" << endl;
			break;
		}
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第18张图片

2. 水仙花数do while

  • 案例描述

水仙花数:
一个三位数,如果(个位)^3 + (十位)^3 + (百位)^3 = 三位数本身,这个三位数则为一个水仙花数。请在屏幕中输出所有的水仙花数。

  • 代码实现
#include 
using namespace std;

int main() {

	//1、首先获取所有的三位数
	int num = 100;
	do
	{
		//2、找到所有的水仙花数
		int a = 0; 
		int b = 0;
		int c = 0;
		a = num % 10;  //获取个位---对10取模即可
		b = num / 10 % 10;  //获取十位---先除10再对10取模即可
		c = num / 100; //获取百位---除100即可
		if (a * a * a + b * b * b + c * c * c == num) 
		{
			//3、将所有的水仙花数输出
			cout << num << endl;
		}
		num++;
	} while (num < 1000);

	system("pause");
	return 0;
}

其中:
x / 100 = 百位数
x / 10 % 10 = 十位数
x % 10 = 个位数

  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第19张图片

3. 敲桌子for

  • 案例描述

参加聚会时,玩敲桌子游戏,从1开始数数,最大数到100结束,如果数到的数中有7或者是7的倍数时,就要敲一下桌子,不能说出来,否则将会受到惩罚。

  • 代码实现
#include 
using namespace std;

int main() {

	for (int i = 1; i < 101; i++)
	{
		if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) 
		{
			cout << "敲桌子!i = " << i << endl;
		}
		else
		{
			cout << i << endl;
		}
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第20张图片

4. 实现乘法口诀表的打印循环嵌套案例

  • 案例描述

实现下面乘法口诀表的打印
【C++】C++基础知识(四)---程序流程结构_第21张图片

  • 思路

—>打印所有的行数和列数
—>打印范围(列数<=行数)
—>打印列数 * 行数 = 计算结果

  • 代码实现
#include 
using namespace std;

int main() {

	for (int i = 1; i < 10; i++) //行数
	{
		//cout << i << endl;
		for (int j = 1; j <= i; j++) //列数
		{
			cout << j << "*" << i  << "=" << j * i << "   ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第22张图片

4. 跳转语句

1. break语句

  • 作用

用于跳出选择结构或循环结构

  • 使用场合

1、出现在switch条件语句中,作用是终止case跳出switch语句
2、出现在循环语句中,作用是跳出当前的循环语句
3、出现在嵌套循环语句中,作用是跳出最近的内层循环语句

  • 实例

1、break出现在switch语句中

#include 
using namespace std;

int main() {
	//1、出现在switch语句中
	int select = 0;
	cout << "请从以下几种出行方案中选择一种" << endl;
	cout << "1:乘飞机出行" << endl;
	cout << "2:乘高铁出行" << endl;
	cout << "3:乘汽车出行" << endl;

	cin >> select;
	switch (select)
	{
	case 1:
		cout << "您选择的出行方式为:乘飞机出行" << endl;
		break;
	case 2:
		cout << "您选择的出行方式为:乘高铁出行" << endl;
		break;
	case 3:
		cout << "您选择的出行方式为:乘汽车出行" << endl;
		break;
	default:
		cout << "您选择的选项已经超出了选项范围!" << endl;
		break;
	}
	
	system("pause");
	return 0;
}

2、break出现在switch语句中

#include 
using namespace std;

int main() {

	//2、出现在循环语句中
	for (int i = 0; i < 10; i++)
	{
		
		if (i == 5) 
		{
			break;
		}
		cout << i << endl;
	}
	
	system("pause");
	return 0;
}

3、break出现在嵌套循环语句中

#include 
using namespace std;

int main() {

	//3、出现在循环嵌套语句中
	for (int i = 0; i < 10; i++) 
	{
		for (int j = 0; j < 10; j++) 
		{
			if (j == 5)
			{
				break;
			}
			cout << "* ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果

1、
【C++】C++基础知识(四)---程序流程结构_第23张图片

2、
【C++】C++基础知识(四)---程序流程结构_第24张图片

3、
【C++】C++基础知识(四)---程序流程结构_第25张图片

2. goto语句

  • 作用

若标记的名称存在,执行到goto语句时,会跳转到标记的位置
goto语句不提倡在代码中频繁使用

  • 实例
#include 
using namespace std;

int main() {

	cout << "111xxx" << endl;
	cout << "222xxx" << endl;
	goto FLAG;
	cout << "333xxx" << endl;
	FLAG:
	cout << "444xxx" << endl;
	cout << "555xxx" << endl;

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第26张图片

3. continue语句

  • 作用

在循环语句中,跳出本次循环中余下尚未执行的语句,进入下一次循环

  • 实例
#include 
using namespace std;

int main() {

	for (int i = 0; i <= 10; i++) 
	{
		if (i % 2 == 0) //若能被2整除,则不输出,即不输出偶数 
		{
			continue;
		}
		cout << i << endl;
	}

	system("pause");
	return 0;
}
  • 输出结果
    【C++】C++基础知识(四)---程序流程结构_第27张图片

你可能感兴趣的:(C++,c++,开发语言)