嵌入式☞第二组(壹)

news2024/11/17 7:47:53

C语言基础:

循环的构成:

  • 循环体

  • 循环条件

循环的分类:

  • 无限循环:程序设计中尽量避免无限循环。(程序中的无限循环必须可控)

  • 有限循环:循环限定循环次数或者循环的条件。

当型循环的实现:

while

语法

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

说明:

1.循环条件的返回值必须为布尔类型,在C语言中,布尔类型为真使用非0表示,布尔类型为假使用0表示。

2.{}包起来的内容为循环体。

3.我们要在循环体中控制循环条件的变化,否则会产生死循环。

执行过程:
在这里插入图片描述

特点:

先判断,后执行,循环体语句有可能一次也不执行。

案例1:

/*
	需求:while循环案例
*/
#include <stdio.h>

int main()
{
	//定义一个变量,保存累加和
	int sum = 0;
	//定义一个循环变量
	int i = 1;
	
	while(i <= 100)//循环条件,可以有关系表达式、逻辑表达式,表达式运算结果是boolean(1;0)类型
	{	//计算
		sum += i;
		//给循环变量赋值,用来影响循环条件
		i++;
	}
	
	printf("1-->100的累加和是:%d\n",sum);
	
	return 0;
	
}

案例2:

//while计算1~100之间的偶数和
#include <stdio.h>

int main()
{	//创建变量,存放累加和
	int sum = 0;
	//创建循环变量
	int i = 2;
	
	while(i <= 100)
	{
		//排除奇数
		if(i % 2 == 0)//表示被2整除,说明为偶数
		{
			sum += i;
		}
			i++;//改变循环变量的值
	}	
	printf("1~100偶数的累加和是:%d",sum);
	
	return 0;
	
}

死循环

while(1) // 我们会在死循环进行必要的限制

for

语法:

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

说明:

  1. () 中可以只保留两个分号 😉

  2. ① 是循环变量,我们需要赋初值,循环变量可以是列表,多个循环变量使用逗号分隔,举例: int i=0,j=0

  3. ② 是循环条件,用来限制循环的次数,循环条件支持关系表达式,如果加入逻辑表达式,会变成

复合表达式,举例: i < 10 && j < 10

  1. ③ 改变循环条件,支持列表,这里可以使用赋值表达式,举例: i++,j++
  2. 执行顺序:①②④③ --> ②④③ --> ②④③ … --> ②,这里①只执行1次。

执行过程:

在这里插入图片描述

特点:

先判断,后执行,循环体语句有可能一次都不执行。

案例:

/**
* 需求:for循环案例-求1~100之间的偶数和
*/
#include <stdio.h>
// while实现
void while_test()
{
int sum = 0;
int i = 1;
while(i <= 100)
{
if(i % 2 == 0)
{
sum += i;
}
i++;
}
printf("while实现:1~100之间的偶数和:%d\n",sum);
}
// for实现
void for_test()
{
int sum = 0;
for(int i = 1;i <= 100;i++) // 死循环表示:while(1)、for(;;)
{
if(i % 2 == 0)
{
sum += i;
}
}
printf("for实现:1~100之间的偶数和:%d\n",sum);
}
int main()
{
while_test();
for_test();
return 0;
}

案例:

//需求:for案例用户可通过键盘录入一个整数n用来作为阶乘的最高位数
#include <stdio.h>
#include <math.h>

int main()
{
	int n = 1;//接受控制台输入,作为阶乘最高位
	int r = 1;//用来接收计算结果
	printf("请输入一个整数:\n");
	scanf("%d",&n);
	
	//循环实现阶乘
	for(int i = 1;i <= fabs(n);i++)
	{
		r *= i;
	}
	
	printf("1~%d之间的阶乘的结果是%d\n",n,r);
	
	return 0;
	
}

总结

  • for语句使用语法规则上,降低/避免因为忘记循环条件更新操作,而引起的产生无限循环的几率。

  • 应用场合:for语句往往应用于循环次数事先可以确定的场景。

死循环:

for(表达式1;;表达式3);
for(;;);

循环实现的三要素:

  • 循环变量初始化

  • 循环条件

  • 循环变量更新

案例:

/*
需求:for案例-求Fibonacci数列前20个数。
*/
#include <stdio.h>
int main()
{
	int f1 = 1;// 前一个数,默认是1,因为第1个是1
	int f2 = 1;// 后一个数,默认是1,因为第2个是1
	int i = 1;// 循环变量
	for(;i <= 20;i++)
	{
	printf("%12d%12d",f1,f2);
	// 一行显示两个数,每两个换一行
	if(i % 2 == 0)
	{
	printf("\n");
	}
	f1 = f1 + f2; // f1 = 2 = 1+1
	f2 = f2 + f1; // f2 = 3 = 1+2
	}
	return 0;
}

直到型循环的实现:

do…while

语法:

do
{
循环体;
} while(循环条件);

