C++阶段01笔记04【程序流程结构(选择结构、循环结构、跳转语句)】

C++| 匠心之作 从0到1入门学编程【视频+课件+笔记+源码】

目录

4 程序流程结构

4.1 选择结构

4.1.1 if语句

——①单行格式if语句

——②多行格式if语句

——③多条件的if语句

——④嵌套if语句

4.1.2 三目运算符

4.1.3 switch语句

扫描二维码关注公众号,回复: 13097022 查看本文章

4.2 循环结构

4.2.1 while循环语句

——while循环 练习案例:猜数字

4.2.2 do...while循环语句

——do...while循环 练习案例:水仙花数

4.2.3 for循环语句

——for循环 练习案例:敲桌子

4.2.4 嵌套循环

——for循环嵌套 练习案例:乘法口诀表

4.3 跳转语句

4.3.1 break语句

——示例

4.3.2 continue语句

——示例

4.3.3 goto语句

——示例


4 程序流程结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转。

  • 选择结构:依据条件是否满足,有选择的执行相应功能。

  • 循环结构:依据条件是否满足,循环多次执行某段代码。

4.1 选择结构

4.1.1 if语句

作用:执行满足条件的语句。

if语句的三种形式

  1. 单行格式if语句

  2. 多行格式if语句

  3. 多条件的if语句

——①单行格式if语句

单行格式if语句:if(条件){ 条件满足执行的语句 }

示例:

#include <iostream>
using namespace std;

int main()
{
	//选择结构-单行if语句
	//用户输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印(输出)

	//1、用户输入分数
	int score = 0;
	cout << "请输入一个分数:" << endl;
	cin >> score;

	//2、打印用户输入的分数
	cout << "您输入的分数为: " << score << endl;

	//3、判断分数是否大于600,如果大于600,则输出...
	//if语句
	//注意事项,在if判断语句后面,不要加分号
	if (score > 600)
	{
		cout << "我考上了一本大学!!!" << endl;
	}

	return 0;
}

注意:if条件表达式后不要加分号。

——②多行格式if语句

多行格式if语句:if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };

示例:

#include <iostream>
using namespace std;

int main()
{
	//选择结构-多行if语句
	//输入考试分数,如果分数大于600,视为考上一本大学,在屏幕上输出
	//如果没考上一本大学,打印"未考上一本大学"

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

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

	//3、判断如果大于600,打印“考上一本”,否则打印"未考上一本"
	if (score > 600) //大于600分执行下面大括号中的内容
	{
		cout << "我考上了一本大学!" << endl;
	}
	else//不大于600分,执行else后大括号中的内容
	{
		cout << "我未考上一本大学!" << endl;
	}

	system("pause");

	return 0;
}

——③多条件的if语句

多条件的if语句:if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}

示例:

 

#include <iostream>
using namespace std;

int main()
{
	//选择结构-多行if语句
	int score = 0;

	cout << "请输入考试分数:" << endl;

	cin >> score;

	if (score > 600)
	{
		cout << "我考上了一本大学!" << endl;
	}
	else if (score > 500)
	{
		cout << "我考上了二本大学!" << endl;
	}
	else if (score > 400)
	{
		cout << "我考上了三本大学!" << endl;
	}
	else
	{
		cout << "我未考上本科!" << endl;
	}

	system("pause");

	return 0;
}

——④嵌套if语句

嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断。

案例需求:

  • 提示用户输入一个高考考试分数,根据分数做如下判断

  • 分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科;

  • 在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。

示例:

 

#include <iostream>
using namespace std;

int main()
{
    int score = 0;
    cout << "请输入考试分数:" << endl;
    cin >> score;

    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;
}

练习案例: 三只小猪称体重

有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重?

 

#include <iostream>
using namespace std;

