
C语言
YYtengjian
学习笔记而已~
展开
-
【总结】malloc最多能分配多大的内存空间?
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。void* 类型表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。一般需和free函数配对使用。但是,malloc最...原创 2018-03-31 22:42:59 · 27079 阅读 · 9 评论 -
【经典例题】编写一个函数,求第n个斐波那契数
编写一个函数,求第n个斐波那契数,C语言递归实现!原创 2017-08-07 17:45:52 · 8053 阅读 · 0 评论 -
【数据结构】括号匹配问题
给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如“{ [ ] ( ) }”或 “[ ( { } [ ] ) ]” 等为正确的格式,而“[ ( ] )”或“{ [ ( ) }”或“( { ...原创 2018-06-11 17:07:10 · 30839 阅读 · 2 评论 -
【C语言】、杨氏矩阵
数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。原创 2017-05-14 15:49:03 · 663 阅读 · 0 评论 -
【C语言】栈和栈帧,以及栈帧创建和销毁的过程
栈和栈帧,以及栈帧的创建和销毁的过程 C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。 栈帧表示程序的函数调用记录,而...原创 2017-05-22 20:24:41 · 1392 阅读 · 0 评论 -
【C语言】在字符串中找出第一个只出现一次的字符,输入“abaccdeff”,则输出'b'
在字符串中找出第一个只出现一次的字符,输入“abaccdeff”,则输出'b'原创 2017-05-30 23:24:02 · 1067 阅读 · 0 评论 -
【C语言】使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型原创 2017-07-03 22:38:31 · 1382 阅读 · 0 评论 -
【C语言】C语言结构体解析
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访...原创 2017-07-10 18:06:01 · 1581 阅读 · 1 评论 -
【C语言】C语言实现静态通讯录
通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 !原创 2017-07-24 13:53:36 · 818 阅读 · 0 评论 -
【C语言】动态内存分配
C 语言中的一切操作都是基于内存的。这是我们在学习C语言的前提!所以,在有些时候程序运行的过程中,可能需要使用一些额外的内存空间。 我们现在所用的主要是malloc、free、calloc、realloc!原创 2017-07-28 23:16:50 · 2385 阅读 · 0 评论 -
【总结】自增自减操作以及左右值的区别
一、自增自减前操作与后操作的区别在c/c++中,自增(++)自减(--)操作符为数据对象加1和减1操作提供了一种方便简洁的实现方式。他们都有前置和后置两种形式。下面给出简单的代码实现:#include<stdio.h>int main(){//i++ int i = 1; int tmp; tmp = i; i = i + 1; //return t...原创 2018-03-16 22:50:07 · 3220 阅读 · 0 评论 -
【C语言】模拟实现strncpy strncat strncmp strchr strrchr函数
模拟实现strncpy strncat strncmp strchr strrchr函数!原创 2017-07-06 14:41:03 · 734 阅读 · 0 评论 -
【C语言】调整数组使奇数全部都位于偶数前面
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。原创 2017-05-14 15:54:02 · 519 阅读 · 0 评论 -
【C语言】、模拟实现strlen,strcmp,strcpy,strcat,strstr函数
【C语言】、模拟实现strlen,strcmp,strcpy,strcat,strstr函数原创 2017-05-31 13:27:09 · 1238 阅读 · 3 评论 -
【C语言】C语言编写扫雷
用c语言实现扫雷游戏的代码编程!原创 2017-05-11 22:12:12 · 1704 阅读 · 0 评论 -
【C语言】用C语言实现三子棋游戏的编写
用c语言实现三子棋游戏的编写,首先需要了解三子棋游戏的玩法及构架。从进入游戏,创建棋盘,坐标的表示等等,都需要用c语言来实现具体的操作。玩家输入坐标时将横纵坐标的值限定在大于等于1小于等于3之间(代码中是用数组的下标来表示的,所以是0,1,2),使其坐标不会超出棋盘。两个for循环就可以实现这个过程。判断坐标是否被占用,只需判断输入坐标所对应位置是不是空格‘ ’就行了。 由于电脑的输原创 2017-04-21 22:02:52 · 704 阅读 · 0 评论 -
【C语言】判断机器的大小端
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)原创 2017-07-29 22:55:37 · 612 阅读 · 1 评论 -
【C语言】C语言实现文件版通讯录
C语言实现文件版通讯录是在前面静(动)态通讯录的基础上进行修改(静态通讯录点击打开链接),静态和动态通讯录(动态版点击打开链接)已经在前面博客中总结出来了仅供大家参考。实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址原创 2017-07-29 23:18:26 · 3331 阅读 · 2 评论 -
【C语言】C语言实现动态通讯录
C语言实现动态通讯录是在静态通讯录的基础上进行修改(静态通讯录点击打开链接),静态通讯录已经在前面博客中总结出来了仅供大家参考。实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示原创 2017-07-26 23:37:04 · 953 阅读 · 0 评论 -
【C语言】C语言实现静态顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。原创 2017-07-30 22:14:10 · 499 阅读 · 0 评论 -
【C语言】一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字!
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字!原创 2017-06-25 18:39:22 · 1818 阅读 · 0 评论 -
【C语言】求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222#includeint main(){ int i,a,Sn = 0,b = 0; printf("请输入一个整数\n"); scanf("%d",&a); for(i=1;i <= 5;i++) {b = b*10 + a;Sn = Sn + b;原创 2017-04-05 20:43:37 · 2389 阅读 · 0 评论 -
【C语言】冒泡法排序的三种实现方法
冒泡法排序的三种实现方法,数组,函数,指针!原创 2017-05-30 23:32:39 · 7888 阅读 · 0 评论 -
【C语言】将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#include int main(){int arr1[] = { 1, 3, 5, 7, 9 };int arr2[] = { 3, 4, 5, 6 ,7 };int tmp;int i = 0;for (i = 0; i {tmp = arr1[i];arr1[i] = arr2[i];arr2[i] = tmp;}for (i = 0;原创 2017-03-24 22:35:22 · 1890 阅读 · 0 评论 -
【C语言】猜数字游戏
#include#include#includevoid menu(){ printf("*******************\n"); printf("***1.play 0.exit***\n"); printf("*******************\n");}void play_game(){ int rand_num = rand() % 100; int t原创 2017-03-30 21:13:34 · 590 阅读 · 0 评论 -
【C语言】二分法查找
二分法查找:#includeint binary_search(int arr[],int key,int sz) { int left = 0; int right = sz-1; while(left<=right) {int mid = left + ((right-left)>>1); if(arr[mid]>key){ right = mid - 1;原创 2017-04-09 22:09:51 · 5120 阅读 · 0 评论 -
【C语言】写一个函数,只要调用一次就可以将参数的值,增加1。
写一个函数,只要调用一次就可以将参数的值,增加1。//写一个函数,只要调用一次就可以将参数的值,增加1:#includevoid self_fun(int *i){ (*i)++;}int main(){ int i = 0; self_fun(&i); self_fun(&i); printf("%d", i); while (1); return 0;原创 2017-04-09 22:11:57 · 2732 阅读 · 0 评论 -
【C语言】注释转换
首先我们应该知道,在C语言中 ,编译器默认的注释风格是 /* .........*/ ,而在C++中 ,编译器默认的注释风格是 // ....... 注释一行。这两种注释风格是可以互相转换的。原创 2017-08-01 14:34:20 · 603 阅读 · 0 评论 -
【面试题】逆置反转单链表
题目:定义一个函数,输入一个链表的头节点,反转链表反转链表并输出反转后的链表头节点。链表节点定义如下: typedef int DataType;typedef struct SNode{ DataType _data; struct SNode* _pNext;//指向下一个节点的地址}Node,*PNode; 思路:定义三个指针分别指向当前遍历结点,它的前一个结点,它的后一...原创 2018-07-18 23:20:12 · 360 阅读 · 0 评论