- 博客(19)
- 收藏
- 关注
原创 数据结构——排序
稳定性假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;1.冒泡排序基本思想就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,冒泡排序的特点是将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。外部排序数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。...
2022-07-17 18:51:18 783 1
原创 动态内存管理
1.malloc函数和free函数:(1)malloc函数原型:void* malloc(usingned int size);定义:向内存的动态存储区中分配一个长度为size的连续空间,返回值是分配区域的起始地址,返回类型为void*类型,最后便可根据自己的需求进行类型转换,如果开辟失败则返回NULL,若开辟内存不在使用,应使用free()函数将内存释放,表面不在使用这块动态分配内存了,相当于把之前动态申请的空间还给操作系统了。(2)特点:开辟的大小是固定的,数组在声明的时候,必须
2022-03-30 20:51:37 831 5
原创 实现通讯录
1.联系人信息:姓名、性别、年龄、电话、地址2.通讯录功能列表:(0).清空通讯录(1)添加联系人信息(2)删除指定联系人信息(3)查找指定联系人信息(4)修改指定联系人信息(5)按照名字排序所有联系人信息(6)显示所有联系人信息(7)清空所有联系人信息3.实现通讯录(1)头文件contact.h(声明函数)#pragma once#include<stdio.h>#include<string.h>#include<as
2022-03-27 21:07:46 1449 3
原创 内存空间的对齐分布
1.结构体对齐规则:(1)第一个成员在与结构体变量偏移量为0的地址处。(2)其他成员变量要对齐到对齐数的整数倍的地址处。对齐数=编译器默认对齐数与该成员大小的较小值。(3)结构体总大小为最大对齐数的整数倍(4)如果嵌套了结构体的情况,嵌套的结构体对齐到自己最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。(5)visual studio 中的默认对齐数=8,可通过#pragma pack(x)修改默认对齐数的大小,也可通过#pragma
2022-03-26 01:11:05 1757 4
原创 memcpy与memmove之间的区别
1.memcpy(c头文件<string.h>c++头文件<cstring>)(1)功能:从源内存地址的起始位置开始拷贝若干个字节到目标中,可以拷贝任意类型。(2)函数原型:void* memcpy(void* dest,void* src,unsigned count);(3)参数:dest--指向用于存储复制内容的目标数据,类型强制转换为void*指针。src--指向要复制的数据源,类型强制转换为void*类型。count--需要拷贝的字节数。返回值:该函
2022-03-23 16:56:07 1172 3
原创 模拟实现qsort函数
1.qsort函数是函数库中自带的排序函数(从小到大排序),头文件<stdlib.h>。2.声明:void qsort(void* base,size_t num,size_t width,int(* compar)(const void*,const void*));(1):base:指向排序数组中的第一个元素的指针。(2):num:数组中的元素个数.(3):width:数组中每个元素的大小,以字节为单位。(4):compar:作用是用来比较2个元素,即函数指针(回调函
2022-03-15 17:20:19 668 4
原创 函数指针
1.概念:函数指针是指向函数的指针变量,函数指针本身应为指针变量,且指针变量指向函数,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址,有了指向函数的指针变量之后,可用该指针变量调用函数,函数指针有2个用途,调用函数和做函数参数。2.声明:返回类型(*指针变量名)([形参列表])(1):“(指针变量名)”中的括号不能省略,括号改变了运算符的优先级也将发生改变,若省略整体则成为一个函数声明,声明了一个返回的数据类型是指针的函数,后面的形参列表表示指针变量所指向的函数所带的参数列表(2
2022-03-13 00:34:42 313 3
原创 浮点型在内存中的存储
1.IEEE二进制浮点数算数标准:IEEE标准从逻辑上采用一个三元组{S,E,M}来表示一个数N,它规定基数为2,符号位S用0和1分别表示正和负,尾数M用原码表示,阶码E用移码表示.2.表示形式:V=(-1)^S*M*2^E(-1)^S表示符号位,当S=0,V为正数,当S=1,V为负数M表示有效数字,1<=M<22^E表示指数位Eg:十进制5.0写成二进制为101.0,表示为1.01*2^25.0为正数,S=0,M=1.01,E=2若为十进制-5.0,写成二进制为-1
2022-03-03 21:57:22 218 3
原创 大小端字节序
1.大端模式:将数据的高字节保存至内存低地址处,低字节保存至内存高地址处。2.小端模式:小端将数据的高地址保存至内存高地址处,低地址保存至内存低地址处。3.至于为什么要区分大小端,这是因为在计算机系统中是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit,但在c语言中除了8bit的char之外,还有16bit的short型,32bit的int型(具体取决于编译器),另外对于位数大于8位的处理器,例如16、32位的处理器,由于寄存器宽度大于一个字节,那么必然会存在着一个如何将多个字节安排
2022-02-27 21:49:25 412 6
原创 换汽水问题
1.规则:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给lin元,可以喝多少瓶汽水。2:思路:方法1:换取条件为至少具有2个空瓶,lin元可购买(lin/1)瓶汽水,之后可得到(lin/1)个空瓶,每次可获得(空瓶数/2)瓶新汽水,考虑购买时空瓶数可能并不是2的倍数,新空瓶数=空瓶数/2+空瓶数%2,需多次遍历,可利用循环实现。方法2(找规律):设lin={1,2,3,4,5,6,7,8,9,10},总瓶数={1,3,5,7,9,11,13,15,17,19}由此可见总瓶数为等差数列,
2022-02-20 15:51:36 687 4
原创 青蛙跳台阶问题
1.规则:一只青蛙一次可以跳1个台阶,也可以跳2个台阶,求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果,考虑当n=0时,青蛙原地跳结果为1)(1).思路:当n=0时,青蛙原地跳共有一种跳法,当n=1时,可直接跳上台阶,共有1种当n=2时,可一次跳上一级台阶,再次跳上二级台阶,也可直接跳上二级台阶,共有2种跳法......以此类推,可以发现当青蛙跳上n级台阶时,共有f(n)=f(n-1)+f(n-2)种跳法(2).注意:当青蛙需要跳上的台阶数过大时,使用递归实现,程序中计
2022-01-25 14:48:36 4178 4
原创 实现扫雷小游戏
1.思路:创建两个二维数组,一个用来显示最终结果,一个用来显示排查结果,布置炸弹时可用srand函数、rand函数、time函数配合使用,生成随机数,可通过%的方法控制其生成范围(srand函数、rand函数、time函数三子棋章节略有介绍)2.在计算排查炸弹数时,为了防止计算越界可额外扩大其访问空间一圈,并将其初始值赋值为字符‘0’,使后面便于计算排查炸弹3.实现扫雷小游戏(1)头文件lin.h(声明函数)#pragma once#include <stdio.h>
2022-01-23 20:22:40 2483 9
原创 实现三子棋小游戏
1srand函数、time函数(1)srand()表示设置一个随机种子,每次运行都能使随机种子不同,但如果重新运行会与上次运行时的结果一样,可配合时间戳time()函数解决,srand()函数类型为unsigned int,头文件为<stdlib.h>,time()函数类型为time_t,头文件为<time.h>(2)语句:srand((unsigned int)time(NULL))------>由于类型不兼容,需强制类型转换2.rand函数(1)设置了随机种
2022-01-23 00:48:03 2988 5
原创 汉诺塔问题
1.规则:在一根柱子(a)上从上到下穿好了由小到大的轮盘,给你两根工具柱(b、c)由一根柱上移到另一根柱上,一次只能移动一片轮盘,并且始终保持上下大小的顺序2.思路:设A柱为起始柱,B为工具柱,C为目标柱,将A柱底部最大圆盘上方的所有圆盘移动至工具柱B柱,底部最大圆盘移动至目标柱C柱,B成为起始柱,A成为工具柱,将B柱底部最大圆盘上方的所有圆盘移动至工具柱,底部最大圆盘移动至目标柱C,依次循环,使每一次底部最大圆盘移动至C柱#include <stdio.h>void
2022-01-21 15:12:02 315 2
原创 折半查找法
1.折半查找法是一种在有序数组中查找某一特定元素的搜索算法(若无序需先将其排序)2.首先确定好左(left)、中(mid)、右(right)3个位置,一般情况下中间位置mid=(left+right)/2但如果查找的范围非常庞大,left+right的数值会超过程序所承受的范围,导数据致溢出泄露这时我们可以采取平均划分的办法来进行运算,对其数值较大的一方减去最小的一方得到他们之间所相差数,将相差数进行平均划分给2方,从而就可以得到相应的中间数mid=left+(right-left)/2
2022-01-20 15:27:56 19000 6
原创 windows函数(system)
1.函数名:(system)2.头文件:<stdlib.h>3.功能:发出一个DOS命令4.用法:int system(char*command);5.DOS命令:shutdown -s(关机),shutdown -a(取消关机),shutdown -s -t 时间(定时关机)...5.Eg:关机程序//关机程序#include<stdio.h>#include<stdlib.h>#include<string.h>int m
2022-01-18 19:05:08 830 3
原创 实现月份计算器
#include <stdio.h>void My_day(){ printf("\n"); printf(" 月份计算器\n"); printf(" 1.开始\n"); printf(" 2.退出\n"); printf("\n"); printf("请输入你的选择:");}void My_year(){ int year = 0, mo.
2022-01-17 19:56:55 1860 5
原创 实现猜数字小游戏
void My_caidan(){ printf(" \n"); printf(" 猜数字游戏界面 \n"); printf(" 1.<开始游戏> \n"); printf(" 2.<退出游戏> \n"); printf(" \n");}void My_you.
2022-01-17 00:03:20 3219 5
原创 编程之学习目标
1.写一个自我介绍。我是南昌高校计算机专业的一位普通学生。2.列出你编程的目标。希望熟练的掌握一门编程语言,达到运用自如的地步。3.你打算怎么学习编程。多阅读代码和敲代码,多参与编程项目实践,坚持思考,创新和维持学习。4你打算在学习编程这件事上每周花费多少时间?在其他科目都良好的情况下,多抽时间学习编程,基本上保证每天都在学习编程。你最想进入的一家IT公司。上海叠纸科技有限公司...
2022-01-10 19:13:24 1436 8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人