[C++] 程序流程结构

系列文章目录

1、初识C++
http://t.csdnimg.cn/WIT0Z
2、数据类型
http://t.csdnimg.cn/CoURP
3、运算符
http://t.csdnimg.cn/5Q7qc
4、程序流程结构

未完待续



前言

本文主讲选择结构,循环结构,跳转结构


一、选择结构

1. if语句

单行if语句
语法:
if (判断条件) {
执行语句
}

#include <iostream>
using namespace std;

int main () {
	//单行if
	int n = 10;
	if (n > 0) {//如果n的值大于10就输出hello!
		cout << "hello!" << endl;
	}


	if (n <= 0) {//如果n小于等于0就输出goodbye!
		cout << "goodbye!" << endl;
	}
	
	return 0;
}

在这里插入图片描述
上述的两条if语句中,n的值只满足>10的条件,所以只输出了hello!


多行if语句
语法:
if (判断条件) {
执行语句
}
else {
执行语句
}

#include <iostream>
using namespace std;

int main () {
	//多行if
	int n = 10;
	if (n <= 0) {//如果n小于等于0就输出hello!
		cout << "hello!" << endl;
	}
	else {//如果不满足n小于等于0这个条件,就输出goodbye!
		cout << "goodbye!" << endl;	
	}
	
	return 0;
}

在这里插入图片描述
n的值为10,不满足小于等于0,所以往下执行else中的语句,输出goodbye!


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

#include <iostream>
using namespace std;

int main() {
	//多条件if
	int n = 35;
	//向下执行,如果有一条条件满足就执行,其他都不执行
	if (n >= 30) {
		cout << "hello!" << endl;
	}
	else if (n >= 20) {
		cout << "haha!" << endl;
	}
	else if (n >= 10) {
		cout << "hehe" << endl;
	}
	else {
		cout << "goodbye!" << endl;
	}

	n = 25;
	if (n >= 30) {
		cout << "hello!" << endl;
	}
	else if (n >= 20) {
		cout << "haha!" << endl;
	}
	else if (n >= 10) {
		cout << "hehe" << endl;
	}
	else {
		cout << "goodbye!" << endl;
	}

	n = 5;
	if (n >= 30) {
		cout << "hello!" << endl;
	}
	else if (n >= 20) {
		cout << "haha!" << endl;
	}
	else if (n >= 10) {
		cout << "hehe" << endl;
	}
	else {
		cout << "goodbye!" << endl;
	}

	return 0;
}

在这里插入图片描述
n等于35时,只满足n大于等于30这一条件,所以输出hello!
n等于25时,只满足n大于等于20这一条件,所以输出haha!
n等于5时,既不大于等于30,也不大于等于20和10,所以执行else,输出goodbye!


嵌套if语句

#include <iostream>
using namespace std;

int main() {
	//嵌套if
	int n = 20;
	if (n > 0) {
		if (n > 20) {
			cout << "haha!" << endl;
		}
		else {
			cout << "hello" << endl;	
		}
	}
	else if (n < 0) {
		cout << "xixi!" << endl; 
	}
	else {
		cout << "goodbye!" << endl;
	}

	return 0;
}

在这里插入图片描述

n为10满足大于0的条件,但在该if语句内不满足大于20这一条件,所以执行该语句的else,输出hello!

2. 三目运算符

语法:表达式1 ? 表达式2 : 表达式3
如果表达式1为真,执行表达式2的语句,反之执行表达式3

#include <iostream>
using namespace std;

int main() {
	//三目运算符
	int a = 10;
	int b = 20;
	int c = a > b ? a : b;
	//相当于简化版的if/else语句
	//如果a > b就返回a,否则返回b
	cout << "c = " << c << endl;
	
	//由于三目运算符返回的是变量,所以我们也可以给它返回的变量进行赋值
	a > b ? a : b = 30;
	cout << "c = " << c << endl;
	
	return 0;
}


a小于b返回b,所以c得到的是b的值
a小于b返回b,所以b被赋值为30

3. switch语句

语法:
switch (整型表达式) {
case 整型表达式1 :
执行语句
case 整型表达式2 :
执行语句
case 整型表达式3 :
执行语句
...........
default :
执行语句
}

#include <iostream>
using namespace std;

int main() {
	//switch语句
	int n = 0;
	cin >> n;//从键盘输入一个数赋值给n

	switch (n) {
	case 1 :
		cout << "hh" << endl;
	case 2 :
		cout << "haha" << endl;
		break;
	case 3 :
		cout << "hello" << endl;
		break;
	case 4 :
		cout << "xixi" << endl;
		break;
	default :
		cout << "bye" << endl;
	}
	
	return 0;
}

在这里插入图片描述
当输入1时,只有case 1满足(1 == 1),所以一直向下执行,直到遇到break时停止
在这里插入图片描述
当输入3时,只有case 3满足(3 == 3),所以一直向下执行,直到遇到break时停止

