c语言——语句

C语⾔有九种控制语句可分为以下三类:

一. 条件判断语句也叫分⽀语句:if语句、switch语句;

1. if语句

 if 语句的语法形式如下:
 
 if ( 表达式)
     语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不
是0,则语句执⾏

2.if...else... 语句 

if ( 表达式 )
    语句

 else
    语句

3.嵌套if 

 #include <stdio.h>
 int main()
 {
 int num = 0;
 scanf("%d", &num);
if(num > 0)
 {
 if(num%2== 0)
printf("偶数\n");
 else
  printf( "奇数\n" );
}
else
 printf("⾮正数\n");
 }
 return 0;
 }

记住这样⼀条规则, else 总是跟最接近的 if 匹配 

什么也不输出,这就是悬空 else 的问题,如果有多个 的 if 匹配。 可以记住这样⼀条规则, else 总是跟最接近 if匹配的,if else是一条语句

4.switch 语句

switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式

#include <stdio.h>
 int main()
 {
 int n = 0;
 scanf("%d", &n);
 switch(n % 3){
 case 0:printf("整除,余数为0\n");  
case 1: printf("余数是1\n");       
case 2: printf("余数是2\n");       
}
 return 0;
 }

注意:

1. case 和后边的数字之间必须有空格

2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个 switch 语句。

switch 后面必须是整型表达式

case 后的值,必须是整形常量表达式 

switch语句中的default:前面的case子句都不执行时执行default

switch语句中的case和default的顺序问题

在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?其实,在 switch 语句中  case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。

二. 循环执⾏语句:do while语句、while语句、for语句;

while循环(先判断再执行)

for循环(先判断再执行)

for(表达式1; 表达式2; 表达式3);
语句;//如果循环体想包含更多的语句,可以加上⼤括号
 

表达式1⽤于循环变量的初始化

表达式2⽤于循环结束条件的判断

表达式3⽤于循环变量的调整

do-while 循环(先执行再判断)

do
语句;
 while(表达式);

循环的嵌套 

例:找出100~200之间的素数,并打印在屏幕上

#include<stdio.h>
#include<math.h>
int main() {
	int i = 0;
	bool temp;

	for (i = 101;i < 200;i += 2) {
		temp = true;
		for (int j = 2;j < sqrt(i);j++) {
			if (i % j == 0) {
				temp = false;
				break;
			}
		}

		if (temp == true)
			printf("%d ", i);
	}
	printf("\n");
	return 0;
}

三. 转向语句:break语句、goto语句、continue语句、return语句

• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执 ⾏。 • continue 的作⽤是跳过本次循环中continue 后边的代码,在 for 循环和 while 循环中有 所差异的。

goto语句

for(...)
 {
     for(...)
     {
         for(...)
         {
           if(disaster)
            goto error;
         }
     }
 }
 error:
 //...

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤。

内容概要:本文介绍了一个基于多传感器融合的定位系统设计方案,采用GPS、里程计和电子罗盘作为定位传感器,利用扩展卡尔曼滤波(EKF)算法对多源传感器数据进行融合处理,最终输出目标的滤波后位置信息,并提供了完整的Matlab代码实现。该方法有效提升了定位精度与稳定性,尤其适用于存在单一传感器误差或信号丢失的复杂环境,如自动驾驶、移动采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)机器人导航等领域。文中详细阐述了各传感器的数据建模方式、状态转移与观测方程构建,以及EKF算法的具体实现步骤,具有较强的工程实践价值。; 适合人群:具备一定Matlab编程基础,熟悉传感器原理和滤波算法的高校研究生、科研人员及从事自动驾驶、机器人导航等相关领域的工程技术人员。; 使用场景及目标:①学习和掌握多传感器融合的基本理论与实现方法;②应用于移动机器人、无人车、无人机等系统的高精度定位与导航开发;③作为EKF算法在实际工程中应用的教学案例或项目参考; 阅读建议:建议读者结合Matlab代码逐行理解算法实现过程,重点关注状态预测与观测更新模块的设计逻辑,可尝试引入真实传感器数据或仿真噪声环境以验证算法鲁棒性,并进一步拓展至UKF、PF等更高级滤波算法的研究与对比。
内容概要:文章围绕智能汽车新一代传感器的发展趋势,重点阐述了BEV(鸟瞰图视角)端到端感知融合架构如何成为智能驾驶感知系统的新范式。传统后融合与前融合方案因信息丢失或算力需求过高难以满足高阶智驾需求,而基于Transformer的BEV融合方案通过统一坐标系下的多源传感器特征融合,在保证感知精度的同时兼顾算力可行性,显著提升复杂场景下的鲁棒性与系统可靠性。此外,文章指出BEV模型落地面临大算力依赖与高数据成本的挑战,提出“数据采集-模型训练-算法迭代-数据反哺”的高效数据闭环体系,通过自动化标注与长尾数据反馈实现算法持续进化,降低对人工标注的依赖,提升数据利用效率。典型企业案例进一步验证了该路径的技术可行性与经济价值。; 适合人群:从事汽车电子、智能驾驶感知算法研发的工程师,以及关注自动驾驶技术趋势的产品经理和技术管理者;具备一定自动驾驶基础知识,希望深入了解BEV架构与数据闭环机制的专业人士。; 使用场景及目标:①理解BEV+Transformer为何成为当前感知融合的主流技术路线;②掌握数据闭环在BEV模型迭代中的关键作用及其工程实现逻辑;③为智能驾驶系统架构设计、传感器选型与算法优化提供决策参考; 阅读建议:本文侧重技术趋势分析与系统级思考,建议结合实际项目背景阅读,重点关注BEV融合逻辑与数据闭环构建方法,并可延伸研究相关企业在舱泊一体等场景的应用实践。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值