说明:

  1. 循环条件的返回值必须是布尔类型,在C语言中,布尔类型为真使用 非0 来表示,布尔类型为假使

0 表示。

  1. {} 包起来的内容整体称之为为 循环体
  2. 我们要在 循环体 中控制 循环条件 的变化,否则会产生死循环。

执行过程;

在这里插入图片描述

特点:

先执行,后判断,循环体语句至少执行一次。

案例:

//do..while案例:求1~100之内的奇数累加和
#include <stdio.h>

int main()
{	
	//创建一个变量,用来存储累加和
	int sum = 0;
	//创建循环变量,默认值1
	int i = 1;
	
	do
	{
		//判断i是否是奇数
		if(i % 2 != 0)
		{
			sum += i;
		}
		i++;//改变循环变量的值
	}while(i <= 100);
	
	printf("1~100之间的奇数的累加和是:%d\n",sum);
	
	
	
	return 0;
}

循环的嵌套:

3种循环(while、do……while、for)可以互相嵌套。在前一个循环结构的内部又存在一个完整的循环

结构,如:

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

案例

/**
* 需求:嵌套for循环案例-求100~200之间的所有素数
*/
#include <stdio.h>
int main()
{
	int num = 100;// 存放100~200之间的自然数
	int i = 2;// 循环变量,默认从2开始,因为自然数除以1没有意义 102,100~102, 102%100,102%101
	int isPrime = 1;// 用来记录1~自身之间能整除的次数 6, 2~5, 6%2,6%3,6%4,6%5
	// 第1层for循环:生成100~200之间的自然数
	for(;num <= 200; num++)
	{
	// 默认是素数
	isPrime = 1;
	// 第2层循环,生成 2~自身-1的自然数,用于和自身校验,是否能够整除,如果有1个能被整除,就说明不是素数
	for(i = 2; i < num -1; i++)
	{
	if(num % i == 0)
	{
	isPrime = 0;// 不是素数
	}
	}
	if(isPrime) // 条件判断:isPrime == 1 缩写 isPrime
	{
	printf("%d ",num);
	}
	}
	printf("\n");
	return 0;
}

循环结构的典型应用场景

  • 求累和:举例1+2+3+4+..+100的和
  • 求累乘:举例1* 2 * 3 * 4 *100的积
  • 求均值:举例(1+3+4+5+..100)/100
  • 求极值:举例:12,34,55,2,66中的最大值域或最小值
  • 元素遍历:常用于数组元素的遍历,比如:从【1,2,3,4,5】获取每一个元素

基础算法模型

1.累加和

  • 定义一个变量(sum),并赋初值为0;
  • 使用变量累加(+=)每一个数据项(i)
  • 当访问每一个数据项,此时该变量的取值是累加和的结果。

2.累乘

  • 定义一个变量,并赋初值1;
  • 用该变量累乘(*=)每一个数据项;
  • 当访问完一个数据项,此时该变量的取值就是累乘的结果。

3.极值【知识点:数组

  • 定义一个变量,并赋初值为第一个数据项。

  • 从第二个数据项开始,一次性与该变量进行比较,如果大于/小于该变量,则将当前数据项的数据赋值给该变量。

  • 当访问完每一个数据项,此时该变量的取值就是求极值的结果。

