第四节 C++ 选择结构

news2025/1/22 21:57:30

文章目录

  • 前言介绍
  • 1. if 选择结构
    • 1.1 概述
    • 1.2. 单 if 语句执行
      • 1.2.1 分号和中括号注意事项
      • 1.2.2 案例:判断天气
    • 1.3. if - else 语句结构
      • 1.3.1 案例1:考试成绩
      • 1.3.2 案例2:判断闰年
      • 1.3.3 案例3:判断三角形
    • 1.4. 多分支结构
      • 1.4.1 语法结构
      • 1.4.2 案例:成绩区间使用
    • 1.5. 嵌套选择结构
      • 1.5.1 如何嵌套
      • 1.5.2 案例 :上车找座位程序设计
    • 1.6. if 阶段编程测试
      • 1.6.1 判断奇数和偶数
      • 1.6.2 输入三个数,判断哪个数最大
      • 1.6.3 商场购物哪家划算
      • 1.6.4 快递业务计费
    • 1.7. 扩展: 三元运算符
      • 1.7.1 语法结构
      • 1.7.2 案例: 判断奇偶数
  • 2. switch 选择结构
    • 2.1 概述
    • 2.2 语法结构
    • 2.3 switch 常见问题
    • 2.4 练习案例:设计计算器

前言介绍

  1. C++中支持的三种基本的运行流程:顺序结构,选择结构,循环结构(后面再讲)。
  2. 什么是 顺序结构?
    • 程序按照顺序执行,不发生跳转,写代码的解决思路也是如此 。

1. if 选择结构

1.1 概述

  1. 怎么理解选择结构 ? 如日常生活中,出现了 需要判断选择 的时候,需要参考某些特定的条件,根据这些条件的结果,作为依据来选择 是否执行 自己的选择。
    • 当我们走出家门时,通常会看下外面的天气,如果下雨就带上雨伞。
    • 过马路时,会根据红绿灯的信息选择是否过马路。
  2. 在计算机的语言中,同样需要引入 选择结构(分支结构)描述事件 的解决过程。
  3. 判断结构要求,指定一个或多个要测试的条件,以及条件为真时要执行的语句 (必需的) 和 条件为假时要执行的语句 (可选的)

1.2. 单 if 语句执行

  1. 就是根据某个条件进行判断,符合条件就执行条件里面的代码,不符合条件。

    • 执行流程如下所示:
      在这里插入图片描述
  2. 使用案例,注意语法格式{} 括号 的使用。

    • 从控制台输入考试成绩, 考试成绩小于60分就算不及格,请设计程序。
    #include <iostream> 
    using namespace std;
    
    
    int main(){
    	/*1.单个if的语法格式: 
    		if(条件判断){
    			成立执行; 
    		} 
    		判断外语句; 
    	*/
    	double score ; //定义考试成绩 
    	cout<<"请输入考试成绩:" <<endl; 
    	cin>> score ; //接受控制台输入成绩 
    	
    	//判断语法结构 
    	if(score<60){
    		//满足条件执行语句 
    		cout<<"考试成绩不合格"<<endl;		
    	}
    	 
    	//判断外条件
    	cout << "程序结束" <<endl; 
    	return 0;
    } 
    

1.2.1 分号和中括号注意事项

  1. 注意事项1: 切勿在 if(); 后面加分号,这样会导致不会根据判断条件执行,不管条件是否符合,都会执行{}中的语句体。

    • 下列代码为 上述代码片段。
    //判断语法结构 
    	if(score<60);{
    		//满足条件执行语句 
    		cout<<"考试成绩不合格"<<endl;		
    	}
    

    在这里插入图片描述

  2. 注意事项2:关于{}的约束范围(如果if 选择结构没有使用{}),只有最近的一个会被约束,第二行就不会被约束。

    • 下列代码为 上述代码片段。
    //判断语法结构 
    	if(score<60)
    		//满足条件执行语句 
    		cout<<"考试成绩不合格"<<endl;		
    		cout<<"我被约束了么?"<<endl;
    

    在这里插入图片描述

