C++入门基础第二篇之程序流程结构

135 阅读4分钟

C++入门基础第二篇

程序流程结构

024程序流程结构-选择结构-单行if语句

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

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

选择结构:

if语句

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

if语句的三种形式

  1. 单行格式if语句
  2. 多行格式if语句
  3. 多条件的if语句

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//选择结构  单行if语句
	//用户输入分数,如果分数大于600,视为考上了一本大学,在屏幕上输出
	//1、用户输入一个分数
	int score = 0;
	cout << "请输入一个分数:" << endl;
	cin >> score;
	//2、打印用户输入的分数
	cout << "您输入的分数为:" << score << endl;
	//3、判断分数是否大于600,如果大于,那么输出
	if (score > 600)
		cout << "恭喜您考上了一本大学!!!" << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

025程序流程结构-选择结构-多行if语句

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//选择结构  多行if语句
	//用户输入分数,如果分数大于600,视为考上了一本大学,在屏幕上输出,
	//如果没考考试一本大学打印没考上
	//1、用户输入一个分数
	int score = 0;
	cout << "请输入一个分数:" << endl;
	cin >> score;
	//2、打印用户输入的分数
	cout << "您输入的分数为:" << score << endl;
	//3、判断分数是否大于600,如果大于,那么输出,否则打印未考上一本
	if (score > 600)
		cout << "恭喜您考上了一本大学!!!" << endl;
	else
		cout << "继续努力,继续加油!!!" << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

026程序流程结构-选择结构-多条件if语句

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//选择结构  多条件if语句
	//用户输入分数,如果分数大于600,视为考上了一本大学,在屏幕上输出,
	//如果大于500,视为考上了二本大学
	//如果大于400,视为考上了三本大学
	//如果小于等于400,视为未考上本科,在屏幕上输出
	//1、用户输入一个分数
	int score = 0;
	cout << "请输入一个分数:" << endl;
	cin >> score;
	//2、打印用户输入的分数
	cout << "您输入的分数为:" << score << endl;
	//3、判断分数是否大于600,如果大于,那么输出,否则打印未考上一本
	if (score > 600)
		cout << "恭喜您考上了一本大学!!!" << endl;
	else if (score > 500)
		cout << "恭喜您考上了二本大学!!!" << endl;
	else if (score > 400)
		cout << "恭喜您考上了三本大学!!!!" << endl;
	else
		cout << "再接再厉,继续努力" << endl;
	system("pause");
	return 0;
}

027程序流程结构-选择结构-嵌套if语句

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

  1. 提示用户输入一个高考考试分数,根据分数做如下判断
  2. 分数如果大于600分视为考上一本,大于500分视为考上二本,大于400考上三本,其余视为未考上
  3. 在一本分数中,如果大于700分,考入北大,大于650,考入清华,大于600考入人大
