![](https://img-blog.csdnimg.cn/20210122113527487.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言学习笔记
C语言学习笔记
「已注销」
这个作者很懒,什么都没留下…
展开
-
【C语言学习笔记】C之神奇的移位运算符
C之神奇的移位运算符到目前为止,虽然知道有这么个运算符存在,但其实我并没有真正用过移位运算符。对于大部分题目而言和我目前的水平所能接触的范围有限的原因,我觉得移位运算符没有什么太大用处,感觉很鸡肋。但上周的月赛却死在了这道“签到题”上面。问题是将一个10000以内的数算术右移i位(i<=100000).我想着C中的>>运算符不就是算术右移运算符吗?这也太签到了吧!但…其中的问题是,对于右移很多位的情况下答案就不正确。想来想去我也不知道问题所在。最后还是回来查阅资料才清楚原创 2020-11-27 15:47:38 · 145 阅读 · 0 评论 -
【C语言学习笔记】第七章—用函数实现模块化程序设计
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-11-27 10:55:42 · 809 阅读 · 0 评论 -
【C语言学习笔记】第六章——利用数组处理批量数据
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-11-13 12:41:01 · 705 阅读 · 0 评论 -
递归超时怎么办?递归与递推的区别?递归的优化之道
递归超时怎么办?递归的优化之道平时在做题的时候,我们经常都要用到递归来解题,因为递归能最快速的让计算机知道我们想让他做什么,解放了我们的思维量(但在一定程度上加重了计算机的计算量,这也是可能超时的原因所在),方便我们阅读理解和修改。这里我想再引用一下Leigh Caldwell在Stack Overflow上说的一句话:“如果使用循环,程序的性能可能会更高,如果使用递归,程序可能更容易理解,如何选择要看什么对你来说更重要。”如果你还不太理解递归,可以看我之前写过的一篇文章再次深入理解递归——总原创 2020-11-10 09:31:10 · 2732 阅读 · 2 评论 -
【C语言学习笔记】再次深入理解递归——总结设计易错点
写在前面其实我也说不太清楚到底递归算不算算法,因为我一开始从0基础接触递归是从《算法图解》这本书中得知的(也很推荐刚学算法的朋友可以先看看这本书,写的挺不错的),也就把它当成算法了。但写了那么多题目,渐渐的感觉递归这个东西把,它更像是一种工具而已,要用的时候很自然而然地就和加减乘除一样用上了,不会特别感受得到它地存在(也正是因为理解地不深刻,导致我经常用错陷入死循环)。再次深入理解递归回想起第一次接触递归是在这道题上母牛的故事——函数与类斐波那契数列,其实当时在写这道题时真的没有刻意去说 啊 我要用原创 2020-11-07 20:44:20 · 509 阅读 · 1 评论 -
【C语言学习笔记】第五章——循环结构程序设计
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-11-05 13:34:29 · 539 阅读 · 0 评论 -
【章节自测】第五章——循环结构程序设计
第五章——循环结构程序设计 学校的老师在上程序设计这门课时,给我们每一章指定了一些学习目标,用于课前的预习和课后的具体检测复盘,因为每一个目标都是具体可测的,而只要所有的目标你都能达成,你的这一章就达到了一个及格的水平。因为我的基础不牢,所以开一个长篇连载的博客记录每次的学习目标巩固基础。自测学习目标1.能够描述循环的四个基本要素循环在有限步骤中完成,有开始的条件,有结束的条件,有循环体2.能够描述并使用while结构设计一个符合四要素的循环结构3.能够描述并使用do…while结构设原创 2020-11-04 23:25:27 · 238 阅读 · 2 评论 -
【章节自测】第四章——选择结构程序设计
第四章——选择结构程序设计 学校的老师在上程序设计这门课时,给我们每一章指定了一些学习目标,用于课前的预习和课后的具体检测复盘,因为每一个目标都是具体可测的,而只要所有的目标你都能达成,你的这一章就达到了一个及格的水平。因为我的基础不牢,所以开一个长篇连载的博客记录每次的学习目标巩固基础。自测学习目标1.能够描述三种选择结构基本形式有else部分,没有else部分,if和else的嵌套2.能够描述6种关系运算符的基本形式、优先级和结合方向> >= < <= 和 =原创 2020-10-28 19:19:44 · 176 阅读 · 0 评论 -
【C语言学习笔记】第四章——选择结构程序设计
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-28 13:21:05 · 762 阅读 · 0 评论 -
【C语言学习笔记】算法篇——动态规划
浅谈动态规划Dynamic Programming写在前面:学习这个算法的缘由其实是这篇博客,当时在写完这道题的题解时,师兄好心地提醒我有一个说法不太准确,就是到底是不是贪心算法,在学习了动态规划后发现这两者真的有挺多共同点的。且上次月赛挺多题目都涉及到了动态规划的思想,故今天来整理一下,先立个FLAG,这篇博客应该要写很久很久很久…什么是动态规划?首先要了解的是,和贪心算法一样,动态规划算法只是一种思想,不是像排序算法一样有具体的代码。我第一次学习动态规划,是在《算法图解》这本书中,因此后面的原创 2020-10-25 09:27:23 · 3558 阅读 · 0 评论 -
【C语言学习笔记】顺序程序设计3.5——数据的输入和输出
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201024074009563.png?x-.原创 2020-10-24 07:40:25 · 361 阅读 · 0 评论 -
【C语言学习笔记】顺序程序设计3.4——C语句
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-23 13:55:13 · 235 阅读 · 0 评论 -
【C语言学习笔记】顺序程序设计3.3——运算符和表达式
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-23 13:26:51 · 254 阅读 · 0 评论 -
【章节自测】第三章——顺序程序设计
第三章——顺序程序设计 学校的老师在上程序设计这门课时,给我们每一章指定了一些学习目标,用于课前的预习和课后的具体检测复盘,因为每一个目标都是具体可测的,而只要所有的目标你都能达成,你的这一章就达到了一个及格的水平。因为我的基础不牢,所以开一个长篇连载的博客记录每次的学习目标巩固基础。自测学习目标11.能够描述程序运行的定义程序和数据放在内存,等待或正在被执行的过程。2.能够描述常量变量的定义在运行过程中,其值不能(能)够发生改变的量。3.能够描述常量三(应该是五)种分类及其书写方式整原创 2020-10-23 12:19:18 · 666 阅读 · 0 评论 -
【C语言学习笔记】再论快速排序的重要性与妙用空间
快速排序算法的重要性之前有专门写过一篇博客讲述桶排序、冒泡排序和快速排序的算法思路和区别优点,传送门在这里。在写了那么多题目后,除了题目本身就要求对数据排序要用到排序算法以外,如:绝对值排序——快速排序、冒泡排序还有像回旋星空——妙用排序和强迫症的序列——思维转换 细节问题巧妙利用排序算法简便思维和复杂度。但因为C语言没有内置排序算法,故在遇到需要排序时往往需要自己编写排序的函数,而冒泡排序又有超时的风险,故快速排序就是最佳的选择。快速排序代码#include <stdio.h>原创 2020-10-17 14:15:39 · 393 阅读 · 0 评论 -
【C语言学习笔记】顺序程序设计3.2——数据的表现形式及其运算
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-16 13:45:24 · 424 阅读 · 0 评论 -
【C语言学习笔记】MEMSET函数的使用
MEMSET函数的使用要使用memset函数首先要预加载库<string.h>函数的使用memset(*p, int c, n)函数名(要操作的数组首地址, 要替换的字符, 要替换的长度)*要替换的值虽然以int形式传递,但在执行填充替换操作时使用的是该值的无符号字符形式。*要填换的长度n指的是前n项,一般是全部替换,特殊情况除外。通过实际例题来感受下用法#include <stdio.h>#include <string.h>int main()原创 2020-10-10 22:14:34 · 526 阅读 · 0 评论 -
【C语言学习笔记】函数指针的定义和用法
函数指针的定义和用法先回顾下数组的储存方式,当你在程序中定义了一个数组,那么系统就会自动根据你的数组类型和数组长度申请一块储存空间给你。而且数组名储存的地址刚好就是申请的这块储存空间的首地址,这也是为什么我们在输入字符串时不用&,因为下面的s数组名储存的就是首地址,不用再对它进行取地址符操作了。char s[100];scanf ( "%s", s );那么我们再来理解一下函数,与数组类似的,函数名储存的也是首地址。函数指针不同于指针的地方就是函数指针所储存的地址为函数,而普通指针的地原创 2020-10-10 22:13:29 · 2791 阅读 · 0 评论 -
【C语言学习笔记】关于pow在printf函数中的问题
关于pow在printf函数中的"多面人"在“跳台阶”这道题中需要用到POW函数,并输出,结果我自测时发现了一个小问题。如果是int k = pow(2,n-1);printf ( "%d\n", k );输入n=4输出8(正确)如果改为 printf ( "%d\n", pow(2,n-1) );输入n=4输出0(错误)再测试多组数据,发现当数据较小时输出值都为0,这是为什么呢?然后我又再修改了一下,进行了强制类型转换 printf ( "%d\n", (int)(原创 2020-10-08 22:51:08 · 842 阅读 · 0 评论 -
【C语言学习笔记】冷门SWITCH-CASE和BOOL的应用总结
冷门SWITCH-CASE和BOOL的应用总结学了两个月的C语言了,但switch-case语句以及bool类型变量我是从来没有主动使用过(主要是不知道如何使用,因为大部分题目都有可代替这两个的思维或方法),今天就来介绍总结下这两个家伙。SWITCH-CASE先看下标准的格式switch (表达式){ case 常量表达式: 语句; case 常量表达式: 语句; ...... default: 语句;}这里的表达式的变量类型是整型变量,也就是说可以是int型的变量,也原创 2020-10-05 08:54:42 · 1059 阅读 · 0 评论 -
【C语言学习笔记】第2章-算法——程序的灵魂
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-01 13:02:57 · 780 阅读 · 1 评论 -
【C语言学习笔记】第1章-程序设计和C语言思维导图
学校开始学习C语言程序设计,教材为谭浩强编写的C程序设计(第五版),因之前已经略有接触C语言,故每次课后的思维导图我会在确保尽可能地包括书籍主题内容的同时精简掉一些我我已经熟练的内容。做思维导图的主要目的是为了给自己的学习一个FEEDBACK,反思自己学到了什么,也便于自己遗忘时的复习,同时也帮助各位在学习这本书的同学一个纲要。图片自制,有口语化表达,有问题欢迎指出...原创 2020-10-01 11:20:59 · 2714 阅读 · 0 评论 -
【C语言学习笔记】MOOC——数组的那些事
初始化篇1.C语言的全局变量在没有赋值以前默认为0,因此在开头定义无需再进行赋值。例如:include <stdio.h>int a[10];2.对于一维数组,当数据非常大的时候,不需要给出数组的大小,编译器可以替你数数。但对于小数组还是建议写上数组大小。例如:int a[] = {2,4,5,6,7,8,9,1,3};3.若数组只是用来读入不读写,可使用const声明数组,以免后续不小心改动4.集成初始化时的定位,可用[n]在初始化数据中给出定位,没有定位的数据接在前面原创 2020-09-25 13:07:02 · 98 阅读 · 0 评论 -
【C语言学习笔记】MOOC——大循环
*文中大部分实例均出自MOOC,少部分改编引入问题一:输入一个非负整数,输出这个数字的位数大小。思考:如何设计循环,使得输入任意的非负整数(在验证的时候要特别考虑特殊情况,如边界值、有效范围两端的数据)@while版本#include <stdio.h>int main(){ int count = 0; int num; scanf ( "%d", &num ); count++; //关键部分,不可缺少,不然输入0时答案错误 num /=原创 2020-09-19 09:38:08 · 238 阅读 · 0 评论 -
【C语言学习笔记】MOOC——枚举类型
#学习资料:《C Primer Plus》、MOOC翁恺C的语言程序设计一些定义enum color { red, yellow, blue};enum color c;枚举类型(enumerated type):它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。即上文中的enum color申明了一个叫为color的枚举类型。枚举变量:即上文中enum color c中的c被称为枚举变量。枚举符(enumerator)即上文中的red、yellow、原创 2020-09-09 14:47:49 · 239 阅读 · 0 评论 -
【C语言学习笔记】MOOC——数据类型
数据类型C语言的类型整数:char、short、int、long、long long浮点数:float、double、long double逻辑:bool指针自定义类型整数的内部表达我们知道计算机的内部都是二进制,那么二进制是如何表示负数的吗?在思考这个问题前我们先看看我们最熟悉的十进制是如何表示负数的。是的,就是在每个数字面前通过单独的一个符号位(+或-或省略)来表示数字的正负性。自然而然,对于二进制而言是否也是如此,答案却是否定的。对于二进制而言我们采用的是补码形式表示负数,在了原创 2020-09-03 14:47:57 · 160 阅读 · 0 评论 -
【C语言学习笔记】算法篇——初见深度优先搜索
*基于啊哈!算法中的实例题目输入一个正整数n,输出1-n的全排列代码分析#include <stdio.h>int a[10], book[10], n;void dfs ( int step ){ int i; if ( step==n+1 ) { for ( i=1; i<=n; i++ ) printf ( "%d", a[i] ); printf ( "\n" ); return; } for ( i=1; i<=n;原创 2020-09-20 20:07:59 · 256 阅读 · 0 评论 -
【C语言学习笔记】算法篇——简易贪心
NP完全问题*什么是NP完全问题在了解贪心算法之前我们先了解下这个算法可以处理的问题,即世界七大数学难题之一的NP完全问题NP完全问题的简单定义是,以难解著称的问题,如旅行商问题和集合覆盖问题,很多非常聪明的人都认为,根本不可能编写出可快速解决这些问题的算法。(摘自算法图解)那既然这类问题没有快速算法,那我们就要学习近似算法(贪心算法就是近似算法之一),使它们可以快速找到NP完全问题的近似解。*如何识别NP完全问题既然到目前为止,NP完全问题没有快速算法,如果我们在一开始遇到问题时能够识别出原创 2020-09-16 21:40:09 · 387 阅读 · 0 评论 -
【C语言学习笔记】算法篇——枚举算法
#学习资料:《啊哈!算法》、《算法图解》枚举算法基本思想:有序地去尝试每一种可能。对于人类而言,这种算法似乎是十分枯燥、无聊、没有一点计数含量的算法。但对于计算机而言,在解决某些特定的问题时,枚举算法不失为一种高效简洁的优秀算法。应用实例均取自于啊哈!算法@代码一:奥数题#include <stdio.h>int main(){ int a[10], i, total=0, book[10], sum; for ( a[1]=1; a[1]<=9; a[1]+原创 2020-09-09 20:16:25 · 1232 阅读 · 0 评论 -
【C语言学习笔记】算法篇——栈、队列、链表
#学习资料:《啊哈!算法》、《算法图解》队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。生活实例:排队买票原则:FIFO用处:广度优先搜索以及队列优化的BELLMAN-FORD最短算法的核心数据结构代码展示(取自啊哈!算法中的解密)#include <stdio.h>int main(){ int原创 2020-09-06 21:26:09 · 350 阅读 · 1 评论 -
【C语言学习笔记】算法篇——排序
#学习资料:《啊哈!算法》、《算法图解》桶排序优点:简单易懂,复杂度低,便于操作缺点:占用空间大时间复杂度:O(M+N) (M为桶的个数,N为待排序的个数)适用范围:海量数据,但数据有具体范围约束时有优势Bucket Sort基础代码示例(取自啊哈!算法)#include <stdio.h>int main(){ int book[1001], i, j, t, n; for ( i=0, i<=1000; i++ ) book[i] = .原创 2020-09-05 13:32:02 · 236 阅读 · 1 评论 -
【C语言学习笔记】SWAP函数详解
SWAP函数详解本篇文章通过swap函数来深入了解C语言中函数的用法,与指针的应用。参考资料来源于经典书籍与技术博客的分享。在复习完生存期相关的知识点后(详情可转至此处),初步认识了函数与本地变量,今天再详细梳理几种主流的swap函数写法,并通过代码的替换帮助大家了解本质。代码整合展示#include <stdio.h>//w_swap即wrong swap 展示了两个常见的错误swap函数 void w_swap1( int a, int b ){ int temp; t原创 2020-10-01 07:59:03 · 7213 阅读 · 1 评论 -
【C语言学习笔记】MOOC——生存期与swap函数
引入:本人在练习题目的时候,经常会出现如下的error报告:[Error] 'a' undeclared (first use in this function)导致我要对每个函数和循环来回检查,看到底哪个变量的生存期弄错了。究其本质是对变量生存期的理解有失偏颇,故今天特此写篇文章来认真回顾(学习)此部分的内容介绍:以下笔记均来源MOOC本地变量:函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称为本地变量。定义在函数内部的变量就是本地变量,参原创 2020-09-30 08:08:39 · 341 阅读 · 0 评论 -
【C语言学习笔记】MATH中的常用函数大汇总及应用
MATH中的常用函数大汇总:*开头需引入#include <math.h>1.绝对值整数:int x = abs(y);浮点数:double x = fabs(y);2.指数和对数求e的y次幂:double x = exp(y);求x为底数的y次幂:double n = pow(x,y);计算x的开平方:double x = sqrt(x);求logeX:double n = log(x);求log10X:double n = log10(x);题目一:计算两点间的距原创 2020-09-19 11:30:41 · 3642 阅读 · 0 评论 -
==C语言学习笔记==
C语言学习笔记(持续更新)主要记录自己容易弄混的概念和遗忘的部分学习的课程是MOOC上翁恺C的语言程序设计,参考书籍为C Prime Plus、算法图解、啊哈算法、算法。1.数据类型原创 2020-09-03 10:22:56 · 121 阅读 · 0 评论