
C语言程序设计
文章平均质量分 50
北极熊的白毛
不要叫我单身狗,我的代号叫孤狼
展开
-
排序算法总结一(直接插入排序与希尔排序)
排序算法在编写代码的过程当中应用十分广泛,作用非常重要。它的作用就是将一个排序混乱的序列按照一定的规则排列有序。下面一张图基本可以清晰的表示排序算法的分类(有几个不常用的排序算法没有填写)。 今天就是总结一下八大主要的排序算法的使用范围,同时也从稳定性、时间复杂度、空间复杂度等方面分析一下这几个主要的排序算法。 所谓稳定性,就是在待排序的文件中,当存在多个关键字相同的记录时,经过排...原创 2020-04-25 12:46:01 · 673 阅读 · 0 评论 -
排序算法总结二(冒泡排序和快速排序)
上一篇文章总结了插入排序中的直接插入排序和希尔排序,本篇文章总结一下 排序算法中的交换排序,其中包括冒泡排序和快速排序。原创 2020-04-25 12:40:05 · 605 阅读 · 0 评论 -
总结字符串匹配算法(KMP算法)
什么是KMP算法呢? KMP算法是一种改进的字符串匹配算法,其核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。 KMP算法的时间复杂度O(m+n)。 如下图所示,假设有两个字符串,假设将字符串Ar称之为主串,将字符串称为模式串,现在使用一个算法去判断模式串是否与主...原创 2020-04-25 12:42:33 · 497 阅读 · 0 评论 -
斐波那契数列的两种解决方案
什么是斐波那契数列呢? 斐波那契数列,又称黄金分割数列,指的是这样一个数列{1,1,2,3,5,8,13,21,34,55,89,144……},因数学家列昂纳多·斐波那契以研究兔子繁殖问题为例子而引入,故又称为“兔子数列”。 通过观察该数列,你会发现该数列的规律,即从第三个数开始,每一个数都是它前面的两数之和。若使用数学中的通项公式表示该数列,则应该表示为F(n)=F(n-1)+F(n-2) ...原创 2019-08-11 15:30:27 · 336 阅读 · 0 评论 -
试题练习总结(指针加法)
例题:有下列一段代码,请说明p++的含义() int arr[10]={1,2,3,4,5}; int *p=arr; *p=10; p++; *p=20; A、加一个字节 B、加一个单元格 C、加一个数组 这道题的正确答案是B。解析如下: 先...原创 2019-07-28 12:39:45 · 238 阅读 · 1 评论 -
关于动态内存的一些知识点整理
在我们创建代码的过程中,我们经常会用到动态内存。下面我们了解一下关于动态内存的一些关键函数。首先看一下动态内存里面的几个关键函数,它们分别是malloc、calloc、realloc和free。 1、malloc函数的作用是专门用于申请内存的。这个函数需要一个参数n*sizeof(int),表示需要开辟的动态内存的大小。如果动态内存申请成功,则函数的返回值就是所...原创 2019-07-23 20:41:50 · 261 阅读 · 0 评论 -
浅析continue、break、goto的区别
一些学过的编程的人应该听过或者了解过continue、break、goto这几个循环语句,或许有人还对它们的用法不太熟悉。它们都属于循环语句,但是每一个语句都有不同的用法和作用效果。今天,我们就来简单的分析一下continue、break、goto的区别。 1、continue,译为中文是“继续”。它的作用与用法和break有些类似。它的作用是当循环符合要求以后,结束本次循...原创 2019-07-24 19:59:29 · 2809 阅读 · 0 评论 -
关于程序中浮点数产生的误差的分析
这是我人生中的第一篇博客,肯定会有许多问题和错误,还请大家及时指点。 下面就在C语言程序中运用浮点数时产生的误差进行一些分析,首先先看一个程序: # include<stdio.h> int main() { float a=123456789; printf("%f\n",a); return 0; } ...原创 2018-05-13 15:20:54 · 754 阅读 · 0 评论 -
宏定义与类型定义的区别
先来看一下宏定义与类型定义的定义。 一般来说,宏定义(# define)是相当于字符替换,在代码预编译时就进行替换,编译时候所有宏定义的代码改变为被替换的代码,不限制任何代码,任何字符都可以进行宏定义,宏定义可以写在程序中的任何位置,它的作用范围从定义触到文件尾,在这些范围内都可以用宏名进行替换,宏是针对预处理器的任务; 而类型定义(typ...原创 2018-09-21 22:14:22 · 3463 阅读 · 0 评论 -
关于对const的一些认识
首先在了解const的相关用法之前,大家先了解两个概念: 左值:位于赋值符号的左边,具有写权限(即可以更改原来的值):右值:位于赋值符号的右边,具有读权限(只能查看原来的值)。 int a=10; //可读可写 即在后面的程序中可以更改a的值 const int a=10; //常变量,只可读不可写,不可以在后面的程序中更改a的值 const的相关特点: (1)限定了写权限,...原创 2019-03-16 00:06:35 · 135 阅读 · 0 评论