#include<iostream>
#include<string>
using namespace std;
int main()
{
	//选择结构  嵌套if语句
	//1、用户输入一个分数
	int score = 0;
	cout << "请输入一个分数:" << endl;
	cin >> score;
	//2、打印用户输入的分数
	cout << "您输入的分数为:" << score << endl;
	//3、判断分数是否大于600,如果大于,那么输出,否则打印未考上一本
	if (score > 600){
		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;
}

028测序流程结构-选择结构案例-三只小猪称体重

练习案列: 三只小猪称体重 有三只小猪ABC,请分别输入三只小猪的体重,并判断那只小猪最重。 在这里插入图片描述

1、先判断A和B谁重

A重\

让A和C比较

A重 结果是A最重

C重 结果是C最重

B重

让B和C比较

B重 结果是B最重

C重 结果是C最重

#include<iostream>
#include<string>
using namespace std;

int main()
{
	//三只小猪称体重,判断哪只最重
	//1、创建三只小猪的体重变量
	int  num1 = 0, num2 = 0, num3 = 0;
	//2、让用户输入三只小猪的体重
	cout << "请输入小猪A的体重:" << endl;
	cin >> num1;
	cout << "请输入小猪B的体重:" << endl;
	cin >> num2;
	cout << "请输入小猪C的体重:" << endl;
	cin >> num3;
	cout << "请输入小猪A的体重:" << num1 << endl;
	cout << "请输入小猪B的体重:" << num2 << endl;
	cout << "请输入小猪C的体重:" << num3 << endl;
	//3、判断那只最重
	if (num1 > num2){//A>B
		if (num1 > num3)
			cout << "三只小猪A最重" << endl;
		else
			cout << "三只小猪C最重" << endl;
	}
	else{
		if (num2 > num3)  //B比C重
			cout << "小猪B最重:" << endl;
		else
			cout << "小猪C最重" << endl;
	}
	system("pause");
	return 0;
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述

029程序流程结构-选择结构-三目运算符

三目运算符

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

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

解释:

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

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

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//三目运算符
	//创建三个变量a,b,c
	//将a和b做比较,将变量大的值赋给变量c
	int a = 10, b = 20, c = 0;
	c = (a > b ? a : b);
	cout << "c = " << c << endl;
	//在C++中三目运算符返回的是变量,可以继续赋值
	(a > b ? a : b) = 100;
	cout << "a = " << a << endl;
	cout << "b =" << b << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

030程序流程结构-选择结构-switch语句

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

语法:

switch(表达式){
	case 结果1:执行语句;break;
	case 结果2:执行语句;break;
	...
	default:执行语句;break;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
	//switch语句
	//给电影进行打分  10 ~ 9 经典   8  ~ 7 非常好  6  ~ 5 一般  5以下  烂片
	int score = 0;
	cout << "请给电影打分:" << endl;//1、提示用户给电影评分
	cin >> score;
	cout << "您打的分数为:" << score << endl;//2、用户开始进行打分
	switch (score){              //3、根据用户输入的分数来提示用户最后的结果
	case 10:
		cout << "您认为是经典电影" << endl; break;
	case 9:
		cout << "您认为是经典电影" << endl; break;
	case 8:
		cout << "您认为是电影非常好" << endl; break;
	case 7:
		cout << "您认为是电影非常好" << endl; break;
	case 6:
		cout << "您认为是电影一般" << endl; break;
	case 5:
		cout << "您认为是电影一般" << endl; break;
	default:
		cout << "您认为是电影是个烂片" << endl; break;
	}
	system("pause");
	return 0;
}

if和switch区别?

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

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

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

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

031程序流程结构-循环结构-while语句

while循环语句

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

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

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

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//while循环
	//在屏幕中打印0 ~ 9
	int num = 0;
	while (num <10){
		cout << num++ << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

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

032程序流程结构-循环结构案例-猜数字

while循环练习案例:猜数字

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

在这里插入图片描述

#include<iostream>
#include<string>
#include<ctime>
using namespace std;
int main()
{
	//添加随机数种子,作用是利用当前系统生成随机数,防止每次随机数都一样
	srand((unsigned int)time(nullptr));
	//1、系统生成随机数
	int num = rand() % 100 +1;   //rand()%100+1生成0+1 ~ 99+1随机数
	//2、玩家进行猜测
	int val = 0;
	while (1){
		cin >> val;
		//3、判断玩家的猜测
		if (val > num)
			cout << "猜测过大" << endl;
		else if (val < num)
			cout << "猜测过小" << endl;
		else{
			cout << "恭喜您猜对了!!!" << endl; 
			break;
		}
	}
	//猜对   退出游戏
	//猜错   提示猜的结果  过大或者过小,  重新返回第2步
	system("pause");
	return 0;
}

在这里插入图片描述

033程序流程结构-循环结构-dowhile语句

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

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

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

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//do ...while语句
	//在屏幕中输出0到9这10个数字
	int num = 0;
	do{
		cout << num++ << " ";
	} while (num < 10);
	cout << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

034程序流程结构-循环结构案例-水仙花数

练习案例:水仙花数

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

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

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

分析:

1、将所有的三位数进行输出(100 ~ 999)

2、在所有的三位数中找到水仙花数

水仙花数

获取个位数 153%10 = 3 对数字取模于10可以获取到个位

获取十位数 (153/10)%10 = 5 先整除于10,得到两位数,再取模于10,得到十位数

获取百位数 153/100 直接整除于100,获取到百位

判断 各位^3 +十位 ^3 +百位 ^3 = itself

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//1、打印所有的三位数
	int num = 100;
	do{
		int a = 0, b = 0, 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<< " ";
		}
		num++;
	} while (num < 1000);
	cout << endl;
	//2、从所有的三位数字中找到水仙花数
	system("pause");
	return 0;
}

在这里插入图片描述

036程序流程结构-循环结构-for循环

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

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

#include<iostream>
#include<string>
using namespace std;
int main()
{
	for (int i = 0; i < 10; i++)
		cout << i << " ";
	cout << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

037程序流程结构-循环结构-敲桌子

练习案例:敲桌子

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

1、先输出1到100这些数字

2、从这100个数字中找到特殊的数字,改位“敲桌子”

7的倍数 (7 14 21 28 .....) %7 ==0

个位有7 (7 17 27 37......) % 10 == 7

十位有7 (70 71 71 73 ....) /10 = 7

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//敲桌子的案例
	//1、先输出1 ~ 100数字
	for (int i = 1; i <= 100; i++){
		if (i%7 ==0||i%10 == 7||i/10==7)
		cout << "敲桌子" << endl;
		else
		cout << i << " ";
	}
	cout << endl;
	//2、从100个数字中找到特殊数字,打印敲桌子

	system("pause");
	return 0;
}

在这里插入图片描述

037程序流程结构-嵌套循环

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

#include<iostream>
#include<string>
using namespace std;
int main()
{
	for (int i = 0; i < 10; i++){
		for (int i = 0; i < 10; i++)
			cout << "*" << " ";
		cout << endl;
	}
	system("pause");
	return 0;
}

在这里插入图片描述

038流程循环结构-嵌套循环案例-乘法口诀表

#include<iostream>
#include<string>
using namespace std;
int main()
{
	for (int i =1; i < 10; i++){
		for (int j = 1; j <= i; j++)
			cout << j << " * " <<i <<" = " << i*j <<"   ";
		cout << endl;
	}
	system("pause");
	return 0;
}

在这里插入图片描述

039程序流程结构-跳转语句-break语句

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

break使用的时机

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句
#include<iostream>
#include<string>
using namespace std;
int main()
{
	//break的使用时机
	//1、出现在switch语句中
	cout << "请选择副本的难度:" << endl;
	cout << "1、普通" << endl;
	cout << "2、中等" << endl;
	cout << "3、困难" << endl;
	
	int select = 0;  //创建选择结果变量
	cin >> select;   //等待用户输入
	switch (select){
	case 1:
		cout << "您选择的是普通难度" << endl;
		break;
	case 2:
		cout << "您选择的是中等难度" << endl;
		break;
	case 3:
		cout << "您选择的是困难难度" << endl;
	default:
		break;
	}
	system("pause");
	return 0;
}

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//break的使用时机
	//2、出现在循环语句中
	for (int i = 0; i < 10; i++){
		if (i == 5){
			break;
		}
		cout << i << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//break的使用时机
	//3、出现在嵌套循环语句中
	for (int i = 0; i < 10; i++){
		for (int j = 0; j < i; j++){
			if (j == 5)
				break;
			cout << "*" << " ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

在这里插入图片描述

040程序流程结构-跳转语句-continue

作用:在循环语句中,跳出本次循环中余下尚未执行的语句,继续执行下一次循环。 continue并没有是整个循环终止,而break会跳出循环

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//continue 执行到本行,就不在执行后面的代码了,而执行下一次循环

	
	for (int i = 0; i <= 50; i++){
		//如果是奇数输出,偶数不输出
		if (i % 2 == 0){
			continue;//可以筛选条件,执行到此就不再向下执行,执行下一次循环
			//break;   //break会退出循环,而continue不会
		}
		
		cout << i << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

041程序流程结构-跳转语句-goto

  • 作用:可以无条件跳转语句
  • 语法:goto标记;
  • 解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;
int main()
{
	//goto语句
	cout << "1、XXXXXX" << endl;
	cout << "2、XXXXXX" << endl;
	goto FLAG;
	cout << "3、XXXXXX" << endl;
	cout << "4、XXXXXX" << endl;
	FLAG:
	cout << "5、XXXXXX" << endl;
	system("pause");
	return 0;
}

在这里插入图片描述