1.2.2 案例:判断天气

  1. 上述知道如何使用了if单分支结构,请思考下列案例。
    • 根据天气情况判断,如果天气好 (晴), 输出,出去玩,天气不好 (雨) ,输出,在室内玩。
    • 判断 两个字符串是否相同,使用比较运算符 ==
    #include <iostream>
    using namespace std;
    
    int main(){
    	/*输出两个结果?
    		思考,怎么处理 
    	*/
    	//从控制台输入  
    	string weather; 
    	cout<<"请输入今天,天气情况(晴或者雨)"<<endl;
    	cin>>weather; 
    	//开始使用if判断
    	if (weather=="晴"){
    		cout<< "去室外" <<endl; 
    	}
    	if (weather=="雨"){
    		cout<< "在室内" <<endl; 
    	}
    	cout<< "end.."<<endl; 
    } 
    

1.3. if - else 语句结构

  1. 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
    • 回想两个单if 解决的问题,还有其它问题怎么解决,所以使用 if-esle 结构。
    #include <iostream>
    using namespace std;
    #include <string> //使用string空间 
    int main(){
    	/*
    	1. 使用选择结构 if-esle
    			来解决双if结构的使用
    			天气的例子. 
    	*/
    	string weather; 
    	cout<<"请输入天气状况"<<endl;
    	cin >> weather ; 
    	if (weather == "晴"){//符合 
    		cout<<"今天天气状况"<<weather<<"在室内玩"<<endl; 
    	}else{ //不符合走else 
    		cout<<"今天天气状况" <<weather<<"在室外玩"<<endl; 
    	} 
    	//程序执行结束. 
    	cout<< "end..." << endl; 
    	return 0 ;
    } 
    

1.3.1 案例1:考试成绩

  1. 通过上述案例,使用if-esle结构完成案例分析,找出关键条件。
    • 妈妈承诺,如果小明语文成绩大于90,或者 数学成绩大于80,给买游戏机,否则好好学习。
    • 提示:参考 配合第三节的 逻辑运算符使用。
    #include <iostream>
    using namespace std;
    int main(){
    	/*1.考试成绩.语文成绩大于90 
    				 数学成绩大于80 
    			或者条件 || 
    			否则
    				就需要好好学习. 
    	*/
    	double Chinese;  //语文 
    	double Maths;  //数学 
    	cout<<"请输入语文考试成绩:"<<endl;
    	cin>>Chinese;  
    	cout<<"请输入数学考试成绩:"<<endl;
    	cin>>Maths; 
    	if (Chinese>=90||Maths>=80){ 
    		cout<< "买游戏机" <<endl; 
    	} else{
    		cout<< "好好学习,下次努力"<<endl; 
    	} 
    	return 0;
    } 
    
  • 如果要是 并且 的条件呢 ?

1.3.2 案例2:判断闰年

  1. 什么是闰年 ? 需要搞清楚这样的一个事情 。
    • 涉及到一个普通闰年,是4的倍数,但不是100的倍数, 例如2008 。
    • 世纪闰年,是400的倍数。 例如:2000年。
    #include <iostream>
    using namespace std;
    
    int main(){
    	/*1.判断闰年 
    			普通闰年, 能被4整除,不能被400整除.
    			世纪润年, 能被400整除  
    	*/
    	int year; 
    	cout<<"请输入年份"<<endl;
    	cin >> year;
    	//判断是否闰年 需要满足条件
    	if(year%4==0&&year%400!=0||year%400==0){
    		cout<< "是闰年" <<endl; 
    	}else{
    		cout<< "不是闰年" <<endl; 
    	} 	
    	return 0; 
    } 
    

1.3.3 案例3:判断三角形

  1. 三角形的三条边,a,b,c的值,判断是否构成三角形,若构成三角形,求三角形面积。

    • 三角形构成定理,三角形三边满足任意两边之和大于第三边的条件。
    • 思考一下,怎么思考问题和分析 ,有几种方式?
    #include <iostream>
    using namespace std;
    
    int main(){
    	//三角形定义规则,两边之和大于一定第三边. 
    	int a;
    	int b;
    	int c;
    	
    	cout<<"请依次输入三个边的值: "<<endl;
    	
    	cin >>a;
    	cin >>b;
    	cin >>c;
    	//判断三角形,核心定理两边之和大于第三边. 
    	if ((a+b)>c && (a+c)>b && (b+c)>a) {
    		cout<<"三角形的面积: "<<a*b*c<< endl;  
    	}else{
    		
    		cout<<"不符合条件"<<endl; 
    	} 
    	
    	return 0; 
    } 
    
    • 另一种思维方式,反向思考方法,小于等于都不符合情况。
    // 下述为代码片段
    	if((a+b)<=c || (a+c)<=b || (b+c)<=a) {
    		cout<<"不符合条件"<<endl; 
    	}else{
    		cout<<"三角形面积"<<a*b*c<<endl; 
    	} 
    	return 0; 
    