int main()
{
    //三个小猪称体重,判断哪只小猪最重

    //1、创建三只小猪的体重变量
    int A = 0;
    int B = 0;
    int C = 0;

    //2、让用户输入三只小猪的体重
    cout << "\n请输入小猪A的体重:" << endl;
    cin >> A;

    cout << "\n请输入小猪B的体重:" << endl;
    cin >> B;

    cout << "\n请输入小猪C的体重:" << endl;
    cin >> C;

    cout << "\n小猪A的体重为:" << A << endl;
    cout << "小猪B的体重为:" << B << endl;
    cout << "小猪C的体重为:" << C << endl;

    //3、判断三只哪只小猪最重
    //先判断A和B重量
    if (A > B) //A比B重
    {
        if (A > C)
        {
            cout << "\n小猪A最重!\n" << endl;
        }
        else
        {
            cout << "\n小猪C最重!\n" << endl;
        }
    }
    else //B比A重
    {
        if (B > C)
        {
            cout << "\n小猪B最重!\n" << endl;
        }
        else
        {
            cout << "\n小猪C最重!\n" << endl;
        }
    }

    system("pause");

    return 0;
}

4.1.2 三目运算符

作用: 通过三目运算符实现简单的判断。

语法:表达式1 ? 表达式2 :表达式3

解释:

如果表达式1的值为真,执行表达式2,并返回表达式2的结果;

如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

示例:

#include <iostream>
using namespace std;

int main()
{
	//三目运算符
	int a = 10;
	int b = 20;
	int c = 0;

	c = a > b ? a : b;
	cout << "c = " << c << endl; //c = 20
	c = (a > b ? a : b);
	cout << "c = " << c << endl; //c = 20

	//C++中三目运算符返回的是变量,可以继续赋值

	(a > b ? a : b) = 100;

	cout << "a = " << a << endl; //a = 10
	cout << "b = " << b << endl; //b = 100
	cout << "c = " << c << endl; //c = 20

	system("pause");

	return 0;
}

总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰。

4.1.3 switch语句

作用:执行多条件分支语句。

语法:

switch (表达式) //【switch语句中表达式类型只能是整型或者字符型

{

    case 结果1: 执行语句;break;

    case 结果2: 执行语句;break;

    ...

    default: 执行语句;break;

}

示例:

#include <iostream>
using namespace std;

int main() //switch语句
{
	//请给电影进行评分
	// 10 ~ 9   经典
	// 8 ~ 7   非常好
	// 6 ~ 5   一般
	// 5分以下 烂片

	//1、提示用户给电影评分
	cout << "请给电影打分:" << endl;

	//2、用户开始进行打分
	int score = 0;
	cin >> score;
	cout << "您打的分数为:" << score << endl;

	//3、根据用户输入的分数来提示用户最后的结果
	switch (score)
	{
	case 10:
		// cout << "您认为是经典电影!" << endl;
		// break; //退出当前分支
	case 9:
		cout << "您认为是经典电影!" << endl;
		break; //退出当前分支
	case 8:
		// cout << "您认为电影非常好!" << endl;
		// break;
	case 7:
		cout << "您认为电影非常好!" << endl;
		break;
	case 6:
	case 5:
		cout << "您认为电影一般!" << endl;
		break;
	default:
		cout << "您认为是烂片!" << endl;
		break;
	}

	//if和switch区别?
	//switch缺点:判断时候只能是整型或者字符型,不可以是一个区间!
	//switch优点:结构清晰,执行效率高!

	system("pause");

	return 0;
}

注意1:switch语句中表达式类型只能是整型或者字符型

注意2:case里如果没有break,那么程序会一直向下执行。

总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间。

4.2 循环结构

4.2.1 while循环语句

作用:满足循环条件,执行循环语句

语法:while(循环条件){ 循环语句 }

解释:只要循环条件的结果为真,就执行循环语句。

示例:

#include <iostream>
using namespace std;

int main()
{
	//while循环
	//在屏幕上打印 0 ~ 9 这10个数字
	int num = 0;
	//while()中填入循环条件
	//注意事项:在写循环时,一定要避免死循环的出现。while (1)死循环
	while (num < 10)
	{ // 循环代码
		cout << "num = " << num << endl;
		num++;
	}
	system("pause");
	return 0;
}

