
C语言
C语言知识点详解和C语言个人学习笔记
龙跃十二
养成阅读的习惯等于为你自己筑起一个避难所,几乎可以避开生命中所有的灾难。
展开
-
做好异常处理,防止无故翻车
絮叨 因为程序异常处理问题,就在前几天龙叔的服务挂了几秒钟。完了,马上季度末打绩效,竟然在这里翻车了,心如刀绞啊。虽然没有影响到用户体验,但是找到问题并解决掉问题是工程师日常追求之一。作为一个优秀的工程师,应该还得加几点:弄清问题本质总结问题原因举一反三,防止出现类似错误异常处理,对于每个开发者来说一点不陌生。有人这样描述,“一个开发者90%的时间都是在处理程序异常”。这样说也不算是什么过错,毕竟正常的逻辑总是轻松容易的写完,异常处理往往会占据开发者大多数时间。既然这么占据我们的原创 2020-09-25 08:42:12 · 1544 阅读 · 1 评论 -
《C语言》—— 简单的数组问题,一定不再你的话下
本文详细讲述了数组的概念、数组的特性、数组的常见问题、数组底层结构剖析、数组常见面试题。有需要了解的快戳进来把。原创 2020-02-19 00:00:26 · 2432 阅读 · 15 评论 -
带你重新认识指针(下)
指针一直是一个头疼的问题,指针灵活性很好,但是可控性很差,容易写出程序崩溃的代码。我们要怎样才能使的指针可控呢?龙叔带你重新认识指针原创 2020-01-16 00:11:56 · 3083 阅读 · 3 评论 -
判断并输出1000-2000之间的闰年
#include<stdio.h>int main(){ int year=0,count=0; printf("闰年:"); for(year=1000;year<2001;year++) { if((year%4==0&&year%100!=0)||(year%400==0)) printf("%d ",year,coun原创 2017-10-28 23:51:33 · 1310 阅读 · 0 评论 -
交换两个变量
不建立第三个变量,巧妙运用或运算符交换int main(){ int a=0; int b=0; printf("请输入两个数:"); scanf("%d %d",&a,&b); a=a^b; //利用逻辑运算符 b=a^b; a=a^b; printf("%d %d\n",a,b);}原创 2017-10-31 07:15:56 · 261 阅读 · 0 评论 -
求 n!
代码:#include<stdio.h>int main (){ int n=0; int i=0; int ret=1; scanf("%d",&n); for(i=1;i<=n;i++) { ret = ret*i; } printf("%d\n",ret); return 0;}计算结果:原创 2017-10-31 23:48:31 · 323 阅读 · 2 评论 -
二分法查找
一、题目:写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找) 二、此题主要用到了以下知识点: 1、函数调用。 2、sizeof这个关键字 的使用(切记他不是函数)。 3、函数调用时数组通过地址调用。#include<stdio.h>int mid_search(int *arr,int sz,int key){ int left=0;原创 2017-11-07 00:14:19 · 406 阅读 · 0 评论 -
计算两个数的不同比特位
一 、题目: 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 二、解题思路: 利用异或运算符(^)把输入的两个数进行异或运算(m^n),找出运算结果的所有1的个数,即不同比特位个数。 三、知识点解析 1、异或运算符 ^ (异或运算符运算:相同异或为0 ,不同异或为1 ) 2、移位运算符(此知识点的讲解请看上一篇博客)#include<std原创 2017-11-09 23:53:39 · 947 阅读 · 0 评论 -
打印乘法表
一、题目: 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。 二、解题思路: 此题较为简单,首先定义两个变量控制行和列,行列各一个循环 ,两个循环嵌套,外层控制行,内层控制列,最后输出注意整齐。 三、知识点解析: 1、循环嵌套:弄清楚循环变量及其循环跳出值,嵌套时一定要原创 2017-11-11 00:49:29 · 774 阅读 · 0 评论 -
斐波那契数
一、题目: 递归和非递归分别实现求第n个斐波那契数。 二、解题思路: 先了解下斐波拉契数列 (1 1 2 3 5 8 13 21 34 55···),第n个斐波那契数等于(n-1)个斐波那契数加上(n-2)个斐波那契数,已知第一个斐波那契数为1。 三、知识点解析: 1、递归实现过程 2、函数调用(后期专门更新一次博客。敬请期待!) 四、代码: 1、非递归代码:#include<原创 2017-11-13 00:54:50 · 1111 阅读 · 0 评论 -
数组初始化,清空数组,数组元素逆置
一、题目:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。 二、解题思路: 1、初始化数组:涉及到数组就要考虑下标访问方式和指针访问方式,本题采用下标访问,本题用循环初始化。 2、逆置数组元素:首先要明白逆置相当于倒叙排列,我就想到了交换,把第一个和最后一个元素交换,再一次把正序第原创 2017-11-14 23:48:17 · 516 阅读 · 0 评论 -
魔方阵
一、题目: 输出魔方阵 二、解题思路:(刚拿到这道题完全没思路,用MATLAB输出了好几个奇数魔方阵,才找到规律) 1、将1放在第一行中间一列; 2、从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1; 3、如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1; 4、当上一个数的列数为n时,下一原创 2017-11-20 23:38:17 · 4463 阅读 · 0 评论 -
理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针原创 2017-11-21 21:30:52 · 1631 阅读 · 0 评论 -
汉诺塔
用递归方法处理较复杂的移动循环问题。原创 2017-11-24 20:04:36 · 4322 阅读 · 2 评论 -
三子棋(智能版)
理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 写博客,将连接发给我。 指针数组:原创 2017-12-04 17:43:27 · 601 阅读 · 3 评论 -
扫雷
C语言马上学完,找了个课设的题目练练手。 一、功能描述: 1、使用方格显示,利于坐标输入。 2、分三个级别的难度。(初级 10个雷,中级 20个雷 ,高级 35) 3、第一次输入如果是雷,就随机移到非雷区,保证第一次不会被炸死。 4、可以显示一周雷的个数。 5、可以标记雷、取消标记。 6、输入坐标如果一周无雷,即展开,遇到有雷就停止展开。 7、保证屏幕上不累计出现多框图,每次显示前原创 2017-12-08 21:43:41 · 740 阅读 · 4 评论 -
尾递归实现斐波那契数
一、先普及下尾递归:如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。 二、实例展示:尾递归实现斐波那契数long long fib(int n,lon原创 2017-12-09 19:02:08 · 755 阅读 · 0 评论 -
回调函数
今天看到回调函数,有点迷糊,找了好多搜索引擎的资料,都不是让我很能理解,看了《c和指针》我才明白了。简单描述一下什么是回调函数: 用户把一个函数指针作为参数传递给其他函数,后者将“回调”用户的函数。如果函数可以再不同的时间执行不同类型的工作或者执行只能由函数调用者定义的工作,都可以使用回调函数。 回调函数无法知道比较的值的类型,所以参数的类型被声明为void*。表示一个指向未知类型的指针原创 2018-02-03 21:05:25 · 315 阅读 · 0 评论 -
C语言知识点总结 -思维导图
C语言知识点总结 学会梳理知识,学会学习,后续会陆续更新数据结构和c++知识点总结。 本人把所有学习C语言的笔记放在了一个专栏,有兴趣的朋友可以随时查阅,有问题欢迎交流。 专栏链接:http://blog.youkuaiyun.com/column/details/20152.html...原创 2018-01-23 14:18:55 · 8359 阅读 · 3 评论 -
C 语言的可变参数表函数的设计
大多数时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()等 可变参数的实现: C语言头文件stdarg.h提供了一个数据类型va-list和三个宏(va-start、va-arg和va-end),va—start使vp指向第一个可选参数。va...原创 2018-02-02 14:03:48 · 820 阅读 · 0 评论 -
函数调用过程
今天突然看到有人私信我说一直没写函数调用过程(栈帧的形成和销毁过程)这篇博文,赶紧补上。 刚看的栈帧内容时,我很迷惑,我觉得栈帧创建和销毁很麻烦,几句话根本说不完,而且我好像描述不清楚他的过程,所以在博文里面遇到函数调用我就规避了。现在再写栈帧调用过程,我觉得其实这个过程没有那么困难(不过还是有些抽象,毕竟计算机底层怎么运行我们也不是很明白)。 栈帧的创建的销毁过程例子代码:i原创 2018-01-31 09:21:19 · 13855 阅读 · 3 评论 -
C语言的数组与指针
总有人认为数组和指针是C语言里面最难的部分,其实认真思考发现数组和指针内容不多,只是我们经常把很多知识ran在一起,搞得自己很混乱。接下来我们细细看一看。 一、数组(数组:相同类型的元素的集合) 1、一维数组 (1)数组名及意义 1)数组名 看两个表达式的声明 int a; int b[5]; a是个变量名也是一个变量,b称为数组名,他是个指针常量,他的类型和数...原创 2018-01-26 15:04:07 · 1196 阅读 · 2 评论