1.4. 多分支结构

1.4.1 语法结构

  1. 多分支语法结构,如下:

    • 逐步判断,看哪个条件符合。
    • 最后的 else ,根据情况,可以省略。
    	if(判断条件){
    		执行语句体			
    	} else if(判断条件){
    		执行语句体
    	} else if (判断条件){
    		执行语句体
    	} ...
    		
    	else{
    		执行语句体
    	} 
    
  2. 思考一下,else if 的顺序可以调换么?

1.4.2 案例:成绩区间使用

  1. 如果判断成绩区间使用,就需要使用多分支情况。

    • 输入一个成绩: 判断分数段,所给出评级。
      • 90 ~100 评级 A
      • 80 ~ 89 评级 B
      • 70 ~ 79 评级 C
      • 60 ~ 69 评级 D
      • 0 ~ 59 评级 E
    • 思考使用 单分支if , 或者 if-else 结构 能否解决上述问题 ?
    #include <iostream>
    using namespace std;
    
    int main(){
    //		- 90 ~100 之间  评级 A
    //		- 80 ~ 89  之间  评级 B
    //		- 70 ~ 79  之间  评级 C
    //		- 60 ~ 69  之间  评级 D
    //		- 0 ~  59  评级 E
    	//使用if方式进行操作 
    	cout<<"请输入考试成绩:"<<endl;
    	int num; //定义num的值 
    	cin >> num;
    	//使用逻辑运算符控制范围 
    	if(num>=90 && num<=100){
    		cout<< "评级为: A"<<endl;
    	}else if (num>=80 && num<=89){
    		cout<< "评级为: B" <<endl;
    	}else if (num>=70 && num <=79){
    		cout<< "评级为: C" <<endl;
    	}else if (num>=60 && num <=69){
    		cout<< "评级为: D" <<endl;
    	}else{
    		cout<< "评级为: E" <<endl; 
    	}
    	return 0;
    } 
    
  2. 还有更简洁的代码实现么?

    • 边界值考虑。
    • 其中思考一个很重要的问题,下列else if顺序能调换么?
    #include <iostream>
    using namespace std;
    
    int  main(){
    	/**
    		- 90 ~100 之间  评级 A
    		- 80 ~ 89  之间  评级 B
    		- 70 ~ 79  之间  评级 C
    		- 60 ~ 69  之间  评级 D
    		- 0 ~  59        评级 E
    	*/
    	//对于边界值的思考.
    	cout << "请输入考试成绩: ";
    	int num;
    	cin >> num; 
    	if(num>=90){
    		cout << "评级为A" << endl;
    	}else if (num>=80){
    		cout << "评级为B" << endl;
    	}else if (num>=70) {
    		cout << "评级为C" << endl;
    	}else if (num>=60){
    		cout << "评级为D" << endl;
    	}else {
    		cout << "评级为E" << endl;
    	} 
    	
    	return 0;
    }
    

1.5. 嵌套选择结构

1.5.1 如何嵌套

  1. 回想今日课堂所学内容, 选择结构的几种方式,都能根据不同的场景解决问题, 现在如果有以下场景怎么解决?

    • 游泳馆游泳,买票的人才能进入, 进入之后会根据男女分别今不同的更衣室,请设计该程序。
  2. 上述分析,结果就需要再判断中,在一次进行判断,这样就是嵌套结构。

    • 语法格式如下:
    if (){
    		//满足条件执行里面的分支结构
    		if (){
    		}else if (){
    			
    			...
    		}
    	} 
    
  3. 案例分析,使用嵌套结构设计程序。

    #include <iostream>
    using namespace std;
    
    int main(){
    	/**
    		 游泳馆游泳,买票的人才能进入, 
    		 进入之后会根据男女分别今不同的更衣室。
    	*/
    	//先分析结构
    	string ticket; 
    	string sex;
    	cout << "请问是否有票: "; 
    	cin>> ticket; 
    	if (ticket == "yes"){
    		cout<< "请根据性别选择浴室: ";
    		cin >>sex; 
    		if (sex=="男"){
    			cout<<"进男生"; 
    		}else if (sex =="女") {
    			cout<<"进女生";
    		}
    		//可以省略else
    		else{
    			cout<<"填写有误,请重新填写" ;
    		} 
    	} else{
    		cout<< "请先买票!"<<endl; 
    	} 
    	return 0;
    } 
    

