- 博客(36)
- 收藏
- 关注
原创 文件函数
1.fopen: 函数的功能:打开文件(基于标准I/O文件) 函数的原型:FILE * fopen(const char *path,const char *mode) 函数的参数:path:打开的文件路径或文件名 mode:表示流行态 (1)r:打开只读文件,该文件必须存在 (2)r+:打开读写文件,该文件必须存在 (3)w:打开只
2016-12-08 22:19:09
788
原创 文件
通常打开文件的方法: • FILE *文件指针变量; 文件指针变量=fopen(“文件名”, “文件使用方式”); If(文件指针变量= =NULL) { printf(“cannot open this file\n”); exit(0); } 注:当打开文件出错时,函数 fopen 会返回一个空指针NULL 出错
2016-12-07 22:18:08
632
原创 fread
#include #include int main() { FILE *fd; int number; char s[2048]; char *ptr; ptr = s; fd = fopen("fread.c","r+"); if(NULL == fd) { printf("fopen is e
2016-12-04 22:16:34
638
原创 通讯录终极版
#include #include #include #define len_linklist 0 #define maxsize 11 #define yes 1 typedef struct node { char name[maxsize]; char tel_number[maxsize]; struct node *next; }lnode,*linkl
2016-12-03 23:35:18
467
原创 链表的一级指针和二级指针
1,初始化链表头部指针需要用二级指针或者一级指针的引用。 2,销毁链表需要用到二级指针或者一级指针的引用。 3,插入、删除、遍历、清空结点用一级指针即可。 分析: 1,只要是修改头指针则必须传递头指针的地址,否则传递头指针值即可(即头指针本身)。这与普通变量类似,当需要修改普通变量的值,需传递其地址,否则传递普通变量的值即可(即这个变量的拷贝)。使用二级指针,很方便就修改了传入的
2016-11-28 20:55:41
1075
原创 简单的链表通讯录
#include #include #include #define len_linklist 2 #define maxsize 11 typedef struct node { char tel_number[maxsize]; char name[maxsize]; struct node *next; }lnode,*linklist; int Init_linkli
2016-11-27 23:01:54
637
原创 数据结构
顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据。链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。不能随即访问链表元素,必须从表头开始,一步一步搜索元素。它的优点是:对于数组,可以动态的改变数据的长度,分配物理空间。
2016-11-25 22:51:48
441
原创 大端小端
电脑的cpu有两种,大端和小端cpu。 大端cpu: 所谓的大端,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端: 所谓的小端,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高
2016-11-24 22:47:14
408
原创 指针
1.函数指针: 函数指针就是指向函数的指针可以作为函数的形参,能够提高代码的扩展性。 在这里我们需要知道回调函数: 回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函 数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是 回调函数。 回调函数的应用是非常广泛的。通常,当我们想通
2016-11-22 22:53:50
366
原创 课堂总结
函数的实现过程 1通过函数名找到函数的入口地址; 2给形参分配空间; 3传值(址):把实参变量对应的内存空间的值(址)传递给形参变量对应的空间 4执行函数体语句 5函数返回并释放内存空间 函数的注意点: 当只读(只使用不修改)实参变量的值时,传实参变量名; 当写(使用,修改)实参变量对应的内存空间的值时,传实参变量的地址; 传入参数 传出参数,带出函数的参数
2016-11-19 21:11:29
385
原创 内存分配
1 2 3 void * malloc(usigned size); void * realloc(void *ptr, unsigned newsize); void * calloc(size_t numElements, size_t sizeofElement); malloc()在内存的动
2016-11-18 21:44:00
463
原创 quweiti
#include #include #define NUM 320 int number[NUM]; int flag(int i) { int j; if(i == 1) { return 0; } if(i == 2) { return 1; } if(!(i % 2)) { return 0; } for(j = 3; j <=
2016-11-16 22:58:15
472
原创 趣味题
#include int trangle(int n) { int i; int j; for(i = 0; i <= n; i++) { for(j = 0; j <= n + 1 - i; j++) { printf(" "); } for(j = 1; j < i+2; j++) { printf("%6d",c(i , j)); }
2016-11-15 22:14:47
411
原创 趣味题
#include int a[3][3]; int count; int main() { int i; int j; int k; int m; int n; int flag; printf("It exists possible distribution plans:\n"); for(i = 0; i <=
2016-11-14 20:52:51
492
原创 课堂知识总结
已掌握知识 1.*:间接运算符,取值运算符 2.字符串是地址 3.[] = *(); ptr[i] = *(ptr + i);chu'shi'hua 5.当指针被赋值NULL时 不能对零地址空间进行操作; 6常量不能改; 7数组名是指针常量,保存数组首元素的地址 8.若 a是数组名,&a 数组地址 9对一维数组地址取值 = 数组首元素地址 *(&a) = a 对数组名
2016-11-13 22:09:01
421
原创 辗转相除法
「辗转相除法」又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的.利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd.所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作 gcd(8,12)=4. #include int main
2016-11-12 21:48:43
715
原创 趣味题的分析
数学上证明了一个数用2~根号N的整数逐一测试是否整除后即可判断N是否素数; 在C中开根号需要调用专门的sqrt函数,这样比较慢,还涉及到要使用double型数据; 简略即认为N/2稍大于根号N,值也比较接近,所以用除法代替开根号的调用,简化算法。 #include int test_(int n) //判断是否为素数 { int i; int
2016-11-11 20:42:48
506
原创 程序中的小方法
分解一个多位数的每一位,从低位开始分解: while(k != 0) { printf("%d",i%10); i = i / 10; } 从高位开始分解: for(t = 0,k = 1000; k >= 10; t++) { a[t] = (i % k) / (k /10); k /= 10; } #include #includ
2016-11-10 21:22:58
433
原创 课堂问题 1110
进程虚拟地址空间(分配4G) 高地址 1G分配给内核(内核:操作系统的核心) 3G给用户空间: 栈空间: 局部变量 函数形参 自动变量 (先进后出) 系统管理 堆空间:malloc calloc ralloc 先进先出 用户管理 全局数据区:bss :未初始化的全局变量
2016-11-09 21:50:43
343
原创 课堂问题1108
C语言特点: 1 C语言可以访问硬件 2 C语言运行效率高 3 C语言具有出色的移植性 C语言是面向结构的语言,缺点:复用性较差,代码维护性较差,拓展性较差,可读性较差 提高效率的方法: 减少函数的调用,尽量使用静态库编译 sizeof是运算符 对数据类型使用时需要加括号 地址是固定长度,长度大小由操作系统的位数确定 strlen是函数 但是不统计‘、
2016-11-08 21:34:17
370
原创 课堂问题1106
1 i++和++i的区别 ++i相当于下列代码 i += 1; return i; i++相当于下列代码 j = i; i += 1; return j; 当然如果编译器会将这些差别都优化掉,那么效率就都差不多了。 #include #define MAX_STR_LEN 32 char passwd[MAX_STR_LEN] = {0};
2016-11-07 21:45:12
466
原创 位运算
6种位运算: &按位与 |按位或 ^按位异或 ~取反 >>右移 按位与运算 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 按位或运算 按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二
2016-11-06 21:51:19
328
原创 二进制的源码 补码 反码
二进制 我们常用的十进制是「逢十进一」的,我们只需要使用0、1、2、3、4、5、6、7、8、9这10个数字符号, 就能表示所有的自然数。与此类似,二进制是「逢二进一」的进位制,它只需要使用0、1这两个数字符号,就能表示所有的自然数。 例如 0000 0000(二进制) 表示 0(十进制) 0000 0001(二进制) 表示 1(十进制) 0000 0111(二进制) 表示 7(十进制)
2016-11-05 19:18:54
2809
原创 指针的值传递和地址传递
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 指针传递: 形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作 指针传递的实质: 指针传递参数本质上是值传递的
2016-11-04 16:28:28
6886
原创 C语言中的字符串
1.标准函数gets与puts分别用于字符串的整体输入和输出,且gets接收字符串时,字符串中可包含空格。 使用格式为:gets(字符数组)或者puts(字符数组),由头文件stdio.h支持 2.常用字符串处理函数(由头文件string.h) strlen:测试字符串长度的函数,函数返回值为字符串的实际长度; strcat:连接两个字符串,格式(strcat(字符数组1,字符数组
2016-11-03 21:08:32
381
原创 用户定义数据类型
1结构体: 实际变成中,处理批量数据是非常普遍的,对于同类型的批量数据;作为一个整体; 例如定义一结构体描述学生的类型 struct Student { char name[9]; unsigned No; float c; float ave; }; 关键字struct表示定义的是结构体数据结构类型,标识符Student是结构体类型名;
2016-11-02 14:28:15
4214
原创 头文件和库函数的区别
1.头文件中有函数的申明,库文件实现函数的定义。 比如,printf函数。使用时应包括stdio.h,打开stdio.h你只能看到,printf这 个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库 中。而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。程序 中包括了stdio.h这个头文件。链接器就能根据头件中
2016-11-01 21:07:46
5204
原创 程序1031
#include int main() { int i; int count=0; for(i = 5;i <= 100;i += 5) { count++; if(i%25==0) { count++; } } printf("100!的尾数有%d个0\n",count); return 0; } 这个一个计算100!尾数有多少个0;显然 100!超过in
2016-10-31 21:21:47
403
原创 指针
例如 int *p; *:取指针所指向变量的内容,单目运算符 &:取变量的地址,单目运算符; 指针变量的初始化: int *p=&a;或者 int *p; p=a; void swap(int p1,int p2) { int temp; temp=p1; p1=p2; p2=temp; } int main() { int a;
2016-10-30 21:56:39
342
原创 程序运行过程
1. 预处理 首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii)。预处理命令为: gcc –E hello.c –o hello.i 预编译过程主要处理那些源代码中以#开始的预编译指令,主要处理规则如下: u 将所有的#define删除,并且展开所有的宏定义; u 处理所有条件编译指令,如#if,#ifdef等; u 处理#inc
2016-10-29 18:26:58
510
原创 C语言函数
函数 1.函数的概念及种类 1.1 库函数(系统函数) 由C系统提供,用户无须定义,也不必在程序中做类型说明,只需在程序前包含有该函数的头文件即可在程序中直接调用 例如:printf,scanf,getchar等 1.2用户定义函数 用户按照自己的需求写的函数,分为有参函数,无参函数; 2.函数的调用 例如计算三角形的面积 #include #include float area
2016-10-28 16:54:57
414
原创 C语言数组
数组 1.1一维数组的定义及初始化 一维数组的定义格式:int a[10]; a为整型数组,共10个元素; 初始化:例如: int a[5]={1,2,3,4,5}; 1.2 一维数组的应用 用冒泡法对键盘输入的10个数据进行从小到大的排序,并输出排序结果 1.3 二维数组的定义和初始化 1.3.1 二维数组的定义与初始化 格式:
2016-10-27 19:00:38
577
原创 C语言 循环程序设计
一.循环程序设计 1. for语句实现循环 for语句格式如下: for(表达式1;表达式2;表达式3) 循环体 若循环体超过一条语句就要用大括号括起来; 执行过程:计算表达式1;判断表达式2是否为真(非0为真,0为假);若为真,则执行循环体 再执行表达式3:程序流转到判断表达式2;退出循环; 例如计算1+2+3+4+...+100的值
2016-10-26 18:09:24
939
原创 C语言基础结构
一.顺序结构程序设计 1.1格式化输入输出函数(printf函数以及scanf函数) #include int main() { int a; scanf("%d\n",&a); printf("%d\n",a); return 0; } 运行结果; 6 6 1.2字符数据的输入输出(putchar函数以及getchar函数) #
2016-10-25 22:15:38
541
原创 C语言基础知识
一C语言基础知识 1.基本数据类型:整型(整型,短整型,长整型),字符型,浮点型(单精准,双精准),无类型 说 明 字符型 短整型 整型 长整型 单精度浮点型 双精度浮点型 无类型 数据类型 char short int long float double void #include int main(){
2016-10-24 21:22:40
483
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