比较型排序算法知识总结 归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。 插入排序算法:该算法的复杂度为O(N^2),需要比对N-1趟,最坏情况... 2023-06-13 排序算法比较型C语言文章基础课C语言基础
二叉堆的C语言实现知识 二叉堆是非常有特点的数据结构,可以采用简单的数组就能实现,当然链表的实现也是没有问题的,毕竟是一个二叉树问题,当然可以采用链表实现。采用数组实现时,可以找到两个特别明显的规律:左儿子:L_Son = Parent * 2;右儿子:R_Son = Parent * 2 + 1;二叉堆是一颗完全填满的树,可能例外... 2023-06-13 二叉堆C语言数据结构文章基础课C语言基础
C语言栈的经典运用汇总 但是栈的运用还不止这些,还有很多,其中几个典型的运行如下:判断平衡符号,实现表达式的求值(也就是中缀表达式转后缀表达式的问题以及后缀表达式求值问题),在路劲探索中实现路劲的保存也可以说是栈的经典运用之一。具体的问题具体分析,只要满足先入后出特性的问题都能找到现成的数... 2023-06-13 C语言堆栈经典运用文章基础课C语言基础
链表中几个较重要的问题 /*单链表*/ typedef struct list { struct list *next; int data; } List_t, *List_handle_t;/*双向链表*/ typedef struct Dblist { struct Dblist *next; struct Dblist *prev;int data; }DList_t, *DList_handle_t;/*多层次链... 2023-06-13 链表C语言重要问题文章基础课C语言基础
整数与字符串转换的C实现 比如:如何实现两个值中的最大值:((a+b) + abs(a-b))/2如何实现不依靠中间量实现两个变量值的交换:a = a + b;b = a - b;a = a - b;或者a = a^b;b = a^b;a = a^b;其中后面的这种方式更加的优越。sizeof与strlen的区别其中sizeof是一个操作符,在编译过程中就能确定结果,但是str... 2023-06-13 整数字符串转换C语言文章基础课C语言基础
C语言中字符串与字符数组分析 字符串与字符数组的区别在过去我一直是处于一知半解的状态,字符串是通常被认为是常量,是保存在一段固定的内存中的,这段内存是以'\0'为结束符,这段内存通常只能通过一个指针来找到。字符数组其实和其他数组没什么区别,只是保存的数据类型是字符类型(char),它没有强制要求最后... 2023-06-13 C语言字符串字符数组分析文章基础课C语言基础
C/C++中宏定义的经典运用 以前在没有代码阅读量的时候总是以为宏定义就是简单的定义一些常量什么的,实质上不然,宏定义完全可以写成函数的形式,但是宏定义和函数有一定的差别,函数的调用一般采用栈的方式实现,这时候存在局部变量,形参、实参等问题,如果不理解C语言的本质,很多时候非常容易搞错,但是宏定义... 2023-06-13 C语言C++宏定义文章基础课C语言基础
异或运算在算法中的经典运用 比如首先排序、然后在查找不同的数据就能找到这两个数字,这种实现方法的时间复杂度应该是在O(NlgN),因为比较排序的算法最好的时间复杂度就是这样。但是乍一看,这题就解决了,但是还没有充分运用一个条件,绝大多数元素是成对出现的,这个条件的作用是什么呢? 当然还有的思路就是ha... 2023-06-13 异或运算算法C语言文章基础课C语言基础
C语言猜拳游戏代码及分析 猜拳游戏需求分析说明书1.引言1.编写目的小时候,我们喜欢以猜拳来赢得奖励。现在,我们希望能开发一个猜拳的游戏。2.定义需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。而且其很强的交互性及简单... 2023-06-13 C语言猜拳游戏代码分析文章基础课C语言基础
C语言写的简易水果管理系统 #include#include#includetypedef struct fruit{char name[30]; //水果名int count; //水果数量double price; //水果单价}fruit_t;//菜单函数void log_menu();//查看函数void check(fruit_t *p,int *count... 2023-06-13 C语言简易水果管理系统文章基础课C语言基础
编程技巧----如何让单片机C语言循环移位 曾经接触过单片机编程的朋友一定知道这样一种情况,在使用MCU程序写作的时候,并不存在循环移位的语句,需要使用移位的语句的进行代替。那么问题来了,如何在程序中进行循环移位?小编特意整理了这样一种方法,来帮助大家解决这种问题。循环移位区别于一般移位的是移位时没有数位的... 2023-06-13 单片机C语言循环移位文章基础课C语言基础
C语言编写linux下的守护进程 在main函数中执行init_daemon();//初始化为Daemon就可以把进程变成守护进程#include#include#include#include#includevoid init_daemon(void){int pid;int i;if(pid=fork())exit(0);//是父进程,结束父进程else if(pid< 0)exit(1);//fork失败,退出//... 2023-06-13 C语言Linux守护进程文章软件开发
C语言实现小时候经常做的智力测试题 1、5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第一,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#includeint main(){int a = 0;int b = 0;int c... 2023-06-13 C语言智力测试题程序文章软件开发程序设计
C语言对数组的各种操作 #include#include//初始化数组void init(int arr[], int length){int i = 0;printf("初始化数组->:\n ");for (i = 0; i 2023-06-13 C语言数组程序文章软件开发程序设计
c语言:算数转换举例 算数转换程序1:#includeint main(){char c1 = 128;char c2 = 1;char c3 = c1+c2;//0111 1111//0000 0001//1000 0000,表示-127printf("%d\n",c3);return 0;}结果:-127请按任意键继续. . .程序2:#include 2023-06-13 C语言算数转换程序文章软件开发程序设计
c语言:实现一个函数判断year是不是润年 实现一个函数判断year是不是润年。程序:#includeint leap_year(int year)//leap year 闰年{if ((year % 4 == 0 && year / 100 != 0) || (year % 400 == 0)){return 1;}else{return 0;}}int main(){int year;... 2023-06-13 C语言闰年程序文章软件开发程序设计
专家教您如何在C语言中巧用正则表达式 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式为了提高效率,在将一个字符串与正则表达式进行比较之前,首先要用re... 2023-06-13 C语言正则表达式程序文章软件开发编程规范
malloc函数及用法 动态存储分配在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:int n;scanf("%d",&n);int a[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于... 2023-06-13 malloc函数用法C语言文章基础课C语言基础
C语言字节对齐问题详解 一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的... 2023-06-13 C语言字节对齐程序文章软件开发程序设计
C语言编程要懂得的重要概念 C语言的重要概念一、C语言的指针1.指针说明指针是包含另一变量的地址变量。(1)int *pp是一个指针,指向一个整形数。(2)int *p()p是一个函数,该函数返回一个指向整数的指针。(3)int (*p)()p是一个指针,该指针指向一个函数,这个函数返回一个整数。(4)int *p[]p是一个数组,该数组... 2023-06-13 C语言C编程文章基础课C语言基础
C语言在单片机开发中的应用 在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种。对用惯了汇编的人来说,总觉得高级语言’可控性’不好,不如汇编那样随心所欲。但是只要我们掌握了一定的C语言知识,有些东西还是容易做出来的,以下是笔者实际工作中遇到的几个问题,希望对初学C51者... 2023-06-13 C语言单片机开发文章基础课C语言基础
C51和M3的while语句效率分析 #include"stdint.h"uint8_t while_inc(uint8_t ch){uint8_t i = 0;do{ch ++;}while (++i < 8);return ch;}#include"stdint.h"uint8_twhile_dec(uint8_t ch){uint8_t i = 0;/*不产生汇编代码*/i = 8;do{ch ++;} while (... 2023-06-13 C语言while语句效率分析文章基础课C语言基础
跑马灯变形记程序介绍(一) 跑马灯实验:将一排led灯按一定的时序循环点亮。说到它,相信许多人都要会心一笑。跑马灯实验和PC机软件领域的“hello world”同属于骨灰级的入门实验。几乎所有嵌入式领域初学者都从这个实验开始,满怀激动地踏上技术之路。那第一次用程序点亮led灯的激动,那曾经的... 2023-06-13 C语言程序文章基础课C语言基础
跑马灯变形记程序介绍(二) 1)先从类型重定义说起,“#define uchar unsigned char”这样的语句,其意义恐仅是为了减少敲写“unsigned char”的时间,偷懒之举罢了。类型重定义用意何其深远,区区“define”是万万授受不起的,可详见本书章节“被低估了的typedef”... 2023-06-13 C语言程序文章基础课C语言基础
跑马灯变形记程序介绍(三) 不得不说,将每个功能抽象归类,放入不同的文件中进行编译链接,这是一个质的飞跃。但拆分模块将会极大地考验程序员的经验和思维习惯,它并不是单纯的把一个大文件拆分、编译通过就完事了,它体现的是一个工程师对于架构的理解深度。做得好,可以使系统模块间关系简单、层次分明。做... 2023-06-13 C语言程序文章基础课C语言基础