![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 57
菜菜也逆袭
这个作者很懒,什么都没留下…
展开
-
c语言的那些操作符
c语言主要的操作符按功能分:算数操作符,移位操作符,位操作符,赋值操作符,条件操作符,关系操作符,逻辑操作符等;又可以分成单目操作符,双目操作符,复合操作符。现在,我们逐一介绍。一。算数操作符主要就是:+ - * / % 1.其中特别要注意的就是“/”,在整型 / 整型 还等于一个整型所以当需要精确到小数点后时至少一个数字为浮点型。联想到我们的1+1/2-1/3+1/4......+1...原创 2017-11-14 16:11:03 · 182 阅读 · 0 评论 -
用C语言模拟事项str和mem系列
实现strcpy代码:char * my_strcpy(char *des, const char *src){ if (!src) return NULL; char * pd=des; const char *ps = src; while (*pd++ = *ps++); return des;}实现strcat代码:char *my_...原创 2018-08-18 09:57:33 · 190 阅读 · 0 评论 -
用C语言模拟实现strn系列
模拟实现strncpy代码:char * My_strncpy(char * destion, const char *source, size_t num){ const char *src = source; char *dest = destion; while (num--) { *dest = *src; dest++...原创 2018-08-17 15:49:17 · 193 阅读 · 0 评论 -
C语言实现简单通讯录
实现界面如下: 代码如下:#include<stdio.h>#include<string.h>#include<windows.h>#include<stdlib.h>#define n_people 1000#pragma warning(disable:4996)enum Exit{ nofound原创 2018-08-17 15:45:40 · 279 阅读 · 0 评论 -
情人节告白-C语言带窗口的小程序。
首先让我们看看,带窗口的表白程序的效果吧。 再安利推荐另一个简单的告白小程序哦~ 程序员七夕告白,浪漫的跳动的心 这个程序很简单,它实际上就是调用Windows里的库函数实现的。 首先打开我们的集成开发环境,点击新建项目,创建一个Win32,控制台程序,并请一个名字,然后点击确定 然后就看见我们的而窗口变成了这样: 准备就绪,我们就可以开始写,我们的几行代码,即可完...原创 2018-08-17 14:28:40 · 27598 阅读 · 19 评论 -
学习C语言书单推荐
很多刚入大学的小白和曾经的我一样,对学好编程充满了凌云壮志,可是被讲师打击一两个星期后,便误入崩溃边缘。 C程序设计 很多学校的老师都选择谭浩强的这本《C程序设计》,这本书个人觉得还是挺适合讲课的。这本书很适合学习语言基础,但是对于想要学好C语言。我还是更推荐在已经了解了C语言基本的语法后多看看这几本书。 c陷阱与缺陷 这本书让我们知道,没有一种语言是完美无缺的,它都是有缺陷和漏洞...原创 2018-08-14 09:15:07 · 19959 阅读 · 2 评论 -
标准C库的文件io操作接口
先让我们来一起数一下常见的文件IO操作有哪些吧~ fopen 打开文件、fclose 关闭文件、fread 从文件中读取、fwrite 向文件中写入、fprintf 格式化标准写入 fseek 移动跳转指定读取或者写入位置打开关闭文件操作//打开FILE *fopen(const char *path, const char *mode);//参数1:文件路径默认是当前路径,参...原创 2018-08-22 16:31:29 · 761 阅读 · 0 评论 -
linux 进程间通信之消息队列以及实现进程间聊天系统
什么是消息队列消息队列实际上是操作系统在内核中为我们创建的一个队列,多个进程可以通过向队列中添加、获取存储有类型的数据块的结点来完成数据传输。消息队列和管道对比消息队列是全双工,可读可写的通信方式,而管道是半双工的,写的一方只能写,读的一方只能读。消息队列和管道一样都受传输数据大小的限制。管道生命周期随进程,消息队列生命周期随内核使用消息队列1.创建消息队列...原创 2018-09-16 20:49:18 · 1418 阅读 · 0 评论 -
LeetCode面试题--两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]思路: 我们都知道这个题一个很简单的思路while{while{}}的遍历的方式,完成找...原创 2018-09-16 21:02:59 · 265 阅读 · 0 评论 -
linux下最快的进程间通信方式共享
什么是共享内存共享内存 是多个进程都可以共享访问的一段内存区域。通过指针指向这个内存区域,一旦有一个进程把该指针所指向内容修改,其他同指向的进程也会感知到这个改变。问什么说共享内存是最快的进程间通信方式因为共享内存是直接将一块内存区域映射到虚拟地址空间中,因此在数据通信传输的过程中,相比较其他的通信方式少了将数据从用户态到内核态的数据拷贝过程。什么意思,就是说这种通信方式,已经把数据拿到了...原创 2018-09-19 17:01:09 · 5798 阅读 · 1 评论 -
linux信号量实现进程间同步与互斥
什么是同步与互斥同步与互斥是进程间的制约关系,同步:是为了保证临界资源的时序的可控性,安全性。是进程间由于相互合作引起的直接制约关系。互斥:是为了保证对临界资源同一时间的唯一访问性。是进程间由于共享资源引起的间接制约关系。多个进程当需要操作同一资源的时候就需要通过同步和互斥机制来实现对临界资源的安全访问。什么是临界资源临界资源就是:一次只允许一个进程访问的资源。什么是信号量从本...原创 2018-09-25 15:36:32 · 7908 阅读 · 1 评论 -
用C语言实现小游戏-----2048
我在只前的博客里完成了没有界面的小游戏和电脑对弈的三子棋,用C语言实现小游戏–三子棋 以及充满我们同年回忆的小游戏扫雷用C语言实现小游戏–扫雷 接下来,我们再写一个同样比较简单的,无界面,小游戏,电脑操作的游戏2048 虽然没有界面,但是我们要显示一个框架,对应显示各个位置的数,要从键盘接受上下左右,来实现整个块的上,下,左,右移动,增大积分,以及判断是否还有空位,是否游戏继续等,#...原创 2018-08-06 09:48:35 · 4205 阅读 · 0 评论 -
用c语言实现小游戏--俄罗斯方块
基于我们已经实现了相对来说比较完整可以经行娱乐的贪吃蛇游戏,我们接下来,可以再实现一个比贪吃蛇更加复杂的游戏。俄罗斯方块。 同样先是完成界面显示的文件,对应的.h 和.c文件#ifndef __UI_H__#define __UI_H__typedef struct pos{ int x; int y;}pos;enum Shapetype{ ...原创 2018-08-06 09:35:10 · 23457 阅读 · 2 评论 -
用数据结构C语言--来教你摸清纸牌游戏拉火车套路
纸牌游戏–拉火车游戏规则很简单。每人手里有一定数目的纸牌,每人盲放一张,直到有人发出一张和只前出过的一样的牌,就可以把区间的牌收走,最后谁的手里没有拍了 就输了。 根据数据结构的很基础知识,我们现在用队列,和栈的知识来实现拉火车吧。#include<stdio.h> #include<string.h>//设计一个及其简单的数组队列和栈struct Stack...原创 2018-08-06 08:41:55 · 5830 阅读 · 0 评论 -
一些小程序的个人总结(1)
#include<stdio.h>//素数100-200//乘法口诀//闰年int main(){ printf("################素数################\n"); for (int i = 100; i < 201; i++) { int j ; for (j = 2; j < i; j++) if (...原创 2017-11-16 16:13:16 · 1276 阅读 · 1 评论 -
一些小程序的个人总结(2)
void Swap(int *x, int *y){ int a; a= *x; *x = *y; *y = a;}一般都大家写指交换都会引用另一个变量通过值传递来交换。但其实还有其他的发现,当不可以引用其他的量的时候,a=a+b;b=a-b;a=a-b;类似的*乘法就同样完成了值的交换。但是这种方式是有弊端的,比如,当a,b很大时,这样写,有可能会导致a=a+b的时候a的值越界。...原创 2017-11-16 16:15:41 · 292 阅读 · 0 评论 -
C语言实现小游戏--棋类电脑对峙三子棋
要创建一个game.h的头文件,把程序所用到的头文件,函数声明都放进去。看着比较清晰,当然不是最一开始就写全的,是写的过程中往里面添加的。这是我最后写好后的头文件内容#define _CRT_SECURE_NO_WARNINGS 1#ifndef __GAME_H__#define __GAME_H__#define Row 3 //行#define Col 3 //列...原创 2017-11-23 22:27:48 · 626 阅读 · 0 评论 -
C语言实现小游戏--扫雷
按找我们的编程思路,先写主函数,步骤需要的函数,然后声明,封装。扫雷,我用了两个数组,一个显示数组,一个布置雷的数组,然后依次创建,我同样用的memset函数。打印显示函数。主函数中菜单,选择,游戏开始,等等。#include"game.h"void game() //游戏{ char mine[Rows][Cols]; char show[Rows][Cols]; In...原创 2017-11-23 22:38:16 · 557 阅读 · 0 评论 -
函数调用过程以及栈帧详解
函数的调用是一个过程,那么在函数的调用过程中要开辟栈空间,用来对本次函数的调用中需要的临时变量保存。这块空间叫栈帧。这个过程调用包括将数据和控制从代码的一部分传递到另一部分。过程调用的任务:为过程的局部变量分配空间,并在退出时释放这些空间,俗称保存现场/恢复现场。栈的作用:参数传递、局部变量分配、保存调用的返回地址、保存寄存器以供恢复栈帧:为单个过程分配的那部分栈称为栈帧这是代码在内存的分布:...原创 2017-12-06 20:25:27 · 805 阅读 · 0 评论 -
可变参数列表剖析
如果我同时想求两个整型变量的平均值,3个整型变量的平均值,4个,5个,那我同时要写多少个函数,来完成同一个功能。其实在c语言库中,很多函数的参数变量都是可变的。不是确定的。比如printf。你能说出printf的变量都有啥不。好像不可以,因为我们每次使用printf时,给的变量都是不一样的。有的时候,只有“aaaaaaaaaaaa”这样的字符常量。有的时候还有(“%d”,1).%c,总是不同的对吧...原创 2017-12-10 19:46:51 · 175 阅读 · 0 评论 -
关于指针,函数和数组
指针,数组,函数分别在C语言学习中,都很重要的东西。也是大多数同学较为头疼的,那么函数,数组和指针组合在一起,又会又哪些新的变量类型呢。 在这之前,我先要和大家强调一点,,,其实指针就是指针,数组就是数组。数组和指针之间,,,没关系~ 只是他们在访问内部变量时的形式可以相同。 所有我们要特别区分几个量:指针数组 ,数组指针 ,函数指针 ,函数指针数组 和指向函数指针数组的原创 2017-12-20 17:13:30 · 190 阅读 · 1 评论 -
C语言中结构体、枚举、联合、位断等自定义类型详解
在c语言的自定义类型中,主要就是结构体,联合,位段,枚举这几种。今天就让我们详细讲述一下他们各自的特点。在这几种自定义类型中,应用最广泛的我觉得就是结构体了吧。比如我们定义一个结构体。struct A{ char job[20]; int age; char *p; float c; }a,*p; s...原创 2017-12-31 17:27:00 · 532 阅读 · 0 评论 -
暴力求解走迷宫--基于栈实现最短路径的非递归方法
一个 Datatype arr[N][N] = { { 0,0,0,0,0,0 }, { 0,0,1,1,1,1 }, { 0,0,1,0,1,0 }, { 0,0,1,0,1,0 }, { 0,0,1,1,1,1 }, { 0,0,1,0,0,0 }, };这样6×6的二位数组...原创 2018-04-02 14:41:35 · 935 阅读 · 0 评论 -
用c语言实现有界面的小游戏--贪吃蛇
简易贪吃蛇代码实现 界面生成文件#ifndef __UI_H__#define __UI_H__struct UI { // 边缘宽度 int marginTop; int marginLeft; // 游戏区域的个数 int gameWidth; int gameHeight; // 整个窗口大小宽度 int...原创 2018-05-02 13:17:24 · 7267 阅读 · 7 评论 -
算法角度考虑海量数据处理
海量是有多海量? 如果说只有10条数据需要进行处理,那这个世界就简单多了,我两个手就处理了。大不了每条去逐一检查,人为处理,也用不了多久。 如果有上百条数据,也不是很难处理,毕竟我还能数的过来。 但是,现实往往都不是如此的通情达理,毕竟大数据异常的火。动不动就大数据分析下为什么IT难找不到女朋友。 数据一旦上到千万级别,甚至 过亿,那就不是手工能解决的了,必须通过工具或者程序进行处...原创 2018-05-20 23:43:05 · 455 阅读 · 0 评论 -
快速排序等排序的比较
插入排序—直接插入排序 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。void InsertSort(int *a,int n){ int i = 1; for (i = 1; i &amp;amp;lt; n; i++) { ...原创 2018-05-28 22:20:31 · 494 阅读 · 0 评论 -
LeetCode面试题--两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路: 因为我们是按照逆序存储的,所以我们...原创 2018-09-15 09:26:26 · 248 阅读 · 0 评论