C++学习笔记(超详细笔记记录ing)

C++学习笔记(3)

学习是一件任重而道远的事情,与其焦虑不如动手起来,借助平台记录自己学习笔记,希望和大家多多交流,今天又是努力成为程序媛的一天!

09.程序流程结构

C++最基本的三种运行结构分别是:循环结构(程序按照顺序执行,不跳转),顺序结构,选择结构

9.1选择结构

定义:根据条件是否满足,执行相应的代码。

9.1.1 if语句
  1. 单行if语句格式

if(条件)
{
满足条件后执行的语句;
}

#include<iostream>
using namespace std;

int main() {
		int a = 10;
		cout << "请输入您的考试成绩:" << endl;
		
		cin >> a;

		if (a >= 500) {

			cout << "恭喜你考生了一本院校" << endl;

		}

		system("pause");
		return 0;
}

运行结果:
在这里插入图片描述

  1. 多行if语句格式

if(条件)
{
满足条件时执行语句;
}
else
{
不满足条件时的执行语句;
}

#include<iostream>
using namespace std;

int main() {
	int a = 0;
	cout << "请输入您的考试成绩:" << endl;
	
	cin >> a;

	if (a >= 500) {

		cout << "恭喜你考生了一本院校" << endl;

	}
	else {
		cout << "很遗憾,没有考上一本" << endl;
	}

	system("pause");
	return 0;
}


运行结果:
在这里插入图片描述

  1. 多条件if语句格式

if(条件1){
满足条件1执行的语句;
}else if(条件2){
满足条件2执行的语句;
}

else{
都不满足执行的语句;
}

#include<iostream>
using namespace std;

int main() {
	int a = 0;
	cout << "请输入您的考试成绩:" << endl;

	cin >> a;

	cout << "您输入的分数为:" << endl;

	if (a >= 500) {

		cout << "恭喜你考生了一本院校" << endl;

	}
	else if (a >= 400) {

		cout << "恭喜你考上了二本院校" << endl;
	
	}
	else {
		cout << "很遗憾,没有考上院校" << endl;
	}

	system("pause");
	return 0;
}


运行结果:
在这里插入图片描述
4.嵌套if语句
在if语句中嵌套if语句

#include<iostream>
using namespace std;

int main() {
	int a = 0;
	cout << "请输入您的考试成绩:" << endl;

	cin >> a;

	cout << "您输入的分数为:" << endl;

	if (a >= 500) {



		if (a > 700) {

			cout << "你应该能考上清华大学" << endl;
		}
		else if (a > 650) {
			cout << "你应该能考上北大大学" << endl;
		}
		else {
			cout << "恭喜你考生了一本院校" << endl;
		}

	}
	else if (a >= 400) {

		cout << "恭喜你考上了二本院校" << endl;

	}
	else {
		cout << "很遗憾,没有考上院校" << endl;
	}

	system("pause");
	return 0;
}


运行结果:
在这里插入图片描述
5.称体重小case
需求:输入三人的体重,判断谁的体重最重。

#include<iostream>
using namespace std;

int main() {

		int person1 = 0;
		int person2 = 0;
		int person3 = 0;

		

		cout << "请输入第一个人的体重:" << endl;
		cin >> person1;
		

		cout << "请输入第二个人的体重:" << endl;
		cin >> person2;
		

		cout << "请输入第三个人的体重:" << endl;
		cin >> person3;

		cout << "第一个人的体重为:" << person1 << "kg" << endl;
		cout << "第二个人的体重为:" << person2 << "kg" << endl;
		cout << "第三个人的体重为:" << person3 << "kg" << endl;

		if (person1 >= person2) {
		
			

			if (person1 > person3) {

				cout << "三个人中体重最重是" << "person1:" << person1 << "kg" << endl;
			}
			else {
				cout << "三个人中体重最重是" << "person3:" << person3 << "kg" << endl;
			}

		}else{

			

			if (person2 > person3) {
				cout << "三个人中体重最重是" << "person2:" << person2 << "kg" << endl;
			}
			else {
				cout << "三个人中体重最重是" << "person3:" << person3 << "kg" << endl;
			}

		}

	}

运行结果:
在这里插入图片描述

9.1.2三目运算符

作用:实现简单判断
语法结构:

表达式1?表达式2:表达式3;

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

  • C++中三目运算符返回的是变量,可以继续赋值!
#include<iostream>
using namespace std;

int main() {

	//返回a,b的最大值
	int a = 10;
	int b = 20;
	int c = 0;
	

	c = (a > b ? a : b);//记得加分号,否则报错!!
	cout << "最大值为:" << c << endl;

	//C++中三目运算符返回的是变量,可以继续赋值
	(a < b ? a : b) = 100;
	cout << a << endl;
	cout << b << endl;

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

9.1.3switch 语句

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

 switch(表达式)
{	
 		case 结果1:执行语句;break;
 		case 结果2:执行语句;break...
		default:执行语句;break;
}
#include<iostream>
using namespace std;

int main(){

	//使用switch语句对电影进行评分
	//10:非常好看;9:很不错;8:值得一看;7:还不错;6:一般般;5:不推荐

	//让用户进行评分
	cout << "请对该电影进行评分:" << endl;

	//用户输出分数
	int score = 0;
	cin >> score;
	cout << "您对这部电影的评分为:" << score << endl;

	//对评分判断评价
	switch (score) {
		case 10://执行相应的语句
			cout << "您对这部电影的评价为" << "非常好看" << endl;
		break;//记得一定要在case语句后面加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;

	}
}

运行结果:
在这里插入图片描述
几点注意:

  • switch语句中表达式类型只能是整型或字符型
  • case里如果不加break,程序将一直向下运行下去
  • 与if对于多条件判断时,switch执行效率高,但是switch不可以判断区间

9.2循环结构

9.2.1while 循环

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

while(循环条件){满足条件执行的循环语句}

#include<iostream>
using namespace std;

int main() {

	//依次输出0-9
	int a = 0;
	while (a < 10) {
		cout << a << endl;
		a++;
	}

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

  • 小案例:猜数字,系统随机生成随机数,玩家输入猜测的数字,如果猜对了,恭喜,猜错了,告诉猜大了还是小了,循环如此至猜对游戏结束。
    代码:
#include<iostream>
using namespace std;
//#include<time.h>
#include<ctime>//time系统时间头文件包含

int main() {

	//猜数字
	//1.系统随机生成一个数字
	//头部文件加#include<time.h>
	srand((unsigned int)time(NULL));//用来生成随机数,通过时间戳控制,否则只有下面那句是伪随机数,每次都一样
	int a = rand() % 100;  //rand()%100随机生成0-99的随机数,记得加分号!!易错
	
//	cout << "随机值为" << a << endl;

	//2.玩家猜测数字
	cout << "请输入您猜测的数据:" << endl;
	int b = 0;
	cin >> b;
	cout << "您猜测的数字为:" << b << endl;


	//3.判断玩家的猜测 
	//4.记录一共猜了多少次成功
	int num = 1;
	while (5 > 3) {//如果不相等就一直循环判断范围,直至猜中
		if (a > b) {
			cout << "您输入的值小了" << endl;
			cout << "请重新输入您猜测的数据:" << endl;
			cin >> b;
			cout << "您猜测的数字为:" << b << endl;
		}//条件判断完之后因为一直是在循环体里,所以会一直陷入循环
		else if (a < b) {
			cout << "您输入的值大了" << endl;
			cout << "请重新输入您猜测的数据:" << endl;

			cin >> b;
			cout << "您猜测的数字为:" << b << endl;
		}
		else {//猜中的时候需要输出语句
			cout << "您真棒,猜中了" << endl;
			cout << "您一共猜了" << num << "次" << endl;
			break;//猜中之后并用break语句跳出当前循环,否则会循环输出这部分执行语句
		}
		num++;//每次循环一次,次数加1
		
			
	}
		
}



	//猜对,恭喜玩家  
	//猜错,提示玩家猜的结果 过大或者过小  重新返回第二步



运行结果:
在这里插入图片描述

9.2.2do…while 循环

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

  • 与while的区别在于do…while会执行一次循环语句,再判断循环条件
#include<iostream>
using namespace std;

int main() {

	//使用do...while循环
	//会先执行一次循环语句

	//输出0-9
	int num = 0;

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

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

  • 小案例:求出所有三位数的水仙花数,即数的每一位的立方相加等于本身,如:153= 1^3+ 5^3 + 3^3 = 125+ 1 + 27 = 153
#include<iostream>
using namespace std;

int main() {

	//使用do...while
	//找出所有三位数的水仙花数
	//即个位的立方+十位的立方+百位的立方 = 这个数

	//1.遍历所有三位数
	//2.对三位数进行条件判断
	//求出该数的百位,十位,个位数字
	//判断是否满足条件
	//3.满足条件输出,不满足继续循环加一
	int num = 100;

	do {

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

		//if (a ^ 3 + b ^ 3 + c ^ 3 == num) {  //不可以用尖号表示幂方
		if (a * a * a + b * b * b  + c * c * c == num) {

			cout << num << endl;
		}
		
			num++;
		

	} while (num < 999);



	system("pause");

	return 0;

}

运行结果:
在这里插入图片描述

9.2.3for 循环

语法:

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

#include<iostream>
using namespace std;

int main() {

	//for循环输出0-9

	for (int a = 0; a < 10; a++) {

		cout << a << endl;

	}

	system("pause");
	return 0;

}

运行结果:
在这里插入图片描述

  • 小案例:敲桌子,1-100的数字,如果遇到7的倍数或者数字中含有7这个数字的都要返回一句“敲桌子”
  • 代码:
#include<iostream>
using namespace std;

int main() {

	//敲桌子的游戏
	//1-100的数,凡是7的倍数或者数字中含7,就要返回“敲桌子”

	for (int num = 1; num < 100; num++) {

		if (num % 7 == 0) {
			cout << num << endl;
			cout << "敲桌子" << endl;
			
		}
		else if (num % 10 == 7) {
			cout << num << endl;
			cout << "敲桌子" << endl;
			
		}
		else if (num / 10 == 7) {
			cout << num << endl;
			cout << "敲桌子" << endl;
		}
	}
	system("pause");
	return 0;

}
  • 运行结果:
    在这里插入图片描述

9.3嵌套结构

作用:在循环中添加嵌套结构,解决问题

#include<iostream>
using namespace std;
  
int main() {
	//打印10*10的小星星
	//双层嵌套
	// 外层跑一次,内层跑一圈
	//外层嵌套,表示行数
	for (int i = 0; i < 10; i++) {
		//内层嵌套,打印每一行的内容
		for (int j = 0; j < 10; j++) {

			cout << "* ";//注意这里不加endl,表示不换行,一行输出
		}
		cout << endl;//外层,每一层打印完之后要换一次行
	}


	system("pause");
	return 0;
}

运行结果

在这里插入图片描述

易错小tips:

  1. 加endl 表示换行;
  2. 内层表示每一行输出的内容,外层表示第几行
  3. 注意换行的问题,否则可能呈现不出来效果
  • 小案例:打印乘法口诀表
  • 代码:
#include<iostream>
using namespace std;

int main() {

	//打印9*9乘法口诀表
	//双层嵌套
	//外层表示行数
	for (int i = 1; i <= 9; i++) {
		//内层表示每一行打印的内容
		for (int j = 1; j <= i; j++) { //注意的是,每行打印的表达式个数不是固定值,而是取决于i值
			//即内层循环表示每行要打印多少个,至于打印什么内容由其下的语句决定★
			cout << j << " * " << i << " = " << j * i;//i每一次都会变,但是j都是从1开始的,所以j写在前面
			cout << "  ";//每一个表示式子写完之后加空格隔开

		}
		cout << endl;//每一层之后进行换行
	}

	system("pause");
	return 0;

}

运行结果:
在这里插入图片描述

外层循环控制多少行,内层循环控制每一层打印内容的个数,至于每一行的打印内容由内层循环的语句执行。

9.3跳转语句

9.3.1 break语句

作用:跳出选择结构或者循环结构
使用情况:

  1. 在选择结构中用在switch语句中,用来停止case并跳出switch,一般会在每一个case后面加一个break,因为不加后面的语句都会打印出来
  2. 循环语句作用是跳出当前的循环语句中
  3. 在嵌套循环中,跳出最近的内层循环语句,并不影响外层,控制内层循环打印的个数
9.3.2 continue语句

作用:在循环语句中,跳出本次循环中其余未执行的语句,直接继续执行下一个循环
例子:

#include<iostream>
using namespace std;

int main() {

	//continue语句

	for (int i = 0; i <= 100; i++) {

		//如果是奇数输出,偶数不输出
		if (i % 2 == 0) {

			continue;//凡是满足条件遇到2的倍数都会跳过本次循环的剩余语句,即不执行循环体下面的语句,重新开始一轮循环
		}
		cout << i << endl;
	}

	system("pause");
	return 0;

}

运行结果:
在这里插入图片描述
注意:碰到执行continue即不执行后面其他任何语句了,但是会继续开始一场新的循环。

9.3.3 goto语句

作用:可以无条件跳转语句
语法:goto 标记名;

  • 运行到标记处,如果标记存在的话,就会跳转到标记的位置,然后继续往下执行标记后的代码;
#include<iostream>
using namespace std;

int main() {

	
	
	cout << "1..." << endl;
	
	goto FLAG;
	cout << "2..." << endl;

	FLAG:
	cout << "3..." << endl;
	

	system("pause");
	return 0;

}

运行结果:
在这里插入图片描述

第三篇笔记到此结束,C++基础学习会持续更新在C++学习笔记合集中,当作学习笔记复习,如果能帮助其他小伙伴就更好了。
笔记是看b站黑马程序员的C++视频学习时做的记录,笔记中如果有错误和改进的地方,欢迎大家评论交流,up up up!!!

学习原视频来自:黑马程序员C++从0到1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值