C语言分支与循环语句(1)

本文详细介绍了C语言中的控制语句,包括if条件判断语句的三种结构,switch语句的使用,以及while和for循环语句的执行原理和示例。通过实例代码解析了各种语句的执行流程,帮助读者理解C语言的程序控制结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

C语言是一门结构化的设计语言,具体分为顺序结构,选择结构,循环结构

什么是语句

C语言语句可分为五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
本章主要介绍的是控制语句
控制语句:用于控制程序的执行流程,以实现程序的各种结构方式,C语言的三种结构由特定的语句定义符组成,C语言有9种控制语句。
可分为三类:
1.条件判断语句也叫分支语句:if语句,switch语句。
2.循环执行语句:do while语句,while语句,for语句。
3.转向语句:break语句,goto语句,continue语句,return语句。

分支语句

if语句

if语句是一种条件判断语句,if有三种语法结构:

if(表达式)//第一种
  语句;
if(表达式)//第二种
  语句1;
else
  语句2;
if(表达式1)//第三种
  语句1;
else if(表达式2)
  语句2;
else
  语句3;

第一种结构

第一种结构只用于1次判断

if(表达式)//第一种
  语句;

第一种结构表示若条件满足表达式则执行语句。
代码示例:

#include<stdio.h>
int main()
{
	int age = 18;
	if(age>=18)
		printf("你已成年");
	return 0;
}

在这里插入图片描述
若age<18则此程序不会有结果,如图所示
在这里插入图片描述
PS:若if,else,else if语句是一段代码块则语句部分需要加花括号,否则程序可能报错。
代码样例:

#include<stdio.h>
int main()
{
	int age = 18;
	if(age>=18)
	{
		printf("你已成年");
		printf("可以适量饮酒");
	}
	return 0;
}

第二种结构

第二种结构只用于2次判断

if(表达式)//第二种
  语句1;
else
  语句2;

第二种结构是若满足表达式则执行语句1,若不满足则执行语句2,代码示例如下:

#include<stdio.h>
int main()
{
	int age = 16;
	if(age>=18)
		printf("你已成年");
	else
	    printf("你未成年");
	return 0;
}

在这里插入图片描述
如果age>=18则会出现
在这里插入图片描述

第三种结构

第三种结构用于多次判断(判断表达式>=3)

if(表达式1)//第三种
  语句1;
else if(表达式2)
  语句2;
else
  语句3;

若满足表达式1则执行语句1,满足表达式2则执行语句2,若两个表达式都不满足则执行语句3
代码示例:

#include <stdio.h>
int main()
{
	int age;
	scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else if (age >= 18 && age <= 30)
		printf("青年\n");
	else if (age >= 31 && age <= 45)
		printf("中年\n");
	else if (age >= 46 && age <= 60)
		printf("壮年\n");
	else if (age >= 61 && age < 90)
		printf("老年\n ");
	else
		printf("老寿星\n");
	return 0;
}

在这里插入图片描述
在这里插入图片描述

悬空else

代码示例:

#include <stdio.h>
int main()
{
		int a = 0; 
		int b = 2; 
		if (a == 1)
			if (b == 2)
				printf("hehe\n");
		else
				printf("haha\n"); return 0;

}

在这里插入图片描述
如上图所示else与if搭配的原则为就近原则else会与离他最近的那个if搭配。

switch语句

switch只有一种结构:

switch(n)
{
case 1:语句1;
  break;
case 2:语句2;
  break;
...
case n:语句n;
  break;
default:语句n+1;
  break;
}

n只能是整形表达式,case后必须是整形常量表达式首先一定是整形而且一定是常量,不能是变量,就算是有const修饰的也不行,如const int a;,a归根到底也只是一个不可改变的变量并不是常量。break语句可根据程序目的选择添加与否,default也可根据具体情况选择加与不加,default的作用是如果default前面的case条件都不满足那么最后会执行default语句,其作用类似于if…else…中的else。
代码样例:

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)//整型表达式
	{
	case 1: // case后必须是整型常量表达式
		printf("星期1\n"); break;
	case 2:
		printf("星期2\n"); break;
	case 3:
		printf("星期3\n"); break;
	case 4:
		printf("星期4\n"); break;
	case 5:
		printf("星期5\n"); break;
	case 6:
		printf("星期6\n"); break;
	case 7:
		printf("星期天\n"); break;
	}
}

在这里插入图片描述
若不加break,代码样例如下:
在这里插入图片描述
同样的输入若不加break,那么程序会一直执行到底。

循环语句

循环语句分为for,while,do…while三种语句

while语句

while(表达式)
  循环语句;//若循环语句是代码块则需要加花括号

若满足while的表达式则会重复执行循环语句直到不满足while的表达式为止。
代码样例:

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d\n", i);
		i++;
	}
}

在这里插入图片描述
若永远满足while的表达式则称为死循环例如whil(1),有兴趣的童鞋可以自己敲一下代码试试。

for语句

for(表达式1;表达式2;表达式3)
   循环语句;

表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
代码样例:

#include <stdio.h>
int main()
{
	int i;
	for (i = 0; i < 10; i++)
	{
		printf("%d\n", i);
	}
	return 0;
}

在这里插入图片描述
for语句中的三个表达式都可以省略,甚至可以都省略,至于是否省略其中1到2个表达式或者全部省略要看具体需求。另外最好不要在for 循环体内修改循环变量,防止 for 循环失去控制。另一个建议是for语句的循环控制变量的取值采用“前闭后开区间”写法,如for(i=0;i<10;i++),而不是for(i=0;i<=9;i++),第一个for语句变量的前闭后开区间写法是一种良好的编程习惯在后期C语言学习中长用,当然具体怎么写也要结合编程要求。

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是个基于51系列单片机(种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是款集成三轴加速度计三轴陀螺仪的六自由度传感器,广泛应用于运动控制姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性角速度。文件名“51-DMP-NET”可能表示这是51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值