1.5.2 案例 :上车找座位程序设计

  1. 日常做公交车,上车需要先买票,买票需要金额大于2元,然后根据是否有空座位进行,找到了就输出,有座位,没有找到,就输出没有座位。

    • 请分析上述需求,使用分支结构设程序。
    #include <iostream>
    using namespace std;
    
    int main(){
    	//1.上车买票需要金额大于2元
    	int money;
    	cout<< "请刷卡: ";
    	cin >>money;
    	
    	if (money>=2){
    		cout<<"欢迎上车,寻找座位中...有坐么?"<<endl;
    		int seat; 
    		cin>> seat;
    		if (seat>=1){
    			cout<<"有"<<seat<<"座位."<<endl; 
    		}else{
    			cout<<"没有座位,只能站着"<<endl; 
    		} 
    	}else{
    		cout<<"金额不够,请充值在乘坐"<<endl; 
    	} 
    	return 0; 
    } 
    

1.6. if 阶段编程测试

1.6.1 判断奇数和偶数

  1. 输入一个正整数,判断他是奇数还是偶数,并输出信息。

    • 什么是奇数?什么是偶数 ?
    #include <iostream>
    using namespace std;
    
    int main(){
    	//判断奇数还是偶数
    	cout<<"请数一个正整数:";
    	int num; 
    	cin>> num;
    	//逻辑分析,什么是奇数?什么是偶数? 
    	if (num%2==0){
    		cout<<"偶数"<<endl; 
    	}else{
    		cout<<"奇数"<<endl; 
    	} 
    	return 0; 
    } 
    

1.6.2 输入三个数,判断哪个数最大

  1. 输入三个数,输出其中最大的数。

    • 要求设置变量,使用max存放最大值。
    #include <iostream>
    using namespace std;
    
    int main(){
    	//输入三个数,使用max存放最大值.
    	int a,b,c,max;
    	cout<<"输入三个数: "<<endl;
    	cin>>a;
    	cin>>b;
    	cin>>c;
    	
    	if (a>=b&&a>=c){
    		max = a; 
    	} else if (b>=c&&b>=a){
    		max = b; 
    	} else if (c>=a&&c>=b){
    		max = c; 
    	} 
    	//else 可以省略 
    	cout <<"最大值为"<<max<<endl; 
    	return 0; 
    } 
    

1.6.3 商场购物哪家划算

  1. 商场购物,口渴想买可乐,可乐正常价格3元,家乐福打折88折,沃尔玛优惠政策“买8送一个”。

    • 从控制台输入数量,到底买哪家合适 ?
    #include <iostream>
    using namespace std;
    
    int main(){
    	 同样买num个可乐,哪个合适 ? 
    	1.家乐福实际花钱, a_money  =  num * 0.88 * 3          //每一个价格 
    	2.沃尔玛实际花钱, b_money  =  num * 3 - num*1/9 *3   //买8送一,用8个钱买9个 
    	int num;
    	cout<<"请输入买的个数"<<endl;
    	cin >> num;
    	//3. 在逻辑核心代码 
    	int a_money  =  num * 0.88 * 3;
    	int b_money  =  num * 3 - num*1/9 *3;  
    	if (b_money < a_money){
    		cout<<"沃尔玛好"<<endl; 
    	} else {
    		cout<<"家乐福好"<<endl; 
    	} 
    	return 0; 
    } 
    

