第二章 条件判断语句(分支语句)& 循环语句(下)| C语言[0基础 入门 保姆级别 通俗易懂 教程]
作者介绍:
🎓作者:热爱编程不起眼的小人物🐐 🔎作者的Gitee:代码仓库(所有文章的代码都会上传至此,有需要自提哈😽) 📌系列文章推荐:实现Strcpy函数 - 通过函数发现 “程序之美” | 不断优化、优化、再优化~ 第二章 条件判断语句(分支语句)& 循环语句(上) 第二章 条件判断语句(分支语句)& 循环语句(中) 📒我和大家一样都是初次踏入这个美妙的“元”宇宙🌏 希望在输出知识的同时,也能与大家共同进步、无限进步🌟
前言
可以说下列我们即将所接触到的语句在学习C语言的过程中有着密不可分、千丝万缕的关系哦~ 不仅可以跟好地帮助我们读懂、学习别人优秀地代码,更能更近一步提升自己地代码能力哦~
以下内容干货满满,跟上步伐吧~
一、浅尝条件判断语句(分支语句)和循环语句
让我们一同看看在初步接触C语言中经常运用到的语句吧!
可以说这些语句在学习C语言的过程中有着密不可分、千丝万缕的关系哦~ 只有我们扎实好基础,才能更好地建设上层建筑!!!
条件判断(分支语句)
循环语句
- while 语句
- for 语句
- do while 语句
go to 语句
在真正进入了解C语言的分支和循环语句中,我们得先了解了解什么是“语句” |
Ⅰ.语句
C语言中语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
C语言中控制语句可分为以下三类:
- 条件判断语(分支语句):if语句、switch语句;
- 循环执行语句 : do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句;
二、练习
Ⅰ.计算 n的阶乘
n的阶乘
2! : 1*2
3! : 1*2*3
4! : 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;
for (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;
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语言入门的开端🍭 ,后续还会带领大家更加的深入相关知识哦~
💫如果有错误?,欢迎指正呀💫 ?如果觉得收获满满,可以点点赞👍支持一下哟~?
|