> 文档中心 > 第二章 条件判断语句(分支语句)& 循环语句(下)| C语言[0基础 入门 保姆级别 通俗易懂 教程]

第二章 条件判断语句(分支语句)& 循环语句(下)| C语言[0基础 入门 保姆级别 通俗易懂 教程]


第二章 条件判断语句(分支语句)& 循环语句(下)| C语言[0基础 入门 保姆级别 通俗易懂 教程]

在这里插入图片描述


作者介绍:

🎓作者:热爱编程不起眼的小人物🐐
🔎作者的Gitee:代码仓库(所有文章的代码都会上传至此,有需要自提哈😽)
📌系列文章推荐:实现Strcpy函数 - 通过函数发现 “程序之美” | 不断优化、优化、再优化~
第二章 条件判断语句(分支语句)& 循环语句(上)
第二章 条件判断语句(分支语句)& 循环语句(中)
📒我和大家一样都是初次踏入这个美妙的“元”宇宙🌏 希望在输出知识的同时,也能与大家共同进步、无限进步🌟


文章目录

  • 第二章 条件判断语句(分支语句)& 循环语句(下)| C语言[0基础 入门 保姆级别 通俗易懂 教程]
  • 前言
  • 一、浅尝条件判断语句(分支语句)和循环语句
    • Ⅰ.语句
  • 二、练习
    • Ⅰ.计算 `n的阶乘`
    • Ⅱ.计算` 1!+2!+3!+……+10!`
    • Ⅲ.算法:`二分查找`
  • 总结

前言

可以说下列我们即将所接触到的语句在学习C语言的过程中有着密不可分、千丝万缕的关系哦~
不仅可以跟好地帮助我们读懂、学习别人优秀地代码,更能更近一步提升自己地代码能力哦~

以下内容干货满满,跟上步伐吧~


一、浅尝条件判断语句(分支语句)和循环语句

让我们一同看看在初步接触C语言中经常运用到的语句吧!

可以说这些语句在学习C语言的过程中有着密不可分、千丝万缕的关系哦~
只有我们扎实好基础,才能更好地建设上层建筑!!!

条件判断(分支语句)

  • if 语句
  • switch 语句

循环语句

  • while 语句
  • for 语句
  • do while 语句

go to 语句


在真正进入了解C语言的分支和循环语句中,我们得先了解了解什么是“语句”

Ⅰ.语句

C语言中语句可分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句
而本文介绍的是: 控制语句

C语言中控制语句可分为以下三类:

  1. 条件判断语(分支语句):if语句、switch语句;
  2. 循环执行语句 : do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句;

二、练习

Ⅰ.计算 n的阶乘

n的阶乘2! : 1*23! : 1*2*34! : 1*2*3*4......n! : 1*2*3*...*(n-1)*n
int main(){int n = 0;scanf("%d", &n);int sum = 1;int i = 0;for (i = 1; i <= n; i++){sum = sum * i;}printf("%d\n", sum);return 0;}

在这里插入图片描述


Ⅱ.计算1!+2!+3!+……+10!

思路:在上面计算n的阶乘的基础上,套两成循环:1.最外层循环是控制需要计算到第几个数字的阶乘的和;2.里面再套一层上面写过的计算n!的循环最后每计算一次一个数字的阶乘,加在一起即可。

在这里插入图片描述
咋一看,答案好像不太对呀,这是为什么呢???
那就让我们来调试一下吧【TIPS:调试可是程序员必备的技能哦~~我们得提早习惯于这个操作,才能养成一个好的习惯呀】

在这里插入图片描述
通过调试我们不难发现,对于计算1!和 2!我们答案还是正确的,但当计算3!的时候,便会发现一点猫腻
在这里插入图片描述
所以我们便知道,之所以会出现错误:是因为计算完每一个值的阶乘【即s】的时候,在计算下一个数的阶乘的时候“s”都是带着上一个数的阶乘进入计算的,而不是一个全新的“s”,即俗称:s没有重新初始化进入计算下一个数的阶乘

所以在日后,一定一定要记得重新定义s哦【👉不要再范这种“常见错误哟”】

int main(){int a;int n = 1;int s = 1;int sum = 0;for (n = 1;n <= 10; n++){s = 1;for (a = 1; a <= n; a++){s *= a;  }sum = sum + s;}printf("%d\n", sum);return 0;}

在这里插入图片描述
但我们细想一下,有没有可以优化的空间呢?
那必然是有的!!!
对于每一次计算阶乘,如果我们都像上面一样都重新计算每一个数的阶乘,那代码就太冗余啦

我们不难发现:1! = 1;2! = 1 * 2 = 1! * 2;3! = 1 * 2 * 3 = 2! * 3;4! = …… = 3! * 4;......n! = (n-1)! * n;

这不就每计算下一个数的阶乘,便可以用这一次的阶乘乘上下一个数,就可以得到下一个数的阶乘啦~

int main(){int a;int n = 1;int s = 1;int sum = 0;//3! = 3 * 2 * 1 == 3 * 2!//2! = 2 * 1for (n = 1; n <= 10; n++){s *= n;sum += s;}printf("%d\n", sum);return 0;}

在这里插入图片描述
这不就更好地 “优化” 代码了吗😄
这波操作你们学会了吗?😍


Ⅲ.算法:二分查找

最重要、最重磅地来喽~~~
它可以检验我们对于 “件判断语句(分支语句)& 循环语句” 是否学习到位的一个重要指标哦~
【欢迎多次学习哦~~】

在这里插入图片描述
通过百度可知:二分查找是一种高效率的查找方法

但我们要注意:仅仅适用于 “有序的序列中” 去*查找
即如我们下面的列子:在一个有排列的整型数组里,查找某一个数字的下标

思路:被查找范围的 中间元素 ===== 查一次 去掉 一半数据(通过 数据下标来进行去除 ==== 首位相加的求平均值 === 再从 平均值 所对应的 数据 在进行 判断 求平均。。。。)
在这里插入图片描述
代码实现:

int main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int k = 7; //要查找的数字//现在的目标: 在 arr这个有序的数组中 查找 k(7)的值//首先 先 确定这个 数组 的 左下标 和 右下标int sz = sizeof(arr) / sizeof(arr[0]);  //算 数组 的 元素 个数int left = 0;int right = sz - 1;while (left <= right)  //当 左边 <= 右边 代表====中间还有 元素 可 查找 还可以 继续 求平均 算下去{int mid = (left + right) / 2;if (arr[mid] < k){left = mid + 1;}else if (arr[mid] > k){right = mid - 1;}else  //等于 的情况{printf("找到了:%d\n", mid);break;}}if (left > right){printf("找不到了\n");}return 0;}

在这里插入图片描述


总结

综上,我们已经了解了C语言中语句的 “条件判断语句(分支语句)& 循环语句” 的初阶啦
但这,仅仅是 C语言入门的开端🍭 ,后续还会带领大家更加的深入相关知识哦~

💫如果有错误❌,欢迎指正呀💫
✨如果觉得收获满满,可以点点赞👍支持一下哟~✨
在这里插入图片描述