关闭
当前搜索:

[置顶] 通讯录--文件存储

功能要求 添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人 实现思想 采用多文件实现功能,避免程序混乱 利用转移表(函数指针数组)减少代码量 采用动态内存,节省了内存空间 使用结构体保存通讯录信息 使用I/O流的概念,并使用IO函数,完成通讯录的文件存储 具体代码:contact.h#ifndef...
阅读(66) 评论(0)

[置顶] 小游戏--三子棋(任意几子棋)

程序思想 1. 多文件实现游戏功能 2. 改变宏定义即可改变棋盘大小以及棋子个数 3. test.c:功能的测试以及函数的调用 4. game.h : 包含头文件的引用,函数的声明 5. game.c : 各函数的功能的实现。 具体实现 1. 棋牌的设置以及棋盘的显示 2. 玩家和电脑各自落子的实现 3. 输赢的判定代码:test.c#define _CRT_SECURE_NO_...
阅读(29) 评论(0)

[置顶] 浅析可变参数列表及实例分析

实例分析之前先补充几个知识点 1.可变参数 C语言函数中,一些函数参数部分的个数是可变的,我们称之为可变参数,其函数称为可变函数;例如printf()函数,它的定义是这样的: int printf( const char *format [, argument]… ); 除了有一个参数format是固定的,后面跟着的参数个数和类型是可变的,例如: printf(“%d”...
阅读(63) 评论(0)

[置顶] 浅析函数栈帧、变量的创建与销毁

函数调用过程 每一个函数调用都有一个过程,在此期间,为函数开辟栈空间、用于本次函数调用临时变量的保存、现场保护。 函数栈帧 函数调用过程中为函数开辟的栈空间称为函数栈帧。 通过一个例子来分析函数栈帧:#includeint Add(int x, int y) { int z = 0; z = x + y; return z; }int main(...
阅读(85) 评论(0)

[置顶] http协议中的1XX,2XX,3XX,4XX,5XX

转自:http://m.blog.csdn.net/blog/u013857407/21741847 HTTP协议状态码,是指在HTTP协议运作中由客户端发出请求连接,服务端建立连接,客户端发出HTTP请求,服务端返回响应信息,而在这个过程张由于客户端或服务端的问题会返回相应的错误代码并显示给用户,对应的错误代码表示不同的错误信息,根据这个信息用户可以调整相应的操作来修改出现的错误,最终避免错误...
阅读(104) 评论(0)

[置顶] c语言关键字(下)

1. unsigned 和 signed 首先来看各值的表示范围: 32 位 signed int 类型整数表示法范围:-2^31 ——2^31-1; 8 位 signed char类型数其值表示范围:-2^7—— 2^7-1; 32位 unsigned int 类型数表示法范围:0 —— 2^32-1; 8 位 unsigned char 类型数其值表示法范围:...
阅读(27) 评论(0)

[置顶] c语言小游戏---扫雷

程序思想: 多文件实现扫雷基本功能: 1)test.c : 功能的测试,函数的调用; 2)game.h : 包含头文件的引用,函数的声明; 3)game.c : 各函数的功能的实现。 功能的具体思想: 1. 雷盘的初始化:注意实际雷盘的大小与展示雷盘的大小; 2. 雷盘的打印 :注意展示雷盘的大小; 3. 布置雷盘 :随机分布雷时,注意 srand 的使用;...
阅读(88) 评论(0)

[置顶] 求平均数的几种方法

平均数:给定两个数a和b,求其平均值; 分析:数学运算中一贯的算法是(a+b)/2,但在c语言中这种算法存在着一定的缺陷,当a和b足够大时,a和b的和就会存在溢出,从而得不到我们想要的结果。c语言中有相应的操作符可达到求平均数的效果,例如:>>(右移),&按为与,^(按位异或)。 1、存在缺陷的算法(a+b)/2   例: int main() { int a=4,b=2; int r...
阅读(102) 评论(0)

[置顶] c语言关键字(中)

1、最冤枉的关键字---sizeof      经常被人认为是函数,但sizeof是关键字而不是函数;当我们不记得它是关键字时,可以通过以下几个例子来证明:      int   i=0; A)sizeof(int);   B)sizeof(i);   C)sizeof i;     D)sizeof   int;    通过编译器调试,我们发现A、B和C的值是4,而D则显示错误;int表...
阅读(2553) 评论(0)

时间复杂度和空间复杂度

