C语言
文章平均质量分 75
夜微雨
落花人独立,微雨燕双飞。
展开
-
[C/C++]---内存管理(一)
目录一:C/C++中内存分布1.C/C++程序内存区域划分:2.定义:二:C语言中的动态内存管理方式:1函数原型:2区别:三:C++中的内存管理方式:1.使用方法:2.operator new与operator delete函数3.new/delete实现原理4.定位new表达式(placement-new)一:C/C++中内存分布1.C/C++...原创 2020-02-21 15:59:10 · 248 阅读 · 0 评论 -
C/C+各类型在各个平台下所占大小常用查找表
原创 2019-11-17 11:15:15 · 132 阅读 · 1 评论 -
C语言实现通讯录
实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人8. 保存联系人到文件9. 加载联系人10.排序所有联系人//cont...原创 2019-06-30 21:51:57 · 3910 阅读 · 0 评论 -
模拟字符串实现库函数(strncpy ,strncat ,strncmp )
1.模拟实现strncpy//1.模拟实现strncpy #include <stdio.h>#include <stdlib.h>#include <assert.h>char * mystrncpy(char * dest, const char * sour, int num){ char *p = dest; char *q = ...原创 2019-07-01 00:26:41 · 207 阅读 · 0 评论 -
文件操作总结
首先 什么是文件?磁盘上的文件是文件。我们一般谈的文件有两种:程序文件、数据文件程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。而我们要讨论的是数据文件.文件名一个文件要...原创 2019-07-02 23:47:59 · 332 阅读 · 0 评论 -
qsort函数实现
首先在实现my_qsort函数前,先了解下编译器函数库对于qsort的描述.qsort函数 :编译器函数库自带的快速排序函数。功能:使用快速排序算法思想进行排序 头文件: stdlib.h 函数用法: qsort(void*,size_t num,size_t size,int (*)(const void*, const void*));或者qsort(a, size_t ...原创 2019-07-03 23:39:54 · 2347 阅读 · 0 评论 -
斐波那契(Fibonacci)数列,青蛙跳台阶及汉诺塔问题
斐波那契数列.斐波那契数列指的是: 1, 1, 2, 3, 5, 8, 13......这样的数列.以下是两种实现实现斐波那契数列的方法.递归实现:#include <stdio.h>#include <stdlib.h>int fib(int n){ if (n <= 2) { return 1; } else return ...原创 2019-08-16 17:15:18 · 278 阅读 · 0 评论 -
求无序数组中前K个最小的数字
采用快速排序的思想实现.选择tmp作为枢纽进行排序,把比他小的数都放在他的左边,比他大的数放在他的右边.找到它的位置.然后以tmp位置进行查找:如果他的位置 == k-1, 那么它就是第k个最小的数;如果它的位置 < k-1,那么第k个小的元素一定在数组的右半部分, 然后在它的右半部分继续查找;如果它的位置 > k-1,那么第k个小的元素一定在数组的左半部分...原创 2019-08-18 18:22:08 · 900 阅读 · 1 评论 -
求无序数组中元素出现次数超过数组长度一半的数字.
求无序数组中元素出现次数超过数组长度一半的数字.首先给出几个"元素出现次数超过数组长度一半"测试数组:a1[7]={1 ,2, 3 , 5 , 3 , 3 , 3};a2[5]={5, 3, 5, 5, 1};a3[9]={8 ,5 ,6 ,5 ,4 ,2 ,5 ,5 ,1};不难发现: 数组中如果一个数字出现次数超过数字长度的一半.如果把这个数组排序,那么排序后...原创 2019-08-18 22:18:38 · 508 阅读 · 0 评论 -
替换字符串中的空格
要求:写一个函数,将字符串中的空格替换为%20.样例:"abc de f"; //替换前"abc%20de%20f" //替换后 看到这个题很多人的想法是在重新申请一个数组,然后遍历原数组,依次将原数组非空格字符赋给新创建的数组,碰到空格后直接用%20进行替换,直到将原数组遍历结束即可,然后再将新数组进行遍历输出即可得到....原创 2019-08-19 16:11:29 · 303 阅读 · 0 评论 -
查找最大子数组
题目:输入一个整形数组,数组里有正数也有负数.数组中一个或者连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求:时间复杂度为O(n)例如: 输入的数组为{1,-2,3,10,-4,7,2,-5} 和最大的子数组为{3,10,4,-4,7,2}因此输出该子数组的和为18;方法一:设置max=arr[0],进行两次for循环,不断进行累加sum判断与max关系,最终便可...原创 2019-08-19 16:41:23 · 727 阅读 · 0 评论 -
从第一个字符串中删除第二个字符串
输入两个字符串,从第一个字符串中删除第二个字符串.例:arr1[]={"How are You"};arr2[]={"aeo"};删除后为:arr1[]={"Hw r Yu"} ;方法一: 首先看到这个题,惯性思维我们会想到申请一个新的数组,然后遍历arr2,再遍历arr1z,碰到相同的进行删除操作即可.再把删除后的放在新数组,打印输出即可.不过这...原创 2019-08-20 15:34:21 · 2920 阅读 · 0 评论 -
模拟实现pow(x,y)库函数
pow函数.头文件:#include <math.h>pow() 函数用来求 x 的 y 次幂(次方),其原型为:double pow(double x, double y);看到这个题,我们首先能想到是计算量这么大的题,肯定要使用递归.实现:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>...原创 2019-08-24 22:28:24 · 3038 阅读 · 0 评论 -
字符串压缩
字符串压缩,输入字符串只包括 a-z字母及结束标志,请编写函数实现对连续出现字符进行压缩.例如:压缩前:str="aaabbcdddd";压缩后:str="3a2bc4d"; 看到这个题,我们可以想到的是从前到后遍历字符串,设置计数器,对每个出现字母使用cout进行计数,但要注意每次计数完一个字符都要进行cout重置还有cout应该设置初值时从1开始...原创 2019-08-25 16:03:41 · 281 阅读 · 0 评论 -
strlen 和sizeof 区别,联系
一.sizeof头文件: typedef类型: unsigned in使用方法:sizeof (类型说明符) 或者 sizeof 表达式(表达式可以是数组、指针、类型、对象、函数等)作用:返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。sizeof语法有以下两种:sizeof(type_na...原创 2019-08-25 18:55:57 · 345 阅读 · 0 评论 -
程序的编译,链接
我们基本都知道一个程序由代码行再到最后被执行生成目标文件,会经历四个过程:1:预编译(Prepressing) 2.编译(Compilation) 3.汇编(Linking)4.链接(Assembly)但其中每个步骤都发生了什么,还是不太清楚,今天我们就来学习了解下这个过程.一.预编译.(假设原文件是.c文件 .c------> .i文件)linux命令(gcc...原创 2019-08-23 00:17:24 · 193 阅读 · 0 评论 -
结构体,枚举总结
结构体结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构体的声明struct tag{ member-list;} variable-list ;例如一个学生结构体类型声明:struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 ch...原创 2019-06-27 00:14:36 · 2113 阅读 · 0 评论 -
简单指针问题详解
1.指针是什么?指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元#include <stdio.h>int main(){int a = 10;//在内存中开辟一...原创 2019-06-23 14:17:17 · 1046 阅读 · 0 评论 -
模拟实现字符串库函数及字符串函数注意事项
1.实现strlen.(求字符串长度)size_t strlen ( const char * str );字符串已经'\0' 作为结束标志,strlen函数返回的是在字符串中'\0' 前面出现的字符个数(不包 含'\0' )。 参数指向的字符串必须要以'\0' 结束。 注意函数的返回值为size_t,是无符号的( 易错)。模拟实现:#define _CRT_SECURE...原创 2019-06-23 00:21:57 · 256 阅读 · 0 评论 -
Program 2.(1给定两个整形变量的值,将两个值的内容进行交换,2求10 个整数中最大数3.将三个数按从大到小输出4.求两个数的最大公约数)
1. 给定两个整形变量的值,将两个值的内容进行交换。# define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main(){ int x = 0; int y = 0; int z = 0; printf("请输入需要交换的两个数字"); scanf("%d %d",...原创 2019-04-20 21:34:53 · 312 阅读 · 0 评论 -
Program 3.(for语句简单应用)
1. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)//1.1 将数组A中的内容和数组B中的内容进行交换。(数组一样大)#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; int gd = 0; int a[5]; ...原创 2019-04-21 01:14:10 · 434 阅读 · 0 评论 -
Program 4.(for语句应用水仙花数等问题)
1.在屏幕上输出以下图案: * *** ***** ******* ******************************************** ********* ******* ***** *** * 第一种方法,利用字符数组定义一个空格数组和一个字符数组,然后找到中间元素从中间...原创 2019-04-27 18:24:37 · 273 阅读 · 0 评论 -
Program 5.(猜数字游戏,折半查找,模拟密码登录系统,接收键入字符转化等经典问题)
1.完成猜数字游戏。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>//系统菜单函数void menu(){ printf("******************\n"); printf("******1.play******...原创 2019-05-05 22:16:19 · 176 阅读 · 0 评论 -
Program 6.(函数)
Function,译为方法或函数.函数中的代码执行后可以实现你某种目的,或者得到想要的数据.首先要记得函数的定义格式1.无返回值的定义:void函数名(形参1,形参2.){函数体,你想实现什么功能就输入代码,当然函数体也可以为空;}2.有返回值的定义:返回类型(比如int,float,用户自定义类型)函数名(形参1,形参2.){函数体}下面是一些例题.1.实现...原创 2019-05-17 16:35:08 · 317 阅读 · 0 评论 -
Program 7.(递归)
递归函数,实际上就是在运行的过程中调用自己. 举个简单例子,递归好比你手里有一把钥匙,你用你手中的钥匙打开一扇门,结果去发现前方还有一扇门,紧接着你又用钥匙打开了这扇门,然后你又看到一扇们...但是当你开到某扇门时,发现前方是一堵墙无路可走了,你选择原路返回——这就是递归但是如果你打开一扇门后,同样发现前方也有一扇们,紧接着你又打开下一扇门...但是却一直没有碰到尽...原创 2019-05-17 16:35:32 · 168 阅读 · 0 评论 -
C语言操作符详解
操作符分类:操作符分别介绍:1.算数操作符: + - * / % 注意: 对于%取模运算操作符要求左右操作数必须为整数. 对于/操作符如果左右操作数为整数,执行整数除法.但只要有浮点类型执行的就是浮点类型除法int main(){ int a= 7/2; //结果为a = 3...原创 2019-05-22 17:20:32 · 509 阅读 · 0 评论 -
Program.10(操作符练习)
1.写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1程序原型:int count_one_bits(unsigned int value){ // 返回 1的位数}#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <std...原创 2019-05-22 17:54:24 · 165 阅读 · 0 评论 -
Program 11(确认比赛名次,谁是凶手,打印杨辉三角)
1. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include<stdio.h>#include<stdlib.h>int main(){ in...原创 2019-05-24 20:25:27 · 181 阅读 · 0 评论 -
Program.8(三子棋)
三子棋小游戏主要实现以下几个功能就ok啦.1.棋盘的初始化2.棋盘的打印3.玩家下棋4.电脑下棋5.判断输赢不过要实现这个小游戏还有很多需要注意的点如:<1>在设棋盘时我们使用的时数组,数组下标是从0开始的,而对于玩家来说他们并不知道这些,因此要考虑到这一点.<2>在下棋开始时无论设置电脑先下还是玩家先下都应想到每次都应进行一个判空操作,...原创 2019-05-24 21:28:24 · 238 阅读 · 0 评论 -
Program.13(数字二进制翻转,求平均值,求一组数据中单个出现的数字,使用指针对字符串进行复杂翻转)
1.编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值是value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000...原创 2019-05-27 12:33:27 · 160 阅读 · 0 评论 -
Program.14(调整数组顺序使奇数位于偶数前,杨氏矩阵查找数字时间复杂度小于O(N))
1.调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路: 设置两个指针,第一个初始化指向数组第一个数字,它只往后移;第二个指针初始化指向数组最后一个元素,它只向前移.再两个指针相遇之前,第一个指针总是位于第二个指针的前面.如果第一个指针指向的数字是偶数,并且第...原创 2019-06-04 21:33:24 · 194 阅读 · 0 评论 -
Program.15(1.函数实现左旋字符串中的k个字符;2.判断一个字符串是否为另外一个字符串旋转之后的字符串。)
1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDABvoid left_move(char *str, int k){}#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>void left_move...原创 2019-06-15 17:04:25 · 184 阅读 · 0 评论 -
关于'0' 0 NULL '\0'一点小结
今天看下关于'0' 0 NULL '\0'一点小结及他们之间的区别.在C语言中,NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象NULL: 指的是宏常量(#define NULL 0)或(void *)0(空指针),多用于后者,来指示一个指针为空; int *p = NULL; printf("%d\n", p); ...原创 2019-06-16 15:43:38 · 2120 阅读 · 0 评论 -
Program.16(找出数组中两个只出现过一次的数字,喝汽水问题,自己实现实现strcpy,strcat)
1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。思路:1. 通过所有数字异或得到结果sum.2.(进行位运算)将sum进行移位并与1得到数值为1的位,即第pos位.3.利用pos位进行分割数组,在对分割完成的数组进行自身异或即可分出. 实质上: 数组进行异或后得到的是5^9=1100(因为其他重复数字异或...原创 2019-06-22 21:27:01 · 134 阅读 · 0 评论 -
Program 1.(打印100~200之间的素数. 输出乘法口诀表 判断1000年---2000年之间的闰年)
练习1.打印100~200之间的素数.#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int i, j, k, m; i = j = k = m = 0; // 由素数组成可知,素数不包括偶数,...原创 2019-04-19 16:27:41 · 183 阅读 · 0 评论