注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环。

——while循环 练习案例:猜数字

while循环练习案例:猜数字

案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。

#include <ctime> // time系统时间头文件

//添加随机数种子,作用:利用当前系统时间生成随机数,防止每次随机数都是一样。

srand((unsigned int)time(NULL));

#include <iostream>
#include <ctime> // time系统时间头文件
using namespace std;

int main()
{
	//添加随机数种子,作用:利用当前系统时间生成随机数,防止每次随机数都是一样。
	srand((unsigned int)time(NULL));

	//1、系统生成随机数【rand() % 100:生成0~99的随机数】
	int num = rand() % 100 + 1; //rand()%100+1 生成 0+1 ~ 99+1 的随机数
	cout << "系统生成随机数(0~99):" << num << endl;

	//2、玩家进行猜数
	int val = 0; //玩家输入数据

	while (1) //死循环
	{
		cin >> val;

		//3、判断玩家的猜测
		//猜错:提示猜的结果 过大或过小,重新返回第二步
		if (val > num)
		{
			cout << "猜测过大!\n"
				 << endl;
		}
		else if (val < num)
		{
			cout << "猜测过小!\n"
				 << endl;
		}
		else
		{
			cout << "猜测正确!\n"
				 << endl;
			//猜对:退出游戏
			break; //break, 可以利用该关键字退出当前循环。
		}
	}

	system("pause");

	return 0;
}

4.2.2 do...while循环语句

作用: 满足循环条件,执行循环语句。

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

注意:与while的区别在于do...while会先执行一次循环语句,再判断循环条件。

示例:

#include <iostream>
using namespace std;

int main()
{
	//do...while循环语句
	//在屏幕中输出0~9这10个数字
	int num = 0;
	do
	{
		cout << num << endl;
		num++;
	} while (num < 10);

	num = 0;
	do
	{
		cout << num << endl;
		num++;
	} while (num); // 死循环!!!

	num = 0;
	//while (num < 10 ) // 输出0~9
	while (num) //不执行任何代码
	{
		cout << num << endl;
		num++;
	}

	//do...while和while循环区别在于do...while会先执行一次循环语句

	system("pause");

	return 0;
}

总结:与while循环区别在于,do...while先执行一次循环语句,再判断循环条件。

——do...while循环 练习案例:水仙花数

练习案例:水仙花数

案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。

例如:1^3 + 5^3+ 3^3 = 153

请利用do...while语句,求出所有3位数中的水仙花数。

#include <iostream>
using namespace std;

int main()
{
	//1、先打印所有的三位数
	int num = 100;

	do
	{
		//2、从所有的三位数字中找到水仙花数
		int a = 0; //个位
		int b = 0; //十位
		int c = 0; //百位

		a = num % 10;	   //获取数字的个位
		b = num / 10 % 10; //获取数字的十位
		c = num / 100;	   //获取数字的百位

		if (a * a * a + b * b * b + c * c * c == num) //如果是水仙花数,才打印
		{
			cout << num << endl;
		}
		num++;

	} while (num < 1000);

	system("pause");

	return 0;
}

4.2.3 for循环语句

作用: 满足循环条件,执行循环语句。

语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

示例:

#include <iostream>
using namespace std;

int main()
{
	//for循环
	//打印数字0~9
	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}

	//同义拆分
	int i = 0;
	for (;;)
	{
		if (i >= 10)
		{
			break;
		}
		cout << i << endl;
		i++;
	}

	system("pause");

	return 0;
}

详解:

注意:for循环中的表达式,要用分号进行分隔。

总结:while、do...while、for都是开发中常用的循环语句,for循环结构比较清晰,比较常用。

——for循环 练习案例:敲桌子

练习案例:敲桌子

案例描述:从1开始数到数字100, 如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

 

#include <iostream>
using namespace std;

