C++程序流程结构(选择语句、循环语句、跳转语句)


C/C++支持最基本的三种程序运行结构:顺序结构选择结构循环结构
顺序结构:程序按顺序执行,不发生跳转
选择结构:依据条件是否满足,有选择地执行相应功能
循环结构:依据条件是否满足,循环多次执行某段代码


1 选择结构

1.1 if语句

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

if语句的4种形式:
(1)单行格式if语句
语法if(条件){ 条件满足执行的语句 }

注:if判断语句后不能使用分号,否则语句块中的代码必定会被执行。

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

(3)多条件的if语句
语法if(条件1){ 条件1满足执行的语句 }else if(条件2){ 条件2满足执行的语句 }... else{ 全部条件均不满足执行的语句}

(4)嵌套if语句:在if语句中嵌套使用if语句,实现更精确的条件判断


1.2 三目运算符

作用:通过三目运算符实现简单的判断
语法表达式1 ? 表达式2 :表达式3

解释
若表达式1的值为真(1),则执行表达式2,并返回表达式2的结果;
若表达式1的值为假(0),则执行表达式3,并返回表达式3的结果。

注1:与if语句相比,三目运算符短小整洁,但使用多重嵌套时结构不清晰。
注2:C++中,三目运算符的返回结果为变量,可以继续对变量进行赋值。

示例:

int main() {
    
    
	int a = 5;
	int b = 10;
	int c = 0;
	c = a > b ? a : b;
	cout << "c = " << c << endl;	//10

	//C++中,三目运算符的返回结果为变量,可以继续对变量进行赋值
	(a > b ? a : b) = 100;
	cout << "a = " << a << endl;	//5
	cout << "b = " << b << endl;	//100
	
	return 0;
}

1.3 switch语句

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

switch(表达式){
    
    
	case 结果1:执行语句;break;
	case 结果2:执行语句;break;
	...
	default:执行语句;break;
}

注1:switch语句中,用于判断的表达式的类型只能是整型字符型,且不能表示为区间。
注2:case语句若未使用break关键字,则程序会一直向下执行。
注3:多条件判断时,switch语句比if语句的结构清晰、执行效率高,但switch语句无法用于判断区间。
注4:若case语句中(break关键字之前)包含的代码过长,运行时可能报错。可使用花括号{...}将代码包括起来,形成代码段。


2 循环结构

2.1 while循环语句

作用:满足循环条件时,执行循环语句
语法while(循环条件){ 循环语句 }
解释当循环条件的结果为真时,就执行循环语句

注1:执行循环语句时,必须为程序提供跳出循环的出口,避免产生死循环。
注2:若while语句的循环条件为1(表示“真”)时,则循环会一直执行。

示例1:打印数字0~9

int main() {
    
    
	int num = 0;
	while (num <= 9){
    
    
		cout << "num = " << num << endl;
		num++;
	}	
	return 0;
}

示例2:猜1~100内的随机数

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

int main() {
    
    
	//使用当前系统时间,添加随机数种子
	srand((unsigned int)time(NULL));
	//生成1~100的随机数
	int random = rand() % 100 + 1;

	int value;
	while (1) {
    
    
		cin >> value;
		if (value < random) {
    
    
			cout << "猜的数字小了,请继续" << endl;
		}else if (value > random) {
    
    
			cout << "猜的数字大了,请继续" << endl;
		}else {
    
    
			cout << "猜对了,随机数是" << value << endl;
			break;	//跳出当前循环
		}
	}

	return 0;
}

2.2 do…while循环语句

作用: 满足循环条件时,执行循环语句
语法do{ 循环语句 } while(循环条件);

注:while循环先判断循环条件,再执行循环语句;do…while循环先执行一次循环语句,再判断循环条件。

示例1:打印数字0~9

int main() {
    
    
	int num = 0;

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

	return 0;
}

示例2:水仙花数

int main() {
    
    
	int num = 100;
	while (num < 1000) {
    
    
		int first = num / 100;
		int last = num % 10;
		int mid = num / 10 % 10;

		if ( pow(first, 3) + pow(mid, 3) + pow(last, 3) == num) {
    
    
			cout << num << endl;
		}

		num++;
	}
	return 0;
}

2.3 for循环语句

作用 :满足循环条件时,执行循环语句
语法for(初始表达式; 条件表达式; 循环控制语句) { 循环语句; }

注1:for循环中的各个表达式需使用分号分隔。
注2:while 、do…while和for等循环语句中,for循环的结构清晰,较常用。

示例:打印数字0~9

int main() {
    
    
	for (int i = 0; i < 10; i++){
    
    
		cout << i << endl;
	}
	return 0;
}

2.4 嵌套循环

作用 :在循环体中再嵌套一层循环,解决一些实际问题
示例:九九乘法表

int main() {
    
    
	for (int i = 1; i <= 9; i++) {
    
    
		for (int j = 1; j <= i; j++) {
    
    
			cout << j << " * " << i << " = " << j * i << "\t";
		}
		cout << endl;
	}
	return 0;
}


3 跳转语句

3.1 break语句

作用 :跳出选择结构循环结构
break使用的时机
(1)switch条件语句:终止case并跳出switch语句
(2)循环语句:跳出当前循环
(3)嵌套循环语句:跳出最近的内层循环


3.2 continue语句

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

注:continue跳过当次循环,未终止整个循环;break跳出当前整个循环。


3.3 goto语句

作用:无条件跳转语句
语法goto 标记;
解释:若标记名称存在,当执行到goto语句时,会跳转到标记的位置。

注1:标记的名称一般全部大写
注2:不建议在程序中使用goto语句,会造成程序流程混乱。(了解即可)

示例:

//输出结果:step1、step2、step5
int main() {
    
    
	cout << "step1" << endl;
	cout << "step2" << endl;
	goto FLAG;
	cout << "step3" << endl;
	cout << "step4" << endl;

	FLAG:
	cout << "step5" << endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/newson92/article/details/109819212