
c语言
centor
这个作者很懒,什么都没留下…
展开
-
二分查找
关于二分查找的代码实现#include<stdio.h>int find_second(int arr[], int k, int left, int right){ while(left<=right) { int mid=left-(left-right)/2; if(arr[mid]>...原创 2017-03-25 22:47:35 · 351 阅读 · 0 评论 -
冒泡排序的实现
#includevoid swap(int *a, int *b){ int temp = 0; temp = *a; *a = *b; *b = temp;}void bubble_sort2(int *arr, int length){ int i = 0; int j = 0; int flag = 1原创 2017-04-03 12:22:26 · 495 阅读 · 0 评论 -
在旋转之后的已排序数组中查找一个数字
在旋转之后的已排序数组中查找一个数字(复杂度O(N))解法:我们可以用二叉搜索。每次都把数组分成两半,判别哪一半是排过序的。如果待查元素在排过序的那一半,那么用二叉搜索。如果在另一半,那么我们再将这块分为两块判断哪一块是排过序的。如此递归查找。#include<stdio.h>int Find_d(int arr[], int d,int sz)//参数分别是,源数组,所要查找数字,源数组元素个数原创 2017-06-06 11:09:11 · 393 阅读 · 0 评论 -
C和CPP注释转换
注释转换是将如下几种情况的注释分别按情况转换为相应注释风格(将C注释转换为C++注释风格)首先我们需要两个文件来分别存储需要修改的源码和修改之后的代码,这里我将文件创建在当前目录之下注释转换的实现依据有限状态机编程思想,状态转换如下图所示:下面是input.c文件内修改的源码的注释及需要转换的情况的说明// 1.一般情况int num = 0;/*int i = 0;*/// 2.换行问题/*原创 2017-06-03 14:34:43 · 1627 阅读 · 2 评论 -
顺序表(动态)
用动态开辟内存的方式写一个列表SeqList.h#ifndef _SEQLIST_H__#define _SEQLIST_H__#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#include <assert.h>#include <errno.h>#include <stdlib.h>#defi原创 2017-06-05 18:40:55 · 328 阅读 · 0 评论 -
顺序表(静态)
SeqList.h#ifndef _SEQLIST_H__#define _SEQLIST_H__#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#include <assert.h>#define MAX 1000#define Types "%d"typedef int DataType;ty原创 2017-06-05 17:26:04 · 262 阅读 · 0 评论 -
单向链表
实现一个基本具有增删查改功能的单向列表基本思想:结构体内含有一个节点数据变量和指向下一节点的指针变量,最后一个节点内的指针变量为空,如下图所示,基本操作都是基于节点地址的操作注:在列表的功能实现中,增加节点是动态开辟了一块空间,因此在删除节点时一定要释放节点所在空间,以免造成内存泄漏;在每个功能实现之前先考虑清楚实现此功能会遇到的各种情况;在函数传参时一定要清楚所传参数为值传递还是地址传递,形式参数原创 2017-06-08 12:24:18 · 313 阅读 · 0 评论 -
链表和顺序表习题(二)
1.判断单链表是否带环?若带环,求环的长度?求环的入口点? 用快慢指针。快指针每走两步,慢指针走一步,如果两者在某个点处相遇,则链表带环。快指针每次走两步,而慢指针每次走一步是有原因的:若快指针每次走3或者更多,而慢指针每次走一,可能会有快慢指针错过,得不到想要的相遇点。(图中k为大于一正整数,表示快指针走过整个环的次数) 相遇点得到后,再用两个相同速度指针,P1从链表头开始每次走1,P原创 2017-06-30 20:52:09 · 523 阅读 · 0 评论 -
C语言中的可变参数
在一些函数中参数个数可变例如printf()函数,其函数原型为:int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf("%d",i); printf("%s",s); printf("the number...原创 2017-04-23 10:54:01 · 612 阅读 · 0 评论 -
链表和顺序表习题(一)
1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用? 链表 顺序表 每个元素的访问 每个节点都需要通过指针找到内存然后加载到缓存中 内存访问时,不需要多次从内存到缓存的步骤 头插,头删,中间位置 直接增加或删除节点 在插入或删除之前要先对之后的数据进行挪动 尾插,尾删 需要对空间进行操作 直接对数据进行操作,空间是之前一次性开辟好的 空间操原创 2017-06-15 17:40:45 · 1986 阅读 · 1 评论 -
通讯录3.0(文件操作)
通讯录3.0的实现,将通讯录的数据写入文件,并能保存文件,以解决联系人数据的存储问题在实现文件操作之前先了解文件操作(本次工程所用)函数文件操作函数的介绍(点击查看)在工程目录下创建一个用以保存通讯录数据的.txt文件下面是代码的编写contact.h#define _CRT_SECURE_NO_WARNINGS 1#ifndef __CONTACT_H__#define __CONTACT_H原创 2017-05-31 22:39:19 · 1218 阅读 · 0 评论 -
C语言open,read,write函数,及文件读写
open头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>定义函数: int open(const char * pathname, int flags); int open(const char * pathname, int flags, mode_t mode);函数说明:参数 pat原创 2017-05-31 22:54:32 · 26650 阅读 · 0 评论 -
通讯录2.0(动态实现)
实现动态开辟内存的通讯录在实现动态开辟内存时首先得了解动态内存分配1.malloc和free函数原型 void *malloc( size_t size ); void free( void *pointer ); malloc分配一块连续的内存,参数以字节数为单位,如果空间申请失败,则函数返回NULL,free常和malloc结合使用并成对出现。2.realloc void原创 2017-05-29 22:57:01 · 724 阅读 · 0 评论 -
猜数字小游戏
关于猜数字游戏的实现#include#include#includevoid menu(){ printf("************************\n"); printf("**** 1.PLAY 0.EXIT ****\n"); printf("************************\n");}void原创 2017-03-25 22:48:49 · 309 阅读 · 0 评论 -
三子棋的C实现
三子棋的C实现#ifndef __GAME_H__#define __GAME_H__#include#include#include#define COLS 3#define ROWS 3void chessboard(char arr[ROWS][COLS], int row, int col);//打印棋盘void init_board(char原创 2017-04-05 17:17:49 · 423 阅读 · 0 评论 -
数组与指针
sizeof(关键字):C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。strlen(函数):所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到...原创 2017-04-05 20:09:45 · 321 阅读 · 0 评论 -
函数的栈帧
内存栈区:由编译器自动分配和释放,存放函数的参数值,局部变量的值等。操作方式类似与数据结构中的栈; 堆区:一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。与数据结构中的堆是两码事,分配方式类似于链表。全局变量和静态变量存放于此。常量字符串放在此,程序结束后由系统释放。存放函数体的二进制代码。 函数的栈帧从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局...原创 2017-04-20 14:48:23 · 456 阅读 · 0 评论 -
宏与函数的对比
宏与函数各自优缺点宏优于函数类型无关:在宏定义时,不需要先为内容确定类型。函数则必须为参数、返回值声明类型。规模、速度更胜一筹:因为宏的内容不需要像函数般占据内存,在工程很庞大时,这点会很明显。而且在工程很小的情况下,调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更短。传递类型作为参数:(范例引用于网络图片)函数优于宏代码较短:每次使用宏,原创 2017-04-12 21:53:14 · 650 阅读 · 0 评论 -
通讯录1.0(C语言版)
实现一个通讯录的基本增删查改功能。代码实现contact.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#define MAX 1000typedef struct PeInfo{ char name[20]; int age; char sex[10]; char原创 2017-05-18 15:43:10 · 510 阅读 · 0 评论 -
指针与数组
指针和数组的对比( arr[] 与 &a )此处引用《C语言深度解剖》中一个表格,很直观的区别了指针与数组 指针 数组 内容 保存数据的地址,任何存入指针变量p 的数据都会被当作地址来处理。p 本身的地址由编译器另外存储,存储在哪里,我们并不知道 保存数据,数组名a 代表的是数组首元素的首地址而不是数组的首地址。&a 才是整个数组的首地址。a 本身的地址原创 2017-05-08 17:51:43 · 355 阅读 · 0 评论 -
C语言中运算符的总结
算术操作符 C语言中包含如下几种算数操作符,下面来一一认识+ - * / % 以上操算数操作符中除了 %操作符之外,其他的几个操作符可以作用于整数和浮点数 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法 % 操作符的两个操作数必须为整数。返回的是整除之后的余数移位操作符>>原创 2017-03-26 10:13:38 · 400 阅读 · 0 评论 -
VS 和 VS Code回到上一次点击位置
VS:Ctrl + -VS Code:Alt + ←原创 2018-12-06 17:53:02 · 56118 阅读 · 0 评论