C语言
文章平均质量分 68
LiterMa
这个作者很懒,什么都没留下…
展开
-
二叉排序树
目录一、定义二、查找三、插入四、二叉排序树的删除小结:下一篇:一、定义二叉排序树或二叉查找树(BST,Binary Search Tree)性质:左子树上所有的结点的关键字均小于根结点的关键字右子树上所有的结点的关键字均大于根结点的关键字左子树和右子树又各是一棵二叉排序树由于这些特性通过中序遍历可以得到一个递增的有序序列可以很方便的实现有序组织、搜索二、查找代码实现BSTNode *BST_Search(BSTree T,in...原创 2021-06-23 10:17:52 · 245 阅读 · 0 评论 -
串的存储结构
目录一、串的顺序存储二、串的链式存储三、代码与说明小结下一篇:一、串的顺序存储二、串的链式存储三、代码与说明#include<bits/stdc++.h>using namespace std;//字符串的顺序存储结构#define MAXLEN 255//静态数组实现 typedef struct{char ch[MAXLEN];int length;}SString; //动态数组实现(对分...原创 2021-04-06 22:38:45 · 154 阅读 · 0 评论 -
c语言链表
目录c语言暂时更新完毕链表实现链表改进及其函数补充知识volatile关键字链表实现#include <stdio.h>#include "node.h"#include <stdlib.h>//node头文件内容://typedef struct _node{// int value;// struct _node *next;//}Node;typedef struct test{ int a;}Test;.原创 2021-01-13 00:20:45 · 178 阅读 · 0 评论 -
c语言可变数组的实现
下一篇:一个可以提供可变长度数组的函数1、可以自增长2、可以得到当前长度3、可以获取元素the interface,定义以下函数库实现:array.h头文件#ifndef STUDENTS_ARRAY_H#define STUDENTS_ARRAY_Hconst BLOCK_SIZE=20;//把数组每份划分为20个大小,便于动态增长数组大小typedef struct { int *array; int size;}Arra...原创 2021-01-13 00:17:36 · 507 阅读 · 1 评论 -
c语言位操作
目录按位运算移位运算位段按位运算比较底层的操作按位运算1、按位的与&i代表对应的位置如果(x)i==1并且(yi)==1,那么(x & y)i=1否则的话(x & y)i=0按位与常用于两种应用:让某一位或某些位为0:x & 0xFE取一个数中的一段:x & 0xFF,要哪个就在哪位与上1,参考子网掩码通俗来讲就是两个二进制数来进行按位取与2、按位取或|理同上一般用于:使得...原创 2021-01-13 00:15:08 · 248 阅读 · 0 评论 -
c语言文件的输入输出
目录用>和<做重定向FILE二进制文件下一篇:用>和<做重定向演示:输入和输出int num;scanf("%i",&num);printf("%d\n",num);return 0;./test > 12.out重定向输出到12.out输入:就没有了输出输入到了12.out里面我们用重定向>将12345写入到12.in里面去,ctrl+d结束掉查看我...原创 2021-01-13 00:12:54 · 144 阅读 · 2 评论 -
c语言格式化的输入输出
下一篇:printf%[flags][width][.prec][hlL]typescanf%[flag]type现在研究以上的东西一、flag逐一演示:-(减号)printf("%9d\n", 123); //9代表输出占9个字符的空间 printf("%-9d\n", 123);//加了-就是左对齐了,默认是右对齐+(加号) printf("%+9d\n", 123); printf("%-9d\n", 123);...原创 2021-01-13 00:10:40 · 859 阅读 · 0 评论 -
c语言多个.c文件编译以及操作
目录多个.c文件头文件声明下一篇:多个.c文件一、why?main()里的代码太长了适合分成几个函数一个源码文件太长了适合分成几个文件两个独立的源代码文件不能编译形成可执行的程序二、如何将多个.c组合成一个?需要使用编译器新建项目,然后把源代码放进去,编译器会把项目中所有的源代码编译后,链接起来编译器有编译和构建,编译指对单个源码进行编译,后者是对整个项目做链接编译单元:一个.c是一个编译单元,编译器每次编译只能处理一个编译单元...原创 2021-01-13 00:08:56 · 15894 阅读 · 5 评论 -
c语言宏定义
目录宏定义带参数的宏下一篇:宏定义一、是什么?编译预处理指令#开头的是编译预处理指令他们不是C语言的成分,但是C语言离不开它们#define用来定义一个宏//constdoublePI=3.14159;//c99的写法//但是在更早的版本ANSI没有const可以用,用以下的形式#definePI3.14159//定义一个叫PI的东西叫3.14159,也就是PI是这个宏的名字,3.14159是这个宏的值intmain(intargc,charc.原创 2021-01-12 23:53:30 · 1073 阅读 · 0 评论 -
c语言*返回指针的函数
下一篇:1、返回本地变量的地址是危险的,一旦离开这个函数本地变量就不存在了实验:int *f(void );void g(void);int main(int argc,char const *argv[]){ int *p=f();//将返回的指针给p printf("*p=%d\n",*p);//打印一下p中的东西 g();//调用一个有本地变量的函数 printf("*p=%d\n",*p);//再打印一下p里面的东西 retur...原创 2021-01-12 23:51:55 · 334 阅读 · 0 评论 -
c语言全局变量与静态本地变量
目录全局变量静态本地变量下一篇:全局变量一、定义定义在函数外面的变量是全局变量全局变量具有全局的生存期和作用域他们与任何函数都无关在任何函数内部都可以使用他们实验:int f(void );int gAll=12;//一个全局变量int main(int argc,char const *argv[]){ printf("这是在%s里面使用gAll=%d\n",__func__ ,gAll);//__func__是当前函数的名称的...原创 2021-01-12 23:50:14 · 238 阅读 · 0 评论 -
c语言枚举
目录常量符号化枚举的定义下一篇:c语言结构类型、typedef和联合体常量符号化用符号而不是具体的数字来表示程序中的数字例如:0代表红色 const int red=0;1代表黄色 const int yellow=1;2代表绿色 const int green=2;现在用枚举而不是独立的const来定义独立的const int变量枚举的定义enum COLOR{RED, YELLOW,GREEN};//这里RED是0,YELLOW是1,GR.原创 2021-01-12 23:48:02 · 129 阅读 · 0 评论 -
c语言结构类型、typedef和联合体
目录结构类型结构与函数结构体中的结构类型定义联合下一篇:结构类型一个结构是一个复合的数据类型声明例子:struct date{int month;int day;int year;};分号不能漏创建变量struct date today;赋值:today.month=07;today.day=31;today.year=2014;打印:printf("Today is date is %i-%i-%i.\n",原创 2021-01-12 23:47:29 · 293 阅读 · 0 评论 -
c语言字符串1
目录字符数组字符串变量字符串输入输出下一篇:c语言字符串2字符数组char word[]={'H','e','l','l','o','!'};这不是c语言的字符串,因为不能用字符串的方式做计算如何定义字符串?char word[]={'H','e','l','l','o','\0'};这才是字符串,把单引号和\去掉也是一样的意思现在有了7个单元'\0'就是0字符串定义:1、以0(整数0)结尾的一串字符0或'\0'是一样的,但是和.原创 2021-01-12 23:42:39 · 1881 阅读 · 0 评论 -
c语言字符串2
目录字符串数组程序参数单字符输入输出下一篇:c语言字符串函数字符串数组字符串数组:char **aa是一个指针,指向另一个指针,那个指针指向一个字符(串)char a[][]={"hello",};这是一个二维数组,第二个[]没有给值就会报错这么写相当于a是一个数组,数组中每一个单元都是一个char[10]char a[][10]={"hello",//a[0]-->char[10]"1234adsasdasd"//如果超.原创 2021-01-12 23:42:15 · 142 阅读 · 0 评论 -
c语言字符串函数
目录字符串函数strcpystrcat字符串搜索函数下一篇:字符串函数头文件string.h这是c标准库函数,理论上所有c语言发行版本都带有的函数1、size_t strlen(const char *s);//回顾:不希望函数修改这个数组要加const 返回s的字符串长度(不包括结尾的0)char line[]="Hello";printf("strlen=%lu\n",strlen(line));printf("sizeof=%lu\n...原创 2021-01-12 23:41:43 · 169 阅读 · 0 评论 -
c语言指针1
目录运算符&指针指针的使用指针常见错误下一篇:c语言指针2运算符&是一个运算符,获取变量的地址,它的操作数必须是变量实际上&取到的地址就是一个指针只不过没有指针变量名,所以要通过赋值到一个指针来使用 int i=0; printf("0x%x\n",&i);//查看i的地址 printf("0x%p\n",&i);//%p专门用于打印地址 int p; p=(int)&i...原创 2021-01-12 23:28:01 · 68 阅读 · 0 评论 -
c语言指针2
目录指针与数组小结:指针与const指针运算用指针来做什么动态内存分配动态分配空间示例(重点)常见问题:没空间了怎么办?指针与数组传入函数的数组成了什么?void test(int a[]);int main() { int a[]={1,2,3,4,5,}; printf("main sizeof(a)=%lu\n",sizeof(a)); test(a); return 0;}void test(int ...原创 2021-01-12 23:27:38 · 180 阅读 · 0 评论 -
c语言数组
目录数组一个巧妙利用数组的素数求法(埃式筛选法)二维数组数组定义数组<类型> 变量名称[元素数量];int grades[100];元素数量必须是整数C99之前:元素数量必须是编译时刻确定的字面量,也就是c99之后可以使用变量定义数组大小,c99之前必须是常量数组是一种容器,特点是:其中所有的元素具有相同的数据类型,一旦创建,不能改变大小,在内存中连续依次排列数组可以出现在赋值的左边或者右边:例如,a[2]=a[1]+6在..原创 2021-01-11 14:06:08 · 148 阅读 · 0 评论 -
c语言函数
目录函数探究一个问题a和b的交换本地变量函数的一些注意事项函数函数是一块代码,接受零个或者多个参数,做一件事情,并返回0个或一个值调用函数:函数名(参数值);可以只写函数名不写括号,但是就不是这个意思了函数可以有返回值返回值也要注意单一出口原则没有返回值的函数void函数名(参数表)不能使用带值的return可以没有return调用的时候不能做返回值的赋值c语言的函数声明一定要在调用之前,不然会找不到在c99之前如果把函数..原创 2021-01-11 14:02:31 · 135 阅读 · 0 评论 -
c语言运算符
目录逻辑运算条件运算符(三目运算符)逗号运算符下一篇:逻辑运算逻辑运算是对逻辑量进行的运算,结果只有0或1逻辑量是关系运算或逻辑运算的结果例如表达x∈(4,6),应写为x>4&&x<6,而不应该是4<x<6判断一个字符c是否是大写字母c>='A'&&c<='Z'优先级: !>&&>||优先级综合短路:逻辑运算是自左向右进行的,如果...原创 2021-01-11 13:59:36 · 183 阅读 · 0 评论 -
c语言学习之简单知识合集
目录读函数scanf表达式c语言中将整型转化成浮点型随机数函数rand()下一篇:变量本系列是对慕课上对翁凯c语言的总结注释是C99的东西,ANSI不支持读函数scanf现用scanf_s代替scanf区别scanf_s检查输入边界更加安全int price=0; printf("请输入金额\n"); scanf_s("%d",&price); int change=100-price; printf(...原创 2021-01-11 13:54:01 · 72 阅读 · 0 评论 -
c语言变量
目录变量概述常量VS变量一些变量类型整数的范围浮点类型字符类型逃逸字符类型转换bool类型下一篇:c语言流程控制变量概述变量的名字是一种标识符标识符的构造规则:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,c元的关键字不可以做标识符关键字:赋值和初始化初始化 int a=0 赋值a=b对于一个变量没有初始化的情况下做加法会用一个没有意义的值(内存里原有的值)来计算补充:c99可以在...原创 2021-01-11 13:53:41 · 188 阅读 · 0 评论 -
c语言流程控制
目录if语句重写时间差程序switch-case单一出口原则while循环数位数数字逆序do whiledo while重写数位数for循环素数判断数硬币程序计算收敛函数循环的练习整数分解秋水仙数最大公约数的几种求法下一篇:if语句重写时间差程序int hour1,minute1; int hour2,minute2; scanf_s("%d %d",&hour1,&minute1);...原创 2021-01-11 13:52:55 · 277 阅读 · 0 评论 -
Linux学习之多进程
fork函数int main(int argc,char const* argv[]){ int i,j,k; if(i=fork()){ j=wait(NULL); //等待子进程暂停或者终止 printf("子进程结束后,父进程被唤醒继续执行!\n"); printf("i=%d,j=%d\n",i,j); } else{ k=getpid(); printf("子进程正在运行!\n"); printf("i=%d k=%d\n",i,k); exit(0); }}原创 2021-01-04 00:00:11 · 118 阅读 · 0 评论