文章目录
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;
}