在这里插入图片描述
当输入0时,不满足case 1 (0 != 1),不满足case 1(0 != 2),不满足case 1(0 != 3),不满足case 1(0 != 4),所有case都不满足,执行default中的语句

注意:
1、case中如果没有break,程序会一直向下执行
2、switch语句中表达式类型只能是整型(字符型也算整型的一种)

二、循环结构

1. while循环语句

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

#include <iostream>
using namespace std;

int main () {
	//while语句
	//输出1到10的数字
	int n = 1;
	while (n <= 10) {
		cout << n << endl;
		n++;
	}
	
	return 0;
}

在这里插入图片描述
每次执行循环语句时输出当前n的值之后,将n自增1,直到n不满足小于等于10这个条件就退出


2. do while循环语句

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

#include <iostream>
using namespace std;

int main() {
	//do while语句
	//输出1到10的数字
	int n = 1;
	do {
		cout << n << endl;
		n++;
	} while (n <= 10);

	cout << "\n";

	//该语句的特点是无论循环条件如何,至少会执行一次循环语句
	//例:
	n = 11;
	do {
		cout << n << endl;
		n++;
	} while (n <= 10);


	return 0;
}

在这里插入图片描述
第一次do while循环中,n的起始值为1,每次输出n之后n自增1,大于10停止循环'
第二次do while循环中,n的起始值为11,因为11不满足小于等于10所以就只执行了一次就停止循环
特点:
1、先执行循环语句再判断循环条件
2、至少会执行一次


3.for循环语句

语法:
for (①起始条件; ②循环条件; ③控制语句) {
④循环语句;
}

#include <iostream>
using namespace std;

int main() {
	//for循环语句
	//输出1到10的数字
	for (int i = 0; i < 10; i++) {//从0开始循环,判断是否满足条件,第二次开始每次自增1,直到停止循环
		cout << i + 1 << endl;
	}

	//也可以将起始条件省略
	//int i = 0;
	//for ( ; i < 10; i++) {
	//	cout << i + 1 << endl;
	//}
	
	//也可以将控制语句放入循环语句中
	//int i = 0;
	//for ( ; i < 10; ) {
	//	cout << i + 1 << endl;
	//	i++;
	//}

	return 0;
}

在这里插入图片描述
执行顺序:
第一次:①②④
第二次:②③④
第三次:②③④
第四次:②③④
……
第十次:②③④


4.嵌套循环

上述三种循环中for较为常用,因此使用for循环举例,其他循环同理

#include <iostream>
using namespace std;

int main() {
	//嵌套循环
	//输出一个由星号组成的矩形
	int length = 5, width = 5;//定义矩形的长和宽
	for (int i = 0; i < length; i++) {
		for (int j = 0; j < width; j++) {
			cout << "*";
		}
		cout << "\n";//每输出完一行星号就换行
	}

	return 0;
}

在这里插入图片描述


四、跳转语句

1. break语句

break关键字的作用是能够退出当前所在的循环体

#include <iostream>
using namespace std;

int main() {
	//以输出矩形为例
	//输出一个由星号组成的矩形
	int length = 5, width = 5;//定义矩形的长和宽
	for (int i = 0; i < length; i++) {
		for (int j = 0; j < width; j++) {
			if (i == 1) {
				break;
			}
			cout << "*";
		}
		cout << "\n";//每输出完一行星号就换行
	}

	return 0;
}

在这里插入图片描述
正如输出结果所示,当i为1时这一行的循环退出不执行,所以这一行为空


3. continue语句

continue关键字的作用时跳出本次循环(注意:不是跳出整个循环

#include <iostream>
using namespace std;

int main() {
	//以输出矩形为例
	//输出一个由星号组成的矩形
	int length = 5, width = 5;//定义矩形的长和宽
	for (int i = 0; i < length; i++) {
		for (int j = 0; j < width; j++) {
			if (j == 1) {
				continue;
			}
			cout << "*";
		}
		cout << "\n";//每输出完一行星号就换行
	}

	return 0;
}

在这里插入图片描述
当j为1时,就停止本次循环,continue之后的循环语句不执行,因此每一行就都少了一个星号

3. goto语句

执行到goto语句时,会直接跳转到标记再执行
语法:
goto 标记 ;
标记 :

#include <iostream>
using namespace std;

int main() {
	//goto语句
	cout << "haha" << endl;
	goto mark;
	cout << "hello" << endl;
	mark:
	cout << "hehe" << endl;

	return 0;
}

在这里插入图片描述
执行到goto mark时,直接跳转到mark并执行之后的语句,goto mark到mark之间的语句跳过

mark也可以放到goto mark之前,不过这样会死循环


总结

下篇数组
下下篇函数
下下下篇指针
下下下下篇结构体
🥺

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值