《算法笔记知识点记录》第二章——快速入门2[选择结构、循环结构和数组](1)

简介: 《算法笔记知识点记录》第二章——快速入门2[选择结构、循环结构和数组](1)

☘前言☘

今天是我开坑的第二天,也不知道这个系列会不会火呢?

今天依旧会介绍很多基础知识,但是更注重逻辑,如果我有哪些没有讲清楚的,欢迎大家联系我,你提出的问题是我修改完善的基础,万分感谢。


欢迎大家加入我的打卡队列,如果你刷完了对你有帮助请你评论一个打卡。

如果你觉得这本书有用的话还希望多多支持作者。

如果觉得这个文章有用还希望大家交出素质三连呀。


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

📔源码地址:https://gitee.com/xingleigao/algorithm-notes

⏳全文大约阅读时间: 80min


文章目录

 ☘前言☘

 🍭1.基础知识点

           🐌1.1选择结构

           🐰1.1.1if语句及其嵌套

           🐮1.1.2switch-case结构

 🐟1.2 循环结构

           🐬1.2.1 while语句

           🐳1.2.2 do...while语句

           🐋1.2.3 for循环

           🦈break和contin语句

 ⚔️1.3 数组

           🗡1.3.1 一维数组

           🛡1.3.2冒泡排序

           🔧1.3.3 二维数组

           ⚒1.3.4memset函数

           🔨1.3.5 字符数组

           🔩1.3.6 string.h头文件

 🐳课后习题

🍭1.基础知识点

有了上次课的亿点点基础,我们就可以开始学习一些稍微复杂一点的结构了。上节课的内容非常重要,需要我们去反复推敲打磨,没事了都要回头看一看呢。

那我们废话不多说,开始今天的学习吧。


🐌1.1选择结构

c语言的选择结构主要是两个,其中一个就是if-else结构,另外一个就是switch - case结构,我们今天来分别了解一下吧。


🐰1.1.1if语句及其嵌套

if语句


if语句的基本用法如下:


if(条件A){
  ...
}
else{
  ...
}


就是根据条件来跳转到不同的语句执行,可以用下面的流程图来表示这一个结果。

90aa9f7c39546088b79afe7810611ff.png

举个栗子🌰


#include<cstido>
int main(){
  int n = 2;
  if(n > 3){
  n = 9;
  printf("%d\n",n);
  }
  else{
  printf("%d\n"n);
  }
  return 0;
}


输出结果:2

需要注意的点有三个:


1.一般只有在明确不出错的情况下才不加括号。(加上不会错就完了)

2,分支结果注意打缩进,新手不打缩进差错看的很费劲,提升下代码可读性吧,求求了😂,3。!=0可以省略,==0可以用!替换。eg.a==0与!a是一样的。

if语句的嵌套


基本嵌套结构如下:

if(条件A){
  if(条件B){
    ...
  }
  else{
    ...
  }
  }
else{
  ..
}


其实就是套娃,相信都还是可以看得懂的。再次强调,缩进、缩进、缩进(重要的事说三遍)。


一点补充:(嵌套的另外一种写法)


if(条件A){
  ..  
}
else if(条件 B){
  ...
}
else{
  ...
}


🐮1.1.2switch-case结构

sitch-case主要用于多分支的结构,在分支较少的时候并不常用。基本语法如下:


switch(表达式){
  case 常量表达式1:
  ...
  break;
  case 常量表达式2:
  ...
  break;
  default:
  ...
}


它的执行过程可以看成下图:

ab8e26fd1d9513680ae62bccf0c98ce.png

需要注意点:


1.每个case后面一定要加break,不然就会顺序执行所有的之后的函数,可以看流程图。

2.适用于情况较多的时候,平时使用不常见。

🐟1.2 循环结构

循环结构主要包含三种,即while、for、do--while,需要注意循环体的控制语句有两个break、continue。


🐬1.2.1 while语句

假设需要计算1+2+…+n那么应该怎么计算呢?

while就用于这样的问题,当条件满足时不断执行,基本结构如下:


while(条件A){
  ...
}


基本的执行逻辑就是如下图:

6c07d503a9a52d2f8c7dc996abda35c.png

上面那个题目的代码就可以如下所示:


#include<csdtio>
int main(){
  int n = 100, sum = 0;
  while(n){
  sum += n;
  n--;
  }
  printf("%d\n",sum);
  return 0;
}


其中while的判断和if一样可以省略是否==0,所以这里我算的是100+99+…+1


🐳1.2.2 do…while语句

do...while语句和while语句很类似,但是他们格式是颠倒的。


do{
  ...
}while(条件A)


执行的顺序如图所示:

6deb5513ad5042c9734ac61dfa62020.png

do…while会先执行循环体一次,然后才去判断循环条件是否满足,这就使得do…while的语句适用性远远不如while。 建议不用233


🐋1.2.3 for循环

for语句的使用频率是三种循环中最高的,常见格式如下:


for(初始值表达式;判断条件;循环执行表达式){
  ...
}


常见的执行流程如下

1b41924d18da23da370022fc077c1d3.png

举个栗子🌰


#include<cstdio>
int main(){
  int sum = 0;
  for(int i = 1 ; i <= 100 ; i++)
  sum += i;
  printf("%d\n",sum);
  return 0;
}


其中i的初始值是1,i小于等于100不断循环,循环结束后i的值会加1。

最终的结果肯定就是1+2+…+100 啦

for需要注意的点:


1.每个表达式都可以省略 第二个表达式省略代表死循环

2.for第一个表达式定义的变量只在循环体内有效,循环执行结束变量就会被回收。

🦈break和contin语句

break和continue都是对循环体的控制。


在switch的时候看到过break,看那张图break就是跳出循环体执行下一条语句。

而continue是结束本次循环开启下一轮循环

看不懂没关系 来看图0.0

bd31031fd404b9e37c3d0cae67428bd.png

主要区别就是控制跳出之后进行什么操作。

举两个栗子🌰作为结束吧


#include<cstdio>
int main(){
  int sum = 0;
  for(int i = 1; i <= 100; i ++){
  if(i % 2 == 1)  continue;
  sum += i;
  if(sum > 2000)  break;
  }
  printf("sum = %d\n",sum);
  return 0;
}


上面程序实现的功能就是计算从1到100内来连续奇数和不大于2000的最大值。


相关文章
|
1月前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
46 0
|
1月前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
44 0
|
22天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
25 3
|
1月前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
1月前
|
算法 API 计算机视觉
人脸识别笔记(一):通过yuface调包(参数量54K更快更小更准的算法) 来实现人脸识别
本文介绍了YuNet系列人脸检测算法的优化和使用,包括YuNet-s和YuNet-n,以及通过yuface库和onnx在不同场景下实现人脸检测的方法。
49 1
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
64 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-160、相交链表)
❤️算法笔记❤️-(每日一刷-160、相交链表)
18 1
|
1月前
|
存储 算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
这篇文章是关于动态规划算法中矩阵连乘问题的详解,包括问题描述、最优子结构、重叠子问题、递归方法、备忘录方法和动态规划算法设计的步骤。
101 0
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
14 0
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
31 0