2,34,55,2,66`中的最大值域或最小值

  • 元素遍历:常用于数组元素的遍历,比如:从【1,2,3,4,5】获取每一个元素

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

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

相关文章

【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}

文章目录 1.没有索引存在的问题2. 认识磁盘MySQL与存储MySQL与磁盘交互基本单位建立共识图解IO认识索引 在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物…

初学Mybatis之缓存

所有的查询都需要连接数据库&#xff0c;而连接数据库消耗资源 我们可以把一次查询的结果暂时存在一个可以直接获取到的地方&#xff08;内存&#xff1a;缓存&#xff09; 我们再次查询相同数据的时候&#xff0c;直接走缓存&#xff0c;不走数据库 缓存&#xff1a;存在内…

3.5.1、查找和排序算法-算法介绍

算法特性 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。简单的说算法就是某个问题的解题思路&#xff0c;算法的五个重要特性如下&#xff1a; 有穷性。一个算法必须总是&#xff08;对任何合法的输入值…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十二章 设备树常用of函数

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

NAS变身云盘管理大师:群晖部署AList全攻略!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒🔑 AList功能简介🚀 快速部署📝 操作步骤🐳 Docker容器部署:灵活与强大📝 操作步骤📝 群晖部署🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在这个数字化时代,我们似乎都不可避免地拥有多个…

【数据结构】:大厂面试经典链表OJ题目详解

反转链表 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 思路解透 本题就是通过不停地将最先的 head 节点位置的后一位插到最前面&#xff0c;完成链表的反转 本题需要两个节点变量 cur&#xff1a;其任务就是定位到原 head 节点位置的前一位&#xff0c;然后将自己…

列表(list)—python

一、列表的定义方式 列表内的每一个数据称为元素&#xff0c;列表以[ ]作为标识&#xff0c;列表内的每个元素之间用逗号隔开。 列表的基本语法如下&#xff1a; #字面量 [元素1,元素2,元素3,元素4,……]#定义变量 变量名称[元素1,元素2,元素3,元素4,……]#定义空列表 变量名…

Linux的防火墙

一、防火墙概述 防火墙是一种计算机硬件和软件的结合&#xff0c;使internet和intranet之间建立一个安全网关&#xff08;Security Gateway&#xff09;&#xff0c;从而保护内网免受非法用户侵入的技术。 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。…

安防视频监控EasyCVR视频汇聚平台无法编辑设备通道信息的原因排查及解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

ECharts - 坐标轴刻度数值处理

写图表时&#xff0c;Y轴的数值过大&#xff0c;不太可能直接展示&#xff0c;这时候就得简写了&#xff0c;或者百分比展示的也要处理&#xff0c;如下图&#xff1a; yAxis: {type: value,// Y轴轴线axisLine: { show: false }, // 刻度线axisTick: { show: false },// 轴刻度…

ECharts实现按月统计和MTBF统计

一、数据准备 下表是小明最近一年的旅游记录 create_datecity_namecost_money2023-10-10 10:10:10北京14992023-11-11 11:11:11上海29992023-12-12 12:12:12上海19992024-01-24 12:12:12北京1232024-01-24 12:12:12上海2232024-02-24 12:12:12广州5642024-02-24 12:12:12北京…

学习笔记之Java篇(0729)

p 数组 大纲知识点数组的概念数组的定义、四个特点数组的常见操作普通遍历、for-each遍历、java.util.Array类用法多维数组多维数组的内存结构、存储表格、Javabean和数组存储表格常见算法冒泡排序基础算法、冒泡排序优化算法、二分法查找&#xff08;折半查找&#xff09; 1、…

【JavaWeb】Filter

基本使用 使用了过滤器之后&#xff0c;要想访问web服务器上的资源&#xff0c;必须先经过滤器&#xff0c;过滤器处理完毕之后&#xff0c;才可以访问对应的资源。过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;登录校验、统一编码处理、敏感字符处理等。 使用操…

nginx 子路径映射配置

如果子路径转发到另一个服务器IP&#xff0c;配置如下&#xff0c;注意都要以“/”结尾。 #指定nginx进程数 worker_processes 1; pcre_jit on;events {# 连接数上限worker_connections 30000; }#http服务 http {server {listen 20012;# 监听的端口号server_name localho…

Spring IoC DI(笔记)

一.了解SpringIoC&DI 1.1IoC 通过前面的学习,我们知道了Spring是一个开源框架,他让我们的开发更加简单.他支持广泛的应用场 景,有着活跃而庞大的社区,这也是Spring能够长久不衰的原因&#xff0c;但是这个概念相对来说,还是比较抽象&#xff0c;我们用一句更具体的话来概…

纯原创【车牌识别】基于图像处理的车牌识别——matlab项目实战(含GUI界面)详解

摘要 车牌识别系统乃计算机视觉与模式识别技术于智能交通领域的重要研究课题之一。其作用在于从复杂背景里提取运动中的汽车牌照&#xff0c;进而识别出车牌号码。车牌识别技术在高速公路电子收费、日常停车场管理以及交通违章监控等场景得到广泛运用。它的问世对于维护交通安全…

代码随想录二刷(链表章节)

代码随想录二刷(链表章节) 链表就是通过指针串联在一起的线性结构&#xff0c;每个节点都是由一个数据域和指针域(存放下一个节点的指针)。 双链表就是每个节点中既有指向前一个节点的&#xff0c;也有指向后一个节点的。 循环链表就是把头和尾连起来。 性能分析如下&#xf…

Java面试八股之@Autowired 和 @Resource的区别

Autowired 和 Resource的区别 在Spring框架中&#xff0c;Autowired 和 Resource 是两个常用的依赖注入注解&#xff0c;但它们有一些关键的区别。下面是这两个注解的主要差异&#xff1a; 1. 注解来源 Autowired&#xff1a; 是Spring框架提供的注解&#xff0c;位于包 or…

TerraSAR-XTanDEM-X卫星详解(一)

全球SAR卫星大盘点与回波数据处理专栏目录 1. TerraSAR-X简介 TerraSAR-X(Terra Synthetic Aperture Radar-X)和TanDEM-X(TerraSAR-X add-on for Digital Elevation Measurement)是由德国宇航中心(DLR)和EADS Astrium公司共同推出的一对双子卫星。Terra源自拉丁语,是地…

解决win10蓝屏“选择一个选项”的问题!

今天台式机开机&#xff0c;出现蓝屏问题&#xff0c;记录一下。 一、问题 启动修复不行&#xff0c;系统还原没还原点&#xff0c;系统映像恢复没有文件。难道要重装系统&#xff1f;手上只能Win7和XP的启动盘。此路不通。 二、解决 使用命令提示符。输入&#xff1a; bcdb…