时间复杂度 定义 一个函数,该函数计算的是执行基本操作的次数表示方法 —- O(N) 一般用 O(N)来表示算法的时间复杂度,N为函数中增长速率最快的表达式一般算法 O(N) 计算方法 忽略常数项,时间复杂度为O(1) 取最坏情况的时间复杂度和增长最快的表达式 递归算法的时间复杂度:递归总次数*每次递归次数几个例子例1: int mul(int n) { if...
阅读(9) 评论(0)

注释转换

功能思想: 1)注释分为两种:c 语言注释和 c++ 注释 2)文本状态分为四种: 普通状态(即NULLSTATUS) C++状态(即CPPSTATUS) C 状态(即CSTATUS) EOF状态(即EOFSTATUS) 3)四种状态关系图具体实现: 普通状态 —– C 状态(或C++ 状态) /* int i = 0; *...
阅读(55) 评论(1)

C 清空输入缓冲区,以及fflush(stdin)的使用误区和解决方法

对C 语言初学者来说,fflush(stdin)函数被解释为会清空输入缓冲区的一个系统函数,这是一个曾经几乎对过一半的说法,随着计算机科学的进步,在学习的过程中的逐步完善,将fflush(stdin)函数的过去与现在分析一下。 Personal thinking: fflush(stdin) 会清空输入缓冲区中的内容,读取时输入缓冲区中的内容会被scanf函数逐个取走,正常case下sca...
阅读(17) 评论(0)

使用qsort函数排序各类型数据

接前面模拟实现的 qsort 函数,我们知道qsort是通过回调函数来实现其功能,故而我们通过回调函数可以排序各种类型的数据代码#include #include #include #include int cmp(const void *x,const void *y) //整型 { retu...
阅读(57) 评论(0)

小型计算器

思想: 利用转移表实现计算器功能,实现之前先来补充一下转移表知识转移表(函数指针数组) 将函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组 如何定义呢? int (* parr1[10]])(); int* parr210; int (* )() parr3[10]; 答案是:parr1 parr1先和[]结合,说明parr1是数组,数组的内容...
阅读(45) 评论(0)

模拟实现库函数---qsort

实现功能之前,先补充一个知识:回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针 (地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 qsort函数:在上图中,我们可以看到,qsort的参数有函数指针 int(_cd...
阅读(39) 评论(0)

浅析指针数组、数组指针、函数指针、指针函数、函数指针数组的指针

1. 指针数组 两个例子: 1) int a[5]; 2) int *b[5]; 分析:根据前面数组的学习,我们知道数组的类型是int [5],显而易见(1)是一个数组,(2)是什么,指针还是数组?答案是数组,类型是int *[5],数组当中存放的都是指针。 我们知道,定义数组时,往往是在栈上提供一大块空间给数组存放内容,而对于指针而言,只占四个字节的空间;下面通过内存来证明一下两个都是...
阅读(31) 评论(0)

斐波那契数列算法——递归与非递归

斐波那契数列: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈...
阅读(65) 评论(0)

大小端介绍及其检测方法

大小端介绍 大端存储 将一个数据的低字节序的内容存储到高地址处,高字节序的内容存储到低地址处。 2.小端存储 将一个数据的低字节序内容存储到低地址处,将高字节序的内容存储到高地址处。检测方法算法一:取出一个整型数的地址,并拿出第一个字节判断是高字节序还是低字节序#define _CRT_SECURE_NO_WARNINGS 1#include int check_sys() {...
阅读(36) 评论(0)

模拟实现库函数strlen

库函数 strlen 求字符串长度,当遇到‘\0’时,停止计算;关于这个函数的声明以及头文件,通过msdn了解一下: 首先分析一下实现过程: 首先给定字符串,必定占一定的内存空间,计算大小时,我们可以通过计数的方法来计算字符串的长度,每遇到一个字符,计数器加 1,直到遇到‘\0’停止计算。 下面实现自己的函数:#include #include<assert....
阅读(31) 评论(0)

函数的调用约定

转自:http://blog.csdn.net/Blue_Dream_/archive/2007/08/29/1763471.aspx  函数调用约定收藏 新一篇: 函数名修饰约定规则 | 旧一篇: 构建自己的操作系统 1 一:函数调用约定: 函数调用约定是函数调用者和被调用的函数体之间关于参数传递、返回值传递、堆栈清除、寄存器使用的一种约定; 它是需要二进制级别兼容的...
阅读(38) 评论(0)

模拟实现库函数strcpy

库函数——strcpy 简单来说就是字符串的拷贝,对于这个函数返回类型、参数类型以及头文件,我们通过msdn来看一下:看了这个函数的相关知识,下来我们先分析一下他的实现过程: 首先要有一个字符串和一个目标空间,将字符串拷贝到目标空间时,我们可以通过指针来完成;定义指针变量分别指向目标空间的首地址以及字符串的首地址,逐一将字符串的内容放到数组当中,直到‘\0’结束。(注意:字符串拷贝过程中‘\0’...
阅读(32) 评论(0)

数组的简单总结

数组  1.定义       一组相同类型元素的集合  2. 创建方式                  type_t   arr_name   [const_n];                   //type_t 数组的元素类型         //[const_n] 常量表达式,用来指定数组的大小  3.数组的类型   int b;    in...
阅读(84) 评论(2)
29条 共2页1 2 下一页 尾页
    个人资料
    • 访问:4147次
    • 积分:297
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论