
C语言精彩编程百例读书笔记
关于《C语言精彩编程百例》读书笔记,仅供学习参考
小志1989
嵌入式 软件
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c语言中内存分配方式
c语言内存分配方式有下面三种:1.从静态存储区域分配由编译器自动分配和释放,在程序编译的时候就已经分配好内存,这块内存在程序的整个运行期间都存在,直到整个程序运行结束时才被释放,如全局变量与static变量。2.在栈上分配同样由编译器自动分配和释放,在函数执行时,函数内部的局部变量都可以在栈上创建,函数执行结束时,这些存储单元将被自动释放(需要注意的是,栈内存分配运算内置于处理...原创 2019-12-05 17:13:44 · 3753 阅读 · 0 评论 -
排序算法---排序算法介绍
1.算法复杂度以及稳定性分析算法名称 平均时间 辅助空间 稳定性冒泡排序 O(n2) O(1) ...原创 2019-11-27 10:52:25 · 268 阅读 · 0 评论 -
排序算法---冒泡排序
冒泡排序(bubble sort),又被称为气泡排序或者泡沫排序。它是一种较简单地排序算法。它会遍历若干次要排序地数列,每次遍历时,它都会从前往后依次地比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾!采用的相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!1.冒泡排序图文说明1.1冒泡排...原创 2019-11-27 21:50:39 · 906 阅读 · 0 评论 -
平分7筐鱼---c语言
问题描述:甲,乙,丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐则是空的,由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎么将鱼平分为3份?问题分析:根据题意可以知道:每个人应分得七个箩筐,其中有3.5筐鱼。解决该问题可以采用一个3*3的数组,数组名为a来表示3个...原创 2019-11-26 22:18:33 · 1120 阅读 · 0 评论 -
排序算法---选择排序
1.选择排序介绍选择排序是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小或最大元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小或最大元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。2.选择排序代码/**选择排序**参数说明*a-待排序的数组*n-数组的长度*/void select_sort...原创 2020-04-11 13:47:30 · 237 阅读 · 0 评论 -
排序算法---希尔排序
1.希尔排序介绍希尔排序是插入排序是一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.shell于1959年提出而得名希尔排序实质上是一组分组插入方法。它的基本思想是:对于N个待排序的数列,取一个小于N的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后,对各组内的元素进行直接插入排序。这一趟排序完成后,每一组...原创 2020-04-11 13:31:01 · 234 阅读 · 0 评论 -
删除星号---c语言
问题描述:现在有一串字符需要输入,规定输入的字符串中只包含字母和*号。请编写程序,实现以下功能:除了字符串前后的*号之外,将串中其他的*号全部删除。例如,假设输入的字符串为****A*BC*DEF*G********,删除串中的*号后,字符串变为****ABCDEFG********问题分析:该问题需要对字符串进行操作,而在C语言中没有专门的字符串变量,因此如果需要将一个字符...原创 2019-11-04 09:48:23 · 3001 阅读 · 0 评论 -
递归解决年龄问题---c语言实现
问题描述:有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3那个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第一个人,他说他是10岁。编写程序,当输入第几个人时求出其对应的年龄。问题分析:该问题是一个递归问题。要求第五个人的年龄,必须先知道第4个人的年龄,显然第4个人的年龄也是未知的,但可以有第3个...原创 2019-11-09 23:22:16 · 1905 阅读 · 0 评论 -
邮票组合---c语言
问题描述:我们邮寄都是贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资。现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可以相同也可以不同,要求编程求出用4种面值所能组成的邮资的最大值。问题分析:输入:4种邮票的面值。输出:用这4种面值组成的邮资最大值。对该问题进行数学分析,不同张数和面值的邮票所组成的邮资可...原创 2019-11-27 10:20:48 · 3400 阅读 · 2 评论 -
在字符串的指定位置插入字符---c语言
问题描述:请编写程序,实现以下功能;在字符串中的所有数字字符前加一个$字符。例如,输入A1B23CD45,输出A$1B$2$3CD$4$5。问题分析:在字符串S的所有数字字符前加一个$字符可以有两种实现方法。方法一:用串S拷贝出另一个串T,对串T从头至尾扫描,对非数字字符原样写入串S,对于数字字符先写一个$符号再写该数字字符,最后,在S串尾加结束标志。使用此方法是牺牲空间,赢...原创 2019-11-02 23:23:39 · 10981 阅读 · 3 评论 -
马踏棋盘---c语言
问题描述:国际象棋的棋盘为8x8的方格棋盘。现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘的64个方格。编写一个c程序,实现马踏棋盘操作,要求1~64这64个数字标注马移动的路径,也就是按照求出的行走路线,将数字1,2,3,......,64依次填入棋盘的方格中,并输出。问题分析:国际象棋中,“马”的移动...原创 2019-11-05 14:20:07 · 1357 阅读 · 1 评论 -
实现魔方阵---c语言
问题描述:编写程序,实现如下表所示的5-魔方阵。17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 95-魔方阵问题分析:所谓“n-魔方阵”,指的是使用1~n2(2次方)共n2个自然数排列成一个nxn的方阵,其中n为奇数;该方阵的每行,每列及对角线元...原创 2019-11-11 21:10:39 · 1180 阅读 · 1 评论 -
排序算法---插入排序
插入排序1.直接插入排序介绍直接插入排序的基本思想是:把N哥待排序的元素看成一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有N-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复N-1次可完成排序过程。2.直接插入排序图文说明直接插入排序代码/**直接插入排序**参数说明* a--待排序的...原创 2020-04-09 22:53:47 · 234 阅读 · 0 评论 -
矩阵转置---c语言实现
问题描述:编写一个程序,将一个3行3列的矩阵转置。问题分析:要解决该问题应该清楚什么是矩阵的转置。矩阵转置在数学上的定义为:设A为m x n阶矩阵(即m行n列)的矩阵,其第i行第j列的元素是a(i,j),即:A=a(i,j)mxn定义A的转置为这样一个nxm阶矩阵B,满足:B=a(j,i)mxn即b(i,j)=a(j,i)(B的第i行第j列元素是A的第j行第i列元素,记...原创 2019-11-26 17:34:19 · 9504 阅读 · 0 评论 -
排序算法-快速排序
1.快速排序介绍快速排序(qucik sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所以数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序流程:(1)从数列中跳出一个基准值(2)将所有比基准值小的摆放在基准前面所有比...原创 2020-03-16 17:04:15 · 143 阅读 · 0 评论 -
递归解决分鱼问题---c语言
问题描述:A,B,C,D,E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A,第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一份,然后只拿走了自己的一份;接着C,D,E一次醒来,也都按照同样的办法分鱼。问5人至少合伙捕到多少条鱼?...原创 2019-11-01 23:10:12 · 873 阅读 · 0 评论 -
4.自增自减
自增运算符++对操作数增加一个单位,自减运算符--对操作数减小一个单位在表达式中,自增和自减运算符在操作数钱或后是有区别对。在操作数之前时,县实施增/减操作,然后才使用操作数的值;若在操作数之后,先使用操作数的值,而后再增/减操作数;注意点:1.自减运算符++和自减运算符--,只能用于变量,而不能用于常量或表达式2.++和--的结合方向是自右向左代码实例:#inclu...原创 2020-03-06 13:57:54 · 362 阅读 · 0 评论 -
3.关系和逻辑运算
程序向读者介绍了所有的六种关系云算法和三种逻辑运算符,以及它们的优先级次序;关系运算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的是连接关系的方式。下面列出的是关系和逻辑操作符的相对优先级:最高 ! > >= < <= == != ...原创 2020-01-20 11:41:25 · 851 阅读 · 0 评论 -
2.转义字符
以一个"\"开头的字符序列,通常称为转义字符;转义字符时c语言中表示字符的一种特殊形式。通常使用转义字符表示ascll码字符集中不可打印的控制字符和特定功能的字符。转义字符用反斜线(\)后面跟一个字符或者一个八进制或者十六进制数表示。字符常量中使用单引号和反斜线以及字符常量中使用双引号和反斜线时,都必须使用转义字符表示,即在这些字符前面加上反斜线。使用转义字符时需要注意以下三点问题:...原创 2020-01-11 10:04:33 · 866 阅读 · 0 评论 -
1.数据类型转换
问题说明:c语言规定,不同类型的数据需要转换成同一类型后才能进行计算,在整型,实型喝字符型数据之间通过类型转换便可以进行混合运算。当混合不同类型的变量进行计算时,便可能会发生类型转换。相同类型的数据在转换时有规律可循,如字符必定先转换为整数,short型转化为INT型,float型数据在运算时一律转换为双精度double型,以提高运算精度。不同类型的数据发生转换时,遵循低级类型向高...原创 2020-01-09 10:55:22 · 521 阅读 · 0 评论