int main()
{
	//1、先输出1~100数字
	for (int i = 1; i <= 100; i++)
	{
		//2、从100个数中找到特殊的数字,打印“敲桌子!”
		//如果是7的倍数、个位是7、十位是7,打印“敲桌子!”
		if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) //如果是特殊数字,打印“敲桌子!”
		{
			cout << "敲桌子!" << endl;
		}
		else //如果不是特殊数字,打印数字
		{
			cout << i << endl;
		}
	}

	system("pause");

	return 0;
}

4.2.4 嵌套循环

作用: 在循环体中再嵌套一层循环,解决一些实际问题。

例如我们想在屏幕中打印如下图片,就需要利用嵌套循环。

 

#include <iostream>
using namespace std;

int main()
{
	//利用嵌套循环实现星图
	//外层循环执行1次,内层循环执行1轮(1周)
	for (int i = 0; i < 10; i++) //外层循环:打印一行星图
	{
		for (int j = 0; j < 10; j++) //内层循环:打印一行*
		{
			cout << "*"
				 << " "; //*加空格
		}
		cout << endl; //换行
	}
	return 0;
}

——for循环嵌套 练习案例:乘法口诀表

练习案例:乘法口诀表

案例描述:利用嵌套循环,实现九九乘法表。

#include <iostream>
using namespace std;

int main()
{
	//乘法口诀表
	for (int i = 1; i <= 9; i++) //打印行数
	{
		// cout << i << endl;
		for (int j = 1; j <= i; j++) //打印列数
		{
			cout << j << "*" << i << "=" << i * j << "  ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

4.3 跳转语句

4.3.1 break语句

作用: 用于跳出选择结构或者循环结构

break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch。

  • 出现在循环语句中,作用是跳出当前的循环语句。

  • 出现在嵌套循环中,跳出最近的内层循环语句。

——示例

#include <iostream>
using namespace std;

int main() //break的使用时机
{
	//1、在switch语句中使用break
	cout << "请选择您挑战副本的难度:" << endl;
	cout << "1、普通!" << endl;
	cout << "2、中等!" << endl;
	cout << "3、困难!" << endl;
	int num = 0; //创建选择结果的变量
	cin >> num;	 //等待用户输入
	switch (num)
	{
	case 1:
		cout << "您选择的是普通难度!" << endl;
		break; //退出switch语句
	case 2:
		cout << "您选择的是中等难度!" << endl;
		break;
	case 3:
		cout << "您选择的是困难难度!" << endl;
		break;
	}

	//2、在循环语句中用break
	for (int i = 0; i < 10; i++)
	{
		if (i == 5) //如果i等于5,退出循环,不再打印
		{
			break; // 跳出循环语句
		}
		cout << i << endl;
	}

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

	return 0;
}

4.3.2 continue语句

作用:循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。

——示例

#include <iostream>
using namespace std;

int main()
{
	//continue语句
	for (int i = 0; i < 100; i++)
	{
		if (i % 2 == 0) //奇数输出,偶数不输出,0 2 4 6 8 10
		{
			continue; //作用:可以筛选条件,执行到此就不再向下执行;执行下一次循环
					  //break会退出循环,而continue不会
		}
		cout << i << endl;
	}
	system("pause");
	return 0;
}

注意:continue并没有使整个循环终止,而break会跳出循环。

4.3.3 goto语句

作用:可以无条件跳转语句。

语法: goto 标记; 如: goto FLAG;【一般用纯大写单词!】

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。

——示例

  

#include <iostream>
using namespace std;

int main() //goto语句
{
	cout << "1、xxx" << endl;
	cout << "2、xxx" << endl;

	goto FLAG;

	cout << "3、xxx" << endl;
	cout << "4、xxx" << endl;

FLAG:

	cout << "5、xxx" << endl;

	system("pause");

	return 0;
}

注意:在程序中不建议使用goto语句,以免造成程序流程混乱。

猜你喜欢

转载自blog.csdn.net/weixin_44949135/article/details/115135458