C语言编程
文章平均质量分 54
玫瑰花店
为之则易,不为则难!
展开
-
if判断类型
if判断的是bool值,布尔值只有0和1,非0就是1,0就是0;#include "stdio.h"int main(){ int a=-1,b=0,c=1; if(a) { printf("a = %d\n",a); } if(b) { printf("b = %d\n",b); } if(c) { printf("c = %d\n",c); } return 0;}输出:a = -2c = 1...原创 2021-10-20 17:13:48 · 516 阅读 · 0 评论 -
栈的实现--C语言版本
栈栈 -------------->先进后出记住这点就行了。最开始想过用栈顶指针来进行控制,通过地址的递增或者递减来实现入栈和出栈。但是低地址是栈顶还是高地址是栈顶这点无法确定。所以还是使用栈中的变量数量模拟来判定位置的。源码:#include "stdio.h"#include "stdlib.h"#define STACK_SPACE 10typedef struct Stack_list{ int * Stack_Space;//栈空间 int Stack_top;原创 2021-10-11 17:55:07 · 166 阅读 · 0 评论 -
C语言--实现线性表(动态内存分配)
线性表和链表不明白链表的可以看我前几个博客:链表基础1(超简单)–创建一个长度为n的单链表链表基础2(超简单)–单链表的插入和删除链表基础3(超简单)–单链表的逆序链表基础4(超简单)–创建一个长度为n的双向链表(代码可运行)链表基础5(超简单)–链表写入文件链表:是一种链式存储结构,链表每个节点的空间并不是连续的,而是通过指针把每个节点的空间串在一起。线性表:空间是连续的。源码:主要思想就是:创建一个指针,然后根据需要不停的给这个指针空间扩容。每个元素的空间地址是连续的。#i原创 2021-10-09 15:40:07 · 1330 阅读 · 1 评论 -
链表基础5(超简单)--链表写入文件
链表基础部分可以看我以前写的:链表基础1(超简单)–创建一个长度为n的单链表链表基础2(超简单)–单链表的插入和删除链表基础3(超简单)–单链表的逆序链表基础4(超简单)–创建一个长度为n的双向链表(代码可运行)#include "stdio.h"#include "stdlib.h"typedef struct linked_list{ int data; struct linked_list *pnext;}link;link *pnew;link *ptmp;li原创 2021-09-30 19:01:55 · 4187 阅读 · 2 评论 -
C语言常用函数总结
#include “stdio.h”sprintf函数功能:向一个字符串内格式化输入char buf[1024]={0};char buf1[5]="zxcv";char buf2[5]="bnma";sprintf(buf,"123 %s %s",buf1,buf2);printf("%s\n",buf);运行结果:123 zxcv bnma原创 2021-07-28 08:39:46 · 565 阅读 · 0 评论 -
移位操作实例
许久不用寄存器,写底层时候遇到个存储问题,移位懵逼了半天…示例:有这样两个数组uint16_t 16_reg[i];uint8_t 8_reg[j];我们需要将16位数组中的一个元素存储到8位数组中去。解答: 8_reg[i]=16_reg[j]>>8 & 0xff; 8_reg[i++]=16_reg[j] & 0xff;解释:左移8位后:也就是说我们要把前八位放到8_reg[i]里面嘛,为啥要&0xff呢。假如说这前八位数据前面有一个1原创 2021-04-01 21:16:30 · 356 阅读 · 0 评论 -
冒泡、选择、插入、希尔、快速。基数排序---C语言版本
选择排序什么是选择排序?1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3、重复第二步,直到所有元素均排序完毕。演示假设有这样一个数组:int sum[9]={2,5,8,1,7,4,3,9,6};我们首先需要找到整个数组里面最小的哪一个元素。假设第一个元素2为最小元素,我们开始往后比,当遍历到第四个元素时候遇到比2小的数1.那么我们暂将1记做最小数并保存其下标,接着往后比发现没有比1还要小原创 2021-04-01 21:13:12 · 293 阅读 · 0 评论 -
C语言const用法详解(带实例)
const与define区别在C语言中const常用来定义常量,表示这个常量是不可以被修改的。define宏定义也可以用来表示一个常量。那么他们有那些区别呢!1、预编译指令只是对值进行简单的替换,不能进行类型检查2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。const作用1、const修饰局部变量const int a=原创 2021-03-28 11:44:50 · 21241 阅读 · 5 评论 -
递归创建二叉树程序步骤详解
首先上代码后面对代码经行分析。代码#include <stdio.h>#include <stdlib.h>typedef struct tree{ char date; struct tree *left_leaf; struct tree *right_leaf;}tree,*BiTree;void creat_tree(BiTree *T)//创建树{ char val; scanf("%c",&val);原创 2021-03-08 13:02:49 · 2808 阅读 · 0 评论 -
指针传参问题
下午看博客时候,遇到个函数传参值是否改变的问题,感觉挺有意思的。先看这样一个程序。#include "stdio.h"#include "stdlib.h"int a=1;int b=2;void fun(int * t){ t=&a;}void main(){ int *q; q=&b; printf("a=%d\n",a); printf("b=%d\n",b); printf("&a=%p\n",&.原创 2021-03-06 17:42:12 · 229 阅读 · 0 评论 -
说一说递归里的return返回!!!
今天看二叉树时候遇到递归,结果半天没想起来递归是啥(实在是平时几乎没有用到递归),想了想既然用到了就总结一下吧!有return的递归有return的递归我参考了网上一个大佬的博客。有这样一个程序: #include<stdio.h> int cheng(int a) { if(a>1) { a=a*cheng(a-1); printf("%d\n",a); } retur原创 2021-03-06 16:35:04 · 7976 阅读 · 7 评论 -
C语言全局变量、局部变量....堆栈等内存问题详解
C语言里面的内存c语言有四大存储空间代码区,静态存储区,栈区,堆区代码区:就是存放代码的存储区域,它不涉及代码中的变量值。静态存储区:用来存放全局变量和静态变量。栈区:也可称为局部变量存储区,所以它是专门存储局部变量的堆区:也称为动态存储区。这块区域的内存供c语言程序动态申请。通俗地讲,也就是我们用malloc族函数申请并用free族函数释放的内存。堆栈详解栈:后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我原创 2021-03-06 10:43:05 · 1463 阅读 · 0 评论 -
链表基础4(超简单)--创建一个长度为n的双向链表(代码可运行)
单链表的基础知识,创建,增删,逆序可以看我前几篇博客。点下面相应就可以跳过去咯!链表基础1(超简单)–创建一个长度为n的单链表链表基础2(超简单)–单链表的插入和删除链表基础3(超简单)–单链表的逆序首先我们来理解一下什么是双向链表,话不多说上图:head是头节点地址,a1、a2分别是后面两个节点地址。单项链表不就是a1的B存放head的地址嘛,a2的B存放a1的地址,这样不就连接起来了嘛双向链表也是一样,只是在节点结构上比单项链表多了一个指针域,就是上图的A。尾节点a2的A中存放a1的地址原创 2020-11-14 17:06:05 · 1089 阅读 · 1 评论 -
链表基础3(超简单)--单链表的逆序
链表基础和链表的插入删除可以看上两篇博客!链表基础1(超简单)–创建一个长度为n的单链表链表基础2(超简单)–单链表的插入和删除这一节我们来看一下链表的逆序,稍微有一丢丢的难度!链表是由一个个的节点构成的嘛!话不多说上图理解!有这样一个链表,除去表头就是a1,a2,a3对吧!如果我们要逆序,逆序完成应该是a3,a2 a1。我们要如何逆序呢?便于观察我们简写一下链表格式:表头 a1 a2 a3 a4 a5 a6 a7.......如果我们将a2提出以来,a1和a3相连是不是就是表头 a2原创 2020-10-31 21:46:20 · 803 阅读 · 0 评论 -
链表基础2(超简单)--单链表的插入和删除
这篇文章是基于链表基础1(超简单)–创建一个长度为n的单链表所写的,需要看基础的可以跳过去,链表的基础知识这里就不在讲了。我们首先来看一下链表的删除,话不多说直接上图。如图,比如我们要删除B这个节点。我们先来看一下删除后的图。一对比你就明白啦!两个图一对比你就发现,如果我们要删除B节点,我们首先要将B节点的前后两个节点A,C连起来,这样B不就孤立了嘛,我们就可以给他free掉了!是不是灰常简单呀!我们来看一下具体代码实现。先看一下这个链表的结构typedef struct lianbiao原创 2020-10-30 17:30:30 · 3169 阅读 · 2 评论 -
链表基础1(超简单)--创建一个长度为n的单链表
首先我们来了解一下什么是链表?通俗的来说链表就是一种链式存储结构,大家可以抽象理解一下把他想象成一个铁链,铁链不是由一个个铁环,环环相扣组成的嘛!那么每个铁环就可以叫做一个节点,如果我们再在每个铁环上面系上两个个小盒子,那么这两个小盒子一个叫做数据域就是存放每个节点数据的地方一个叫做指针域这个就是存放下一个节点(铁环)地址的地方。可能这样说还有点抽象,直接上图。这就是链表里面一个节点的样子,下面我们给多个节点串起来形成链表!我给每个节点的地址设为A,B,C。注意看第一个节点的指针域存放的是第二个节原创 2020-10-30 11:00:55 · 9919 阅读 · 5 评论 -
C语言用链表做的学生管理系统
用枚举,单项链表做的一个学生管理系统。欢迎交流哈!!!都是用的最最基础的知识咯~~。#include <stdio.h>#include <stdlib.h>#include<string.h>typedef unsigned int u32;typedef unsigned char u8;typedef struct student//定义一...原创 2019-07-31 17:39:05 · 764 阅读 · 0 评论 -
基于文件的学生管理系统。
基于文件、链表的学生管理系统。将保存和读出分别封装成函数,调用更加方便。欢迎大家一起交流。#include <stdio.h>#include <stdlib.h>#include<string.h>typedef unsigned int u32;typedef unsigned char u8;typedef struct student//...原创 2019-08-05 09:21:26 · 409 阅读 · 1 评论 -
C语言实现钟表,年月日时分秒实时更新。(后附函数使用方法)
很简单的一个小程序!为了便于交流,我没有省略步骤。(后附函数使用方法)库文件为:#include<stdio.h>#include<windows.h>#include<time.h>#include<stdio.h>#include<windows.h>#include<time.h>int main(){...原创 2019-08-01 12:00:27 · 5766 阅读 · 0 评论 -
codeblocks下模块化编程(包含codeblocks使用方法,图文详解绝对详细,这必须得收藏哟!)
首先codeblocks是一款非常好用的编译器,集成的开发环境非常全面。但是使用起来稍微有那么一丢丢的小复杂。今天我们就来介绍在codeblocks下进行模块化编程!第一步:你得有一个codeblocks软件,打开并且新建一个项目到现在建立一个项目已经完成了,是不是很简单啊。下面开始今天的正文:如何模块化编程。第一步:打开左上角的file->new->file…(...原创 2019-08-06 15:47:21 · 2329 阅读 · 0 评论 -
C语言写的学生管理系统
每年都有许多刚刚接触C语言小伙伴门,面对老师布置的学生管理系统感到无从下手。网上也有许多版本大多都比较复杂,可能一些刚刚入门的小伙伴看起来会比较困难。 下面是一个完整的学生管理系统。都是用最简单的方法写的。欢迎来交流。q:918619587.#include <stdio.h>#include <stdlib.h>#include <strin...原创 2019-07-30 09:58:02 · 824 阅读 · 2 评论