1.6.4 快递业务计费

  1. 某快递业务 收费标准, 1kg以内收费13元, 之后超过1kg部分每400g加收3元, 请根据收费标准,设计出相应程序。

    • 输入重量计算金额。
    • 提示主要在于额外费用计算, 例如, 1200即使每超过
    #include <iostream> 
    using namespace std;
    
    int main(){
    	//1.创建重量变量
    	int weight; //单位是克. 
    	int money=13; //基础费用13元 
    	cout<<"请输入重量"<< endl; 
    	cin >> weight;
    	//2.逻辑计算1000g以内13元,每超出400g的部分加收3元 
    	if (weight<=1000 && weight>=0) {
    		cout<<"快递的费用"<<money<<endl; 
    	}else if(weight>1000){
    		//处理费用逻辑,超出的部分钱数 
    		int extraWeight = weight - 1000;
    		//核心代码,根据重量计算,不足400的按照3元收费 
            int extraMoney = (extraWeight + 400) / 400 * 3; 
            int cash = money + extraMoney;
            cout << "总价格" << cash << "元" << endl;
    	} 
    	return 0;
    }
    
    

1.7. 扩展: 三元运算符

1.7.1 语法结构

  1. 为了简化选择结构的判断。
    • 语法格式如下:<表达式1> ? <表达式2> : <表达式3 >
    • 注意事项就是,返回表达式的类型与接受类型一致。
	// <表达式1> ? <表达式2> : <表达式3 >
	//表达式结果为true 即正确, 就执行表达式2的结果,反之就执行表3的结果.
	#include <iostream>
	using namespace std;
	int main(){
		int a = 5;
		int b =10;
		//逻辑计算结果,返回类型与接受类型一致。
		string res =  a>b  ? "a值大" : "b值大"; 
		cout << res <<endl; 	
		return 0; 
} 
	
	
	

1.7.2 案例: 判断奇偶数

  1. 三元运算符的目的,就是简化使用分支结构的语法形式,但是只能在简单的情况下进行减少代码的优化。
    • 使用if esle
    #include <iostream>
    using namespace std;
    
    int main(){
    	//1. 三元运算符测试奇偶数
    	int a;
    	cout<< "请输入一个数: "<<endl;
    	cin >> a; 
    	// 表达式1?表达式2:表达式3;
    	string res = a%2==0 ?"偶数":"奇数";
    	cout<< "结果: " << res << endl; 
    	return 0;
    } 
    

2. switch 选择结构

2.1 概述

  1. 既然有if 选择结构了为什么还需要switch结构?
    • 使用switch语句的主要目的是提供一种结构清晰、执行效率高的多分支选择方案。
    • 当条件表达式的取值是有限且确定的时候,使用switch语句能够更简洁地编写代码,也更易于阅读和维护。
    • 同时,由于switch语句的实现原理是使用跳转表来查找执行位置,所以在某些情况下执行效率会比if语句高。
  2. 但是不适合switch的情况,如果条件表达式的取值范围较广或者需要进行复杂的条件判断时,if语句通常会更加灵活和合适。

2.2 语法结构

  1. switch语法结构,基本格式如下:

    • switch(expression) 中的类型只能是 整型 或者 字符型
    • 注意,每一个表达式结束都要接一个冒号。
    • expression和 表达式必须同一种类型。
    switch(expression){
    		case 表达式1:
    			//语法表达式
    			break; 
    		case 表达式2:
    			//语法表达式
    			break; 
    		...
    		default:
    			//执行语句 
    		
    	} 
    	
    
    • 流程图如下:
      在这里插入图片描述
  2. 案例使用

    • 手机拨打快捷键设置。
#include <iostream>
using namespace std;

int main(){
	//switch语法结构
	int num;
	cout<<"请输入快捷键: "<< endl; 
 	cin >> num; 
	switch(num){
		case 1:
			cout<<"给警察打电话"<<endl;
			break;
		case 2:
			 cout<<"给医生打电话"<<endl;
			break;
		case 3:
			cout<<"给救火员打电话"<<endl; 
			break;
		default:
			cout<<"重新输入快捷键"<<endl; 
			break; 
	} 

	return 0;
} 

2.3 switch 常见问题

  1. 思考几个问题?
    • case 的顺序可以变换么?
    • default可以省略么?或者位置可以发生变化么?
    • break可以不加么?
  2. 思考过后上述情况会产生一个现象叫做 “穿透现象”

2.4 练习案例:设计计算器

  1. 使用 switch结构, 设计,计算器功能, 任意输入两个数,根据输入的选择计算的符号,计算结果。
    • 思考一下使用 if 结构能 解决这样的问题么?
    • 如果是字符型,不能使用双引号" ",需要使用单引号 ' '
#include <iostream>
using namespace std;

int main(){
	
	/**
	1. 输入任意的两个数.
	2. 输入符号, +  - * /  % 
	3. 考虑分母不能为0的时候.
	*/
	//定义变量 
	
	char n;
	int num_1;
	int num_2;
	//定义计算结果
	int total_num; 
	//2.使用键盘输入 
	cout<<"请输入第一个数 "; 
 	cin >> num_1; 
 	cout<<"请输入第二个数 "; 
 	cin >> num_2; 
 	cout <<"请输入符号 + - * / %:  ";
	cin >> n ;
	
	
	//定义一个标志符号
	int flag; 
	switch(n){
		// 只接收整型,或者字符型 ,字符型 
		// 字符型 一定要使用 单引号 '' 双引号会被误认为字符串"" 
		case '+':
			total_num=num_1+num_2;
			break;
		case '-':
			if(num_1>=num_2){
				total_num=num_1-num_2;
			}else{
				total_num=num_2-num_1;
			}
			break;
		case '*':
			total_num=num_1*num_2;
			break;
		case '/':
			if(num_2!=0){
				total_num=num_1/num_2;
			}else{
				flag=2; //标志符号 
			}
			break;
		case '%':
			if(num_2!=0){
				total_num=num_1 % num_2;
			}else{
			//cout<<"分母不能为0"<<endl; 
				flag=2; //标志符号 
			}
			break;
			 
		default:
			cout<<"请重新输入正确的符号"<<endl; 
			break; 
	} 
	//根据情况输出结果
	if(flag==1) {
			cout<<"计算结果是: "<< total_num <<endl; 
	}else{
			cout<<"分母不能为0"<<endl; 
	} 

	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VIT Swin Transformer

VIT&#xff1a;https://blog.csdn.net/qq_37541097/article/details/118242600 Swin Transform&#xff1a;https://blog.csdn.net/qq_37541097/article/details/121119988 一、VIT 模型由三个模块组成&#xff1a; Linear Projection of Flattened Patches(Embedding层) Tran…

linux服务TCP参数配置

Linux TCP参数配置 阿里云规范 1.【推荐】高并发服务器建议调小 TCP 协议的 time_wait 超时时间。 说明&#xff1a;操作系统默认 240 秒后&#xff0c;才会关闭处于 time_wait 状态的连接&#xff0c;在高并发访问下&#xff0c;服务器端会因为处于 time_wait 的连接数太多&am…

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代&#xff0c;数据要素产业链的各细分领域均蕴含机遇&#xff0c;图技术作为网络协同和数据智能的底层发动机&#xff0c;将深度掘金数字中国价值潜能”。 8月22日&#xff0c;在2023中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会的信息技术…

构建 NodeJS 影院预订微服务并使用 docker 部署(04/4)

一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 我们前几章的快速回顾 第一篇文章介绍了微服务架构模式&#xff0c;并讨论了使用微服务的优缺点。第二篇…

L1-033 出生年 测试点全过

题目 以上是新浪微博中一奇葩贴&#xff1a;“我出生于1988年&#xff0c;直到25岁才遇到4个数字都不相同的年份。”也就是说&#xff0c;直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求&#xff0c;自动填充“我出生于y年&#xff0c;直到x岁才遇到n个数字都不…

汽车制造业外发文件时 如何阻断泄密风险?

汽车制造业是我国国民经济发展的支柱产业之一&#xff0c;具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长&#xff0c;关联度高&#xff0c;汽车制造上游行业主要为钢铁、化工…

VScode中写Verilog时,iverilog语法自动纠错功能不起作用

VScode中编写Verilog时&#xff0c;iverilog语法自动纠错功能不起作用 问题&#xff1a;按照教程搭建vscode下Verilog编译环境&#xff0c;发现语法纠错功能一直无效&#xff0c;检查了扩展Verilog-HDL/SystemVerilog/Bluespec SystemVerilog的配置也没有任何问题。 错误原因&a…

【前端从0开始】JavaSript——Array对象

Array对象 导语&#xff1a;页面中的数据&#xff0c;都是从数据库读取出来的&#xff0c;如果返回的数据多&#xff0c;一般情况下会以数组或者对象的形式来进行返回&#xff0c;如果想要删除或者添加数据&#xff0c;就可以使用数组中的方法 如图所示&#xff0c;我们可以通…

RE:从零开始的车载Android HMI(四) - 收音机刻度尺

最近比较忙&#xff0c;研究复杂的东西需要大量集中的时间&#xff0c;但是又抽不出来&#xff0c;就写点简单的东西吧。车载应用开发中有一个几乎避不开的自定义View&#xff0c;就是收音机的刻度条。本篇文章我们来研究如何绘制一个收音机的刻度尺。 本系列文章的目的是在讲…

单核cpu是怎么处理多线程的

首先&#xff0c;要先了解几个概念&#xff1a; 1、线程是CPU调度和分配的基本单位。 2、进程是操作系统进行资源分配&#xff08;包括cpu、内存、磁盘IO等&#xff09;的最小单位 。 3、一个进程可以包括多个线程。 4、CPU的时间片是由计算机的操作系统OS里的调度器分配的. …

UGUI可视化组件TextMeshPro

一.官方的介绍 TextMeshPro 是 Unity 的最终文本解决方案。它是 Unity UI Text 和旧版 Text Mesh 的完美替代方案。 功能强大且易于使用的 TextMeshPro&#xff08;也称为 TMP&#xff09;使用高级文本渲染技巧以及一组自定义着色器&#xff1b;它大幅改进了视觉质量&#xff…

C++快速回顾(四)

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。C/C是音视频必…

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

作者&#xff1a;草谷 前言 微服务引擎 MSE 全新发布&#xff01;新版本带来了一系列令人振奋的特性和改进&#xff0c;让您更轻松、高效地构建和管理微服务应用程序。从快速入门到迁移优化&#xff0c;MSE 为开发人员提供了全方位的支持和解决方案。无论您是刚刚接触微服务还…

二叉树中的最大路径和-递归

路径 被定义为一条从树中任意节点出发&#xff0c;沿父节点-子节点连接&#xff0c;达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

缓存最佳实践

目录 前言 一、Cache Aside&#xff08;旁路缓存&#xff09;策略 二、不一致解决场景及解决方案 一、数据库主从不一致 二、缓存与数据库不一致 三、问题分析 三、缓存误用 一、多服务共用缓存实例 二、调用方缓存数据 三、缓存作为服务与服务之间传递数据的媒介 四…

如何通过tomcat下载映射下载文件

1.1找到tomcat服务器中server.xml文件 !--doBase是静态资源路径位置&#xff0c; path作用相当于设置的key, doBase作用相当于value --> <Context path"/download" docBase"E:\testBackData"></Context>1.2 找到tomcat服务器中web.xml文…

Android JNI系列详解之CMake编译工具的使用

一、CMake工具的介绍 如图所示&#xff0c;CMake工具的主要作用是&#xff0c;将C/C编写的native源文件编译打包生成库文件&#xff08;包含动态库或者静态库文件&#xff09;&#xff0c;集成到Android中使用。 二、CMake编译工具的使用 使用主要是配置两个文件&#xff1a;CM…

漏洞扫描和漏洞评估

进行漏洞扫描和漏洞评估是确保系统和应用程序安全性的重要步骤。 下面是一个详细的步骤指南&#xff0c;说明如何进行漏洞扫描和漏洞评估。 步骤&#xff1a; 信息收集&#xff1a; 在开始漏洞扫描之前&#xff0c;收集有关目标系统和应用程序的信息&#xff0c;包括IP地址、…

Hugo托管到Github Pages

Github通过其Github Pages服务可以user、project或organization提供免费快速的静态托管&#xff0c;同时使用Github Actions自动化开发工作流和构建。 1.创建Github仓库 可见性为public。 命名为username.github.io&#xff0c;username为你的Github用户名。 2.添加远程仓库…

Unity 之 Time.deltaTime 的详细介绍以及用法

文章目录 Time.deltaTime 是什么&#xff1f;Time.deltaTime 有什么用&#xff1f;移动游戏对象&#xff1a;控制动画播放速度&#xff1a;实现平滑的计时器和延时&#xff1a; Time.deltaTime 是什么&#xff1f; “DeltaTime”&#xff08;也被称为 “Delta Time”&#xff…