![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言基础
文章平均质量分 77
Hanani_Jia
这个作者很懒,什么都没留下…
展开
-
宏定义
今天,我给大家简单介绍一下宏定义的相关内容。 在介绍宏定义之前,我先给大家介绍一下Linux,为什么介绍宏定义需要用到Linux呢,大家有没有听过IDE,全称Integrated Development Environment,中文名字叫集成开发环境,什么是集成开发环境,如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等,这都是集成开发环境原创 2017-12-09 01:32:01 · 882 阅读 · 0 评论 -
判断一个字符串是否是回文串
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char a[100] = { 0 }; int i = 0; int flag = 0; int strlen1 = 0; printf("...原创 2018-03-09 17:33:04 · 2256 阅读 · 0 评论 -
寒假小程序练习1-5
1.9*9乘法表 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>#include<stdlib.h> int main(){int i = 0;int n = 0;int m = 0;for (i = 1; i <= 9; i++){for (n = 1; n <= 9; n++){m = n*i;prin...原创 2018-03-05 21:41:45 · 249 阅读 · 0 评论 -
模仿 qsort 的功能实现一个通用的冒泡排序
模仿 qsort 的功能实现一个通用的冒泡排序 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>#include<stdlib.h>int cmp(const void *m, const void *n){return *(char *)m - *(char *)n;}v...原创 2018-03-22 21:06:33 · 563 阅读 · 0 评论 -
通过动态分配结构体实现通讯录
#define _CRT_SECURE_NO_WARNINGS 1/*实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信原创 2018-03-22 22:08:30 · 222 阅读 · 0 评论 -
用结构体实现一个通讯录
/*实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人7. 以名字排序所有联系人*/原创 2018-03-19 23:43:49 · 3711 阅读 · 0 评论 -
从尾到头打印链表,逆置链表,链表pos位置删除元素,链表pos位置前插入一个元素
从尾到头打印单链表 删除一个无头单链表的非尾节点(不能遍历链表) 在无头单链表的一个节点前插入一个节点(不能遍历链表) 逆置/反转单链表原创 2018-03-30 01:46:07 · 1596 阅读 · 0 评论 -
二分查找的递归实现
#define _CRT_SECURE_NO_WARNINGS 1 #include #include int BinarySearch(int a[],int left,int right, int n){int mid = 0;mid =(right + left) / 2;if (left <= right){ if (a[mid]原创 2018-03-24 13:51:36 · 285 阅读 · 0 评论 -
模拟实现strncpy、strncat 、strncmp
1.模拟实现strncpy 2.模拟实现strncat 3.模拟实现strncmp原创 2018-03-20 23:03:09 · 418 阅读 · 0 评论 -
斐波那契数列的递归和非递归实现
#define _CRT_SECURE_NO_WARNINGS 1 #include#include int main(){int a = 1;int b = 1;int c = 0;int n = 0;int i = 0;printf("请输入你想要计算的斐波那契数字个数\n");scanf("%d", &n);printf("%3d原创 2018-03-25 21:06:49 · 794 阅读 · 0 评论 -
单项链表的基本实现
#define _CRT_SECURE_NO_WARNINGS 1#include#include#includetypedef int DataType;typedef struct SListNode{struct SListNode* _next;DataType _data;}SListNode;SListNo原创 2018-03-27 22:31:59 · 271 阅读 · 0 评论 -
双向链表的实现
#define _CRT_SECURE_NO_WARNINGS 1 #include#include#include typedef int DataType; typedef struct DListNode{struct DListNode* _next;struct DListNode* _prev;DataType _data;}DLis原创 2018-03-28 22:59:56 · 358 阅读 · 0 评论 -
sizeof和strlen的联系与区别
Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f...原创 2018-05-19 00:04:05 · 602 阅读 · 0 评论 -
sizeof用法总结
sizeof用法总结以下运行环境都是一般的,在32位编译环境中1,基本数据类型的sizeofcout<<sizeof(char)<<endl; 结果是1cout<<sizeof(int)<<endl; 结果是4cout<<sizeof(unsigned ...转载 2018-05-15 21:27:09 · 367 阅读 · 0 评论 -
.练习使用qsort函数排序各种类型的数据
.练习使用qsort函数排序各种类型的数据原创 2018-03-09 17:03:48 · 1858 阅读 · 0 评论 -
高级指针( 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 )
指针数组指针数组到底是指针还是数组呢?指针数组是数组,是一个存放指针的数组,也就是数组元素全为指针的数组。例如,一个一维指针数组的定义:int *ptr_array[10]。数组指针知道指针数组是什么之后,那么数组指针是什么呢?数组指针实际上他是一个指针,我们常见的整型指针:int *p 这是一个能够指向整型数据的指针,浮点型指针:float *p 这是一个能够指向浮点型数据的指针,那么数组指针就...原创 2018-03-08 23:02:45 · 572 阅读 · 0 评论 -
宏定义小程序(写一个宏可以将一个数字的奇数位和偶数位交换)
写一个宏可以将一个数字的奇数位和偶数位交换。 使用宏实现两个数中求较大值。原创 2017-12-09 13:27:29 · 3873 阅读 · 0 评论 -
c语言操作符
C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具 。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。其实c语言的操作运算符,你可以把他想象成c语言中内置的一些简单函数。操作符主要分为以下几大类:1. 算术运算符 常见的算数运算符有+、原创 2017-11-22 23:39:56 · 502 阅读 · 0 评论 -
模拟实现字符串拷贝函数小细节
大家经常在对字符串操作的时候使用字符串库的一些函数, 像对字符串的拷贝,之前我也有写过一篇博客是专门把一些经常用的字符串函数介绍了一下简单的用法。大家在考试的时候或者说,在面试的时候经常会遇到一个问题,经常让你自己来写一个函数来模仿函数库中得字符串拷贝函数,今天我就对这个问题来说一些我目前了解的内容。 #define _CRT_SECURE_NO_WARNINGS 1#incl原创 2017-12-05 18:25:16 · 547 阅读 · 0 评论 -
Stack Overflow
最近在写扫雷程序,扫雷里边有一个功能是你在扫雷的时候如果周围没有雷,你就会向周围开始扩展 就像这张图右边这样 直到你的空格被你的数字所包围了,换算到代码中来之后,就会是一个循环或者是一个递归程序void Extend(char arr[ROWS][COLS], char arr1[ROWS][COLS], int x, int y){if ((x9) || (y>9))r原创 2017-12-06 01:23:43 · 577 阅读 · 0 评论 -
c语言中部分字符串操作函数
c语言中部分字符串操作函数原创 2017-11-27 01:12:07 · 2228 阅读 · 0 评论 -
模拟实现strstr函数
模拟实现库函数strstr原创 2018-01-05 23:30:14 · 475 阅读 · 0 评论 -
模拟实现strchr
模拟实现strchr库函数原创 2018-01-06 00:11:14 · 734 阅读 · 0 评论 -
模拟实现strcmp
这次给大家介绍并模拟的是strcmp函数。 其实对于cplusplus网站上的解释我大多是看不懂的,自己的英语能力比较差,很多人说那你还看干啥,直接去百度,通俗易懂。我建议大家一定要去看一下http://www.cplusplus.com/这个网站对你不明白的函数的解释,原因有两点。一是因为他是一个官方网站,他对函数的描述和应用都是十分的规范的,不存在有人为的更改,你获得的信息的可靠性还是原创 2018-01-06 12:04:24 · 366 阅读 · 0 评论 -
模拟实现memmove
这次给大家介绍的是memmove,同样还是看不懂英文在说什么,还是看一下百度给我们的通俗易懂的解释。 这就是之前我所说到的,memcpy的一个函数漏洞,他库函数本身就不能避免这个漏洞,所以在进行模仿的时候虽然发现了这个问题但是还是没有将这个问题弥补,因为有让你弥补的地方,那就是来模仿这个memmove函数。 再给大家来说一下memcpy函数的漏洞是哪个,就是上图这样,如果你开始将原原创 2018-01-07 00:35:36 · 895 阅读 · 0 评论 -
模拟实现memcpy
这次我来模拟实现的是memcpy库函数。 其实发现这个函数和之前写的strcpy很像,但是最明显的区别就是这个函数他需要三个参数而strcpy则是两个参数,那这两个到底有什么区别呢? memcpy和strcpy不同的是memcpy是一个按字符串拷贝的函数,因此传进来的第三个参数就是你要拷贝的字符串个数了 void *my_memcpy(void *det, const v原创 2018-01-06 23:20:20 · 786 阅读 · 1 评论 -
寒假小练习6-10
2. 最小公倍数#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>#include<stdlib.h> int main(){int m = 0;int n = 0;int temp = 0;int k = 0;printf("请输入两个数字\n");scanf("%d %d", &m, &n);k = m...原创 2018-03-06 18:25:12 · 236 阅读 · 0 评论 -
判断一个数字是否是回文数
输入一个数值判断是否为回文数(回文数是指一个像12321、123321这样“对称”的数) 之前在网上看过一些关于判断回文数的一些程序,有些大佬把判断回文数的方法分为了好几类,今天我写的只是一个很初级很简单的判断int类型回文数数据的程序。#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>#include<st...原创 2018-03-08 21:41:19 · 5990 阅读 · 2 评论 -
sort函数在STL中的底层实现
今天在刷剑指offer的时候遇到了sort函数然后并不是很懂,所以简单的看了一下发现东西还是很多的,这里简单给大家总结一下我理解的一些东西。 首先看一些基础的就是sort函数的用法,我们在cplusplus网站上可以查一下sort的用法,这里有一个默认用法和一个扩展的用法,可以看出来两种用法传入的参数个数是不相同的,默认的函数我们传入了两个参数,通过英文也能看出来他的两个参数一个是要...原创 2018-09-07 16:19:20 · 9261 阅读 · 5 评论