C语言
MISSyingying
如果有一天我变得很有钱..............
展开
-
库函数strstr的实现,比较库函数strstr和strchr。
strstr(str,str1):该函数用来判断字符串str1是否是str的子串。如果是,就返回str1在str中首次出现的地址;如果不是,返回NULL;strchr:用来查找字符串中首次出现某字符的位置;可以看出strstr查找的是字符串,strchr查找的是字符;字符和字符串的区别是:字符串以‘\0’结束,字符串可以包含多个字符;而字符就是单个字符。下面是实现strstr库函数的具体的代码:#...原创 2017-11-24 10:56:28 · 1082 阅读 · 0 评论 -
strcpy和strncpy库函数的实现和比较
①实现strcpy库函数;②实现strncpy库函数;③对两个库函数的异同进行比较;原创 2017-11-18 18:21:38 · 284 阅读 · 0 评论 -
指针数组,数组指针,函数指针,函数指针数组,函数指针数组的指针
什么是指针?什么是指针数组?什么是数组指针?什么是函数指针?什么是函数指针数组?什么是函数指针数组的指针.....原创 2017-11-24 19:08:58 · 254 阅读 · 0 评论 -
strncmp和strncat库函数的实现。
对库函数strncmp和strncat的实现;原创 2017-11-24 15:53:34 · 396 阅读 · 0 评论 -
库函数qsort函数的实现
qsort库函数的实现。在这里,讲述一个生活中的小故事来深刻理解回调函数:比如去买东西,却发现商店里面需要的东西没有了,所以把电话号留给了店员,过几天后,商店进了新货回来,然后店员打电话通知可以去买东西了。所以,电话号就是回调函数,店员打电话通知你就是调用回调函数。qort函数有4个参数(void *base,int count,int size,int(*cmp)(void *,void *));(起始位置,数组的个数,数组每一个元素的类型大小,函数指针)原创 2017-11-25 21:25:28 · 526 阅读 · 2 评论 -
(不调用库函数)实现字符串长度,字符串排序,选择排序
1.(不使用库函数)求字符串长度字符串结束的标志是‘\0’,用循环即可。void StringLength(char *arr){ int i = 0; while(arr[i] != '\0') { i++; } printf("字符串的长度是%d\n",i);}进阶:不引入变量,求字符串长度int Strlen(char *arr){ if(*arr == '\0')...原创 2018-02-09 20:58:23 · 1509 阅读 · 0 评论 -
判断字符串或数字是否是回文序列
1.判断是否是回文数字先得到数字的个位,然后让个位最为第一个, 新数 = 新数*10 + 余数,余数为数字除以10然后对10取余。直到原来的数字小于10即停止循环。2.判断是否是回文字符串这个比较简单:从字符串的头和尾依次进行比较是否相等。下面是VS2008环境下实现的:void IsPalindrome(int number) //数字的判断{ int m = 0; int p = nu...原创 2018-02-08 15:24:17 · 1725 阅读 · 0 评论 -
最大公约数和最小公倍数
最大公约数:辗转相除法如果两数之中较大的数可以整除较小的数,则较小的数就是最大公约数。若不能整除,就让大数对小数取余的数作为除数,原来的除数作为被除数。以此循环,直到最后大数对小数取余的结果为0为止。最小公倍数:首先要得到较大的数字,然后让较大的数字除以较小的数,若可以整除,大数即是最小公倍数。否则,让大数每次以倍数增大,直到可以整除较小的数为止。下面是代码的实现:void IsCommon(in...原创 2018-02-08 15:38:10 · 325 阅读 · 0 评论 -
C语言---一组数组中只有两个数字出现一次,其他数字都是成对出现的,请找出这两个数字。
啦啦啦。。。。。。。首先我们先找出:数组中只有一个数字出现一次,其余数字都成对出现。实现的方法其时间复杂度为O(1);使用异或:其数字的二进制位相同为0,不同为1.所有数字都异或,最后的异或结果就是那个只出现一次的数字。下面是代码实现:void FindDifference(int arr[],int n){ int i = 0; int s = arr[0]; if(n == 0 || ...原创 2018-02-22 00:11:59 · 602 阅读 · 0 评论 -
用C语言判断一个机器字节序列的存储模式是大端还是小端存储以及浮点型在内存中的存储
首先,我们来思考一下,为什么会有大小端模式之分呢? 我们知道,在计算机系统中,是以字节为存储单位而存储的,每一个地址都对应着一个字节(8bit)。而对于有些类型的变量大小不是一个字节。类如,在32位的系统下,int,float,long,都是4字节大小,而一个地址中就无法容纳。所以就存在如何安放其它字节的问题。就导致了大端存储模式和小端存储模式。 大端:数据低位保存在内存的高地址中,而数据的高...原创 2018-04-07 17:05:34 · 570 阅读 · 0 评论 -
1.数组和链表的区别2.栈和队列的区别3.static关键字的作用4.volatile关键字5.宏的优缺点6.assert断言7.引用和指针的区别8.EOF与feof的区别8.解引用空指针
数组和链表的区别数组: ①数组的空间是一块连续的空间。 ②对数组的读取快速方便,直接通过下表访问,时间复杂度为O(1)。 ③使用数组时必须提前开辟好空间,但是如果使用不完,就会存在浪费空间。但是如果不够用,就要重新开辟空间,原来数组中的内容也必须拷贝过去。 ④在数组中进行随意位置的插入和删除不方便,必须移动数据。 链表: ①链表的空间不是连续的,每个节点都保存着下一个节点的位置。 ...原创 2018-04-15 18:04:28 · 307 阅读 · 0 评论 -
简单总结一下strcmp函数的实现
strcmp:字符串的比较;返回值是整型;函数形式为:int strcmp(const)原创 2017-11-23 20:20:41 · 2760 阅读 · 2 评论 -
自定义类型---->结构体,枚举,联合体
自定义类型的介绍:包括结构体,枚举和联合体。原创 2017-12-03 12:08:48 · 351 阅读 · 0 评论 -
二分查找
二分查找也就是折半查找。。在使用调用函数时,如果函数在前面,则直接调用;若函数在主函数后面,则要先声明要调用的函数;#includeint main(){ int arr[]={1,2,3,4,5,6,7,8,9,10}; int key=5; int left=0; int right=sizeof(arr)/sizeof(arr[0])-1; while(left<=原创 2017-10-16 19:33:29 · 185 阅读 · 0 评论 -
大小写字符的转换
如果getchar()和putchar一起使用,输入什么获取什么;getchar()是在输入缓冲区顺序读入一个字符;#include<stdio.h>int main(){ char c=0; while((c=getchar())!=EOF) { if(c>='a' && c<='z' ) { c=c-32; putchar...原创 2017-10-16 19:55:59 · 496 阅读 · 0 评论 -
编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
验证所有的花括号是否成对出现,结束的标志:EOF(-1)#include<stdio.h>#include<windows.h>int main(){ char c; int i=0; while((c=getchar())!=EOF)//遇到字符a则输入结束 { if(c=='{') { i++; } else if(c=='}'&am...原创 2017-10-16 20:05:10 · 319 阅读 · 0 评论 -
C操作符总结
今天,简单总结一下自己对操作符的认识。一.算数操作符算数操作符有:+ - * / %加减乘除适用于整数和浮点数,而取模(取余 %)只能用于整数。二.位移操作符1.左移操作符:<< 表达式:i=i<<1;即表示把i的二进制向左移一位,然后丢弃,右边补零。 左移即相当于给这个数乘2.2.右移操作符: 注意:在VS中,右移采...原创 2017-10-19 16:45:33 · 211 阅读 · 0 评论 -
1.无符号整数的二进制中1的个数2.十进制数转化为二进制数
1.求一个无符号整数中1的个数//方法1:除int CountOne(int value){ int count = 0; while(value > 0) { count += value % 2; value /= 2; } return count;}//方法2 按位与int CountOne2(int ...原创 2017-10-19 17:59:55 · 1539 阅读 · 0 评论 -
可判断数据中有多个数字只出现一次,其他所有数字都是成对出现的。然后输出这些数字。(使用位运算)
异或:按位异或 相同为0,不同为1。所以一个数与它自己异或一定为0,用这个想法实现这个问题。#includeint main(){ int j = 0,k = 0,s = 0; int arr[]={1,2,3,4,1,2,3}; int i=sizeof(arr)/sizeof(arr[0]); for(j=0;j<i;j++) { s = 1; for(k=0;k<i;k原创 2017-11-01 23:28:05 · 549 阅读 · 0 评论 -
今天回顾了一下strcpy函数,总结一下下。
strcpy:将源字符串拷贝到目的字符串中,把源字符串一个一个的拷贝到指定的数组中,遇到\0J结束,\0也会拷贝过去。下面粘出我写的strcpy函数。#include#includevoid mine_strcpy(char *dest,char *src){ if( dest==NULL || src==NULL)//如果目的指针为空或者源字符串为空,则返回空格,而不是程序崩溃。原创 2017-11-02 21:57:24 · 351 阅读 · 0 评论 -
杨氏矩阵 中查找一个数字是否存在,时间复杂度小于O(N)
杨氏矩阵:一个矩阵从左到右时递增的,从上到下是递增的。在这样的矩阵中查找一个元素。方法1:遍历矩阵中的所有的元素。时间复杂度为O(N)。方法2:从最左侧开始遍历:int FIND_NUMBER(int arr[3][3],int key){ int i = 0,j = 2;//使数据从对角线的左上开始比较。 while(i<3 && j>=0) { if(k...原创 2017-11-05 21:58:47 · 581 阅读 · 0 评论 -
C语言中函数的调用过程
今天,我们深入来学习一下C。在C的编译中,内存的占用分为以下几个部分:stack(栈区):由编译器自动分配自动释放。(存放局部变量,函数参数,返回数据,返回地址等)heap(堆区):由程序员分配和释放。如果不释放,就会出现内存泄漏的问题。code:存放函数体的二进制代码。它们在内存中存放的位置关系可以通过以下代码实现:运行结果为:注意数组在内存中的存储形式。原创 2017-11-09 21:54:21 · 1362 阅读 · 0 评论 -
用递归和非递归的方法来求斐波那契数列
#include<stdio.h>int Fibonacci(int i){ int s = 1,q = 1,count = 3,sum = 1;//s:qq前前的数 q:q前一个数 if(i<=2) { return 1;//如果要求的数的个数少于2个,则返回1 } else { while(count<=i) { sum=q+s; ...原创 2017-11-10 23:57:46 · 3044 阅读 · 0 评论 -
冒泡排序:分别用下标法和指针法做
用冒泡法排序原创 2017-11-13 20:18:32 · 1516 阅读 · 0 评论 -
静态顺序表用C实现的各种操作
1.实现顺序表的增删查改2.并用冒泡法对该顺序表进行排序原创 2017-12-09 20:14:54 · 332 阅读 · 0 评论