【C++基础语法 8】 ——程序流程结构[分支结构 / 循环结构 / 跳转语句]

8. 程序流程结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择的执行相应功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码

流程控制概述

流程控制结构:

  • 顺序结构

    最基本最简单的流程控制,没有特定的语法结构,执行顺序是自上而下、依次执行,程序中大多数代码都是这样执行的。

  • 分支结构

    执行具体的逻辑运算进行判断,逻辑运算的结果有两个,产生选择,按照不同的选择执行不同的代码

    • if 语句
    • switch 语句
  • 循环结构

    满足循环条件的情况下,反复执行某个功能,直到循环条件不满足时终止循环

    • for 循环语句
    • while 循环语句
    • do while 循环语句

8.1 分支结构

8.1.1 if语句

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


if语句的三种形式:

  • 单行格式 if 语句 if(条件){条件满足执行的语句}

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

  • 多条件的 if 语句 if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}.....else{都不满足执行的语句}


嵌套 if 语句:在 if 语句中,可以嵌套使用 if 语句,达到更精确的条件判断

  • 格式1
if(测试条件){
 语句体;
}

   cout << "请输入一个数:" << endl;
   int num1;
   cin >> num1;

   cout << "请输入一个数:" << endl;
   int num2;
   cin >> num2;

   if (num1 == num2) {
   	cout << "两个数相等" << endl;
   }
   cout << "两个数不相等" << endl;
  • 格式2
if(测试条件){
  语句体1;
}else{
  语句体2;
}
  • 格式3
if(测试条件1){
  语句体1;
}else if(测试条件2){
  语句体2;
}
...
  else{
    语句体n+1;
  } 

8.1.2 三目运算符

作用:通过三目运算符实现简单的判断

语法:表达式1 ? 表达式2 : 表达式3

int max=num1>num2?num1:num2

三元运算符:用于调用数据时逐级筛选


8.1.3 switch语句

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

对几个常量值进行判断

switch(表达式){//表达式的结果必须是整数类型或枚举类型
   case1://case后面跟的是要和表达式进行比较的值
      语句体1;
      break;
   case2:
      语句体1;
      break;
   ...
   default://deafault 语句表示所有情况都不匹配的时候执行,,可以省略
      语句体n+1;
      break;
}

8.2 循环结构

8.2.1 while循环语句

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

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

只要循环条件的结果为真,就执行循环语句

#include<iostream>
using namespace std;

int main() {
	int num = 0;
	while (num < 10) {
		cout << "num=" << num << endl;
		num++;
	}//0 1 2 3 4 5 6 7 8 9
	return 0;
}

在执行循环语句时,程序必须提供跳出循环的出口,否则出现死循环


demo:猜数字游戏

在这里插入图片描述

  • r=rand()%(n-m+1)+m 生成[m,n]随机数
int main(){
//猜数字游戏 设置生成1-100的随机数
	srand(time(0));//设置生成随机数的种子
	//int gessNum = rand();//范围[0,32767]
	int gessNum = rand() % 100 + 1;//生成[m,n]随机数    r=rand()%(n-m+1)+m
	while (true) {
		cout << "请输入您猜的数字" << endl;
		int intNum;
		cin >> intNum;
		if (intNum == gessNum) {
			cout << "恭喜猜对了" << endl;
			break;
		}
		else if (intNum > gessNum) {
			cout << "猜大了,请加油哦~" << endl;
		}
		else {
			cout << "猜小了,请加油哦~" << endl;
		}
	}
	return 0;
}

8.2.2 do…while循环语句

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

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

与while的区别在于do…while会先执行一次循环语句,再判断循环条件

#include<iostream>
using namespace std;

int main() {
	int num = 0;
	do {
		cout << num << endl;//0 1 2 3 4 5 6 7 8 9
		num++;
		cout << num << endl;//1 2 3 4 5 6 7 8 9 10
	} while (num<10);
	return 0;
}

demo:水仙花数

在这里插入图片描述

#include<iostream>
using namespace std;

int main() {
	int num = 100;
	do {
		int temp = num;
		int a = temp % 10;
		temp = temp / 10;

		int b= temp % 10;
		temp = temp / 10;

		int c = temp % 10;
		if (a * a * a + b * b * b + c * c * c == num) {
			cout << num << endl;//153  370  371  407
		}
		num++;
	} while (num<1000);
	return 0;
}

8.2.3 for循环结构

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

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

for (int i = 0; i < 10; i += 2) {// i += 2在循环的时候可控制步长
	cout << "hello,world!" << endl;
}

8.2.4 嵌套循环

作用:在循环体中再嵌套一层循环,解决一些实际问题

#include<iostream>
using namespace std;
//乘法口诀表
int main() {
	for (int i = 1; i < 10; i++) {
		for (int j = 1; j <= i; j++) {
			cout << j << "×" << i << "=" << j * i<<" ";
		}
		cout << endl;
	}
	return 0;
}

8.2.5 如何选择循环

  • for循环:

    结构稳定,不容易遗漏任何循环要素,适合处理循环次数固定的场景

  • while循环:

    先判断循环条件,再执行循环体

  • do while

    先执行循环体,再判断循环条件


8.3 跳转语句

8.3.1 break语句

作用:用于跳出选择结构或者循环结构

break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套语句中,作用是跳出最近的内层循环语句

8.3.2 continue语句

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

#include<iostream>
using namespace std;

int main() {
	for (int i = 1; i < 10; i++) {
		if (i % 2 == 0) {
			continue;
		}
		cout <<i<< endl;//1 3 5 7 9
	}
	return 0;
}

8.3.3 goto语句

作用:可以无条件跳转语句

语法:goto标记;

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

#include<iostream>
using namespace std;

int main() {
	cout << "1.xxxxx" << endl;
	cout << "2.xxxxx" << endl;
	goto Flag;
	cout << "3.xxxxx" << endl;
	cout << "4.xxxxx" << endl;
	Flag:
	cout << "5.xxxxx" << endl;
	//代码执行结果:
	//  1.xxxxx
	//	2.xxxxx
	//	5.xxxxx
	return 0;
}

在程序中不建议使用,以免造成程序混乱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值