C++学习笔记(3)
学习是一件任重而道远的事情,与其焦虑不如动手起来,借助平台记录自己学习笔记,希望和大家多多交流,今天又是努力成为程序媛的一天!
09.程序流程结构
C++最基本的三种运行结构分别是:循环结构(程序按照顺序执行,不跳转),顺序结构,选择结构
9.1选择结构
定义:根据条件是否满足,执行相应的代码。
9.1.1 if语句
- 单行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;
}
运行结果:
- 多行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;
}
运行结果:
- 多条件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:
- 加endl 表示换行;
- 内层表示每一行输出的内容,外层表示第几行
- 注意换行的问题,否则可能呈现不出来效果
- 小案例:打印乘法口诀表
- 代码:
#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语句
作用:跳出选择结构或者循环结构
使用情况:
- 在选择结构中用在switch语句中,用来停止case并跳出switch,一般会在每一个case后面加一个break,因为不加后面的语句都会打印出来
- 循环语句作用是跳出当前的循环语句中
- 在嵌套循环中,跳出最近的内层循环语句,并不影响外层,控制内层循环打印的个数
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