看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大
曾经我一直以为自己C语言学的还挺好的,直到看到这几个例子。
首先来看一下,大师是如何求圆周率的,一口君实在词穷,first哇塞。
执行结果:
模拟图灵机打印基为2的斐波纳契数,double哇塞。
执行结果:
是的,你没有看错,这个代码没有问题,可以编译,执行结果:
居然是这个执行结果,treble哇塞,聊表敬意。
【作者是Ian Phillipps】
这个极富行为艺术的小火车,已经让一口君已经开始彻底怀疑人生了!quadra哇塞!
结果如下:
如果你仍然觉得just so so,那好吧,你再看下面这个代码,简直就是艺术与代码的天作之合。
我相信这个代码的作者一定是个满脸络腮胡子油腻的抠脚撸串肥宅男,否则怎么会画出这么惊世骇俗、震惊寰宇、美的不可方物、如此卡哇伊的小萝莉!penta哇塞!!!!!
看下他的执行结果吧:
这些代码是IOCCC 【(The International Obfuscated C Code Contest)国际C语言混乱代码大赛是一项国际编程赛事】的一些获奖作品,有兴趣可以去搜索下。
毫无疑问,这些大师都是世界上最顶级的C语言程序员,都是god like、legendary。在这里我们就不讨论这些代码了,一口君并不是鼓励你也去写这样的代码(关于这些代码的分析,你可以上网查询)。恰恰相反,我要告诉大家的是:大师把代码写成这样是经典,你把代码写成这样是垃圾!所以在垃圾和经典之间,你需要做一个抉择。
C语言博大精深,各位码农,且学且珍惜!
史上最优雅的10个经典C语言代码案例欣赏,值得收藏
以下是我认为是史上最优雅的10个C语言代码片段,它们展示了C语言的深度和优雅之处:
- 快速排序算法
快速排序是一种基于分治思想的排序算法,它将一个数组分成两个子数组,再分别对这两个子数组进行排序,最终将子数组合并成一个有序数组。这个代码片段实现了快速排序算法,并且使用了优雅的递归结构。
- 反转字符串
这个代码片段实现了反转字符串的功能。它使用了指针来遍历字符串,同时也使用了指针交换的技巧,这些技巧让代码更加优雅。
- 斐波那契数列
斐波那契数列是一个非常常见的数列,它的每个元素都是前两个元素的和。这个代码片段实现了递归的斐波那契数列计算,代码非常简洁和优雅。
- 二分查找算法
二分查找算法是一种高效的查找算法,它的时间复杂度为O(log n)。这个代码片段实现了二分查找算法,并使用了递归的结构。
- 选择排序算法
选择排序算法是一种简单直观的排序算法,它的时间复杂度为O(n^2)。这个代码片段实现了选择排序算法,并使用了swap函数来交换元素。
- 链表反转
链表反转是一个常见的操作,这个代码片段实现了链表反转,并且使用了指针的技巧来实现。
- 线性查找算法
线性查找算法是一种简单直观的查找算法,它的时间复杂度为O(n)。这个代码片段实现了线性查找算法。
- 插入排序算法
插入排序算法是一种简单直观的排序算法,它的时间复杂度为O(n^2)。这个代码片段实现了插入排序算法。
- 最大公约数
最大公约数是两个整数的公共因数中最大的那个数,这个代码片段实现了递归的求最大公约数的算法。
- 字符串转换为整数
这个代码片段实现了将字符串转换为整数的算法,可以处理负数和正数。这个实现还考虑了非数字字符的情况,一旦遇到非数字字符就停止转换并返回当前已经转换的结果。
新员工一口气写完这些C语言例子,领导直接给他转正了!
很多想从事嵌入式Linux开发的老铁问一口君,有没有快速提升自己编程水平的小例子?
一口君根据自己多年工作经验,整理了一些基于Linux的c语言的非常实用的小例子,
这些例子在嵌入式开发工作中,或多或少都会用到。
看看你们会做多少?
给指定数组排序,可以是任意一种排序算法,比如冒泡排序
函数定义如下,
比如:array[0] = 0x17(0001 0111),转换后array[0] = 0xe8(1110 1000)
函数定义如下:
比如array[0] = 0x12345678 ,转换后array[0] = 0x78563412
函数定义如下:
比如array[0] = 0x17 (0001 0111) array[1] = 0x32 (0011 0010)
新的数组dest[0] ~dest15] 为 0 ,0,0,1,0,1,1,1, 0,0,1,1,1,0,0,1,0
函数定义如下:
将一个char数组,所有的7e 转成 7d 5e ,7d转成7d 5d,并能还原
《【粉丝问答8】用C语言在Linux下实现CC2530上位机-1》
假定需要从串口接收到的数据帧格式如下:
7e中间位有效数据区,要求能够从串口数据中提取出有效数据
注意:从串口读取的数据并不是规则的,7e可能在一组数据开头、中间、结尾,并且一对7e可能不在同一次读取到的帧数据中。
《7E头解析的那些事儿(帧格式分析实例) 》
创建2个线程,通过互斥锁实现互斥访问某个指定串口
创建2个线程,线程2的执行必须是线程1在完成某个动作之后(比如sleep5秒之后)才可以执行。
给信号SIGINT注册指定回调函数,
服务器收到任意客户端数据,都直接回传给该客户端
不许用system()
编写一个最简单的字符设备驱动和应用程序,包含:read/write/ioctl,
《一文带你掌握Linux字符设备架构》
《手把手教Linux驱动9-等待队列waitq 》
《【粉丝问答20】内核定时器使用及其他时间操作》
git
cmder
adb、scrcpy
《详解如何将 Android 手机投屏在 Ubuntu 上》
source insight、vim、16进制分析工具、beyond compare
viso、edraw、
xshell、secure CRT、XCOM
- 工具
wireshark,netassit,tcpdump
- 命令
iperf、ping、tftp、ftp、ifcpnfig、ipconfig
- 通常开发板和windows传输文件
tftp、adb、rz、sz
- windows之间传输文件
飞秋、ftp、windows文件共享
aplay、arecord、ffplay
v4l2-ctl、media-ctl -p、ffplay
i2cdetect、i2cdump、i2cget、i2cset、i2ctransfer
逻辑分析仪、示波器、稳压电源、频谱仪、万用表
电烙铁
文章中的例子源码,一口君后续会逐步完善并陆续更新,
有编写出来的老铁,也可以将答案发给我!
比一比,谁写的更好,效率更高!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。