C语言
文章平均质量分 67
C语言基础和笔记
影中人lx
经管跑路人
展开
-
剑指offer——day1
题目一题目主要考察的是对栈和队列的理解和基本实现typedef int STDataType;#define DEFSTACKSIZE 100typedef struct Stack{ STDataType* array; int size; int capacity; }Stack;void CheckCapacity(Stack* ps){ if (ps->size >= ps->capacity) { ps->capacity *= 2原创 2022-04-08 20:09:50 · 255 阅读 · 0 评论 -
一篇解决背包问题
文章目录0-1背包问题完全背包问题多重背包问题一多重背包问题二0-1背包问题思路1:二维动态规划法对于状态f[i] [j]定义为前i给物品下,背包重量为j的最优解:当前的状态依赖于之前的状态,那么初始的状态f[0] [0]==0开始决策。有n个物品,则需要N种决策,每一次对第i件物品的决策,状态f[i] [j]不断由之前的状态跟新而来。对于第i件物品时,如果空间的容量不够, 那么f[i] [j]==f[i-1] [j]如果背包的容量够用,那么就有两种情况:如果选择了第i件原创 2022-04-01 17:38:13 · 494 阅读 · 3 评论 -
C语言|排序问题
这篇文章主要和大家分享三种基础的排序算法——冒泡排序、选择排序、快速排序一、排序问题1.冒泡排序冒泡排序的主要思想是通过两两相邻的元素进行比较,通过元素的大小决定是否交换。一趟冒泡排序的结果是一定有一个最大数会排到最后一个元素;因此对n个数进行排序,需要进行n-1躺冒泡排序。void bubble_sort(int arr[],int x)//注意形参arr传递的是地址 int i=0; for(i=0;i<sz-1;i++)//冒泡排序的趟数 { int j=0; i原创 2021-10-14 23:55:06 · 4321 阅读 · 2 评论 -
C语言笔记
一、1.变量与生命周期(1)生命周期指的是时间。所以变量的生命周期从开始占用内存开始,一直持续到内存的释放,这就是我们常讲的生死过程。 变量保留其值的时间被称为变量的生命周期。(2)作用域的就是你定义的变量可以使用的代码范围。2.变量变量根据作用域的不同可以分为局部变量和全局变量(1)全局变量全局变量的作用范围为创建的整个工程,变量在整个工程的最前方被定义和创建#include<stdio.h>int a=10;int main(){ printf原创 2021-10-17 19:11:03 · 860 阅读 · 0 评论 -
自学C语言笔记|初识递归
文章目录递归一、什么是递归 1.递归的定义 2.递归的条件 (1)递归中的死循环 (2)栈溢出 二、递归演示 尾递归 倒叙计算 斐波拉契数列 汉诺塔 三、递归的优缺点前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么?示例:pandas...原创 2021-10-14 01:21:27 · 450 阅读 · 2 评论 -
C语言初识malloc和memset
一、什么是malloc函数1.malloc是c标准库中提供的一个普通函数,分配一块连续的内存,并常与free函数一起使用。(free函数的作用是释放创建的空间)2.malloc的返回值malloc 返回一个指向分配空间的 void 指针,如果可用内存不足,则返回 NULL。 要返回指向除 void 类型以外的类型的指针,请对返回值使用类型转换。返回值指向的存储空间保证适当对齐以存储任何类型的对象。 如果 size 为 0,malloc 在堆中分配一个长度为零的项目并返回一个指向该项目的有原创 2021-10-27 16:28:57 · 3027 阅读 · 0 评论 -
C语言 结构体和选择语句
目录一、内存与地址1.内存2. 地址的产生二、结构体struct1.什么是结构体2.创建结构体三、数据类型(1)数据类型的大小(2)ASCII码的表示(3)汉字的表示四、选择语句1.C语言中的真与假2.if语句3.switch语句4.continue语句五、保留小数和四舍五入一、内存与地址1.内存内存被划分为一个一个小的内存单元,为了管理这些内存单元,计算机给每一个内存单元进行编号。内存单元的编号就是地址。对于变量的地址:.原创 2021-10-25 00:07:56 · 3969 阅读 · 4 评论 -
C语言实现简单版三子棋
一 三子棋的实现游戏的主函数设计:1.打印出可以让玩家选择游戏开始和退出的菜单。2.如果玩家选择1,则游戏开始,并开始执行game()函数。3.如果玩家选择0,则游戏退出。4.如果玩家选择了其他数,提醒玩家选择正确的功能。主函数的实现:int main(){ int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请输入-->"); scanf("%d", &..原创 2021-10-19 23:41:32 · 1318 阅读 · 1 评论 -
函数栈帧的创建和销毁
函数每一次调用都会在栈区上开辟空间;在介绍这一部分知识时,我们需要了解一些汇编语言的基础知识,比如常用指令的作用,同时还要了解常用寄存器的作用。一:常用汇编指令和寄存器push指令:它首先减少esp的值,再将源操作数复制到栈地址32位平台上,esp每次减少4字节。pop指令:它首先把esp指向的栈元素内容复制到一个操作数中,再增加esp的值。在32位平台上,esp每次增加4字节。mov指令: 用于将一个数据从源地址传送到目标地址,源操作地址的内容不变。sub指令:减操作指令,从寄存器中减原创 2021-11-19 19:43:23 · 542 阅读 · 0 评论 -
我三岁兄弟看了都会写的C语言扫雷教程
提供给玩家选择玩游戏和退出的函数。当玩家选择1,游戏开始;玩家选择0,游戏退出。我们把游戏开始的函数都放在play()函数中。void meau(){ printf("**************************************\n"); printf("**************************************\n"); printf("**************************************\n"); printf("********原创 2021-11-11 01:33:14 · 2190 阅读 · 2 评论 -
数据的存储
一.数据类型://整型家族char //字符型数据类型short //短整型int //整型long //长整型long long //更长的整型//浮点型家族float //单精度浮点数double //双精度浮点数(c99还加入了bool类型,需要引入头文件<stdbool.h>//构造类型>数值类型>结构体类型struct>枚举类型enum>联合类型union//指针类型in原创 2021-11-26 23:07:30 · 631 阅读 · 3 评论 -
C语言实现通讯录
对于通讯录中的每一个成员,有姓名、年龄、电话等信息,所以可以通过结构体实现通讯录。通讯录的功能如下:1.可以保存自定义最大数量人的信息:年龄(age)、性别(sex)、姓名(name)、地址(addr)、电话(tele).2.可以对存储的信息进行增删查改,排序和打印。对代码进行分块处理,包括test.c的测试文件,contact.c的函数实现文件,contact.c的声明文件contact.h头文件#define MAX 10000#define MAX_NAME 10#def原创 2022-01-27 16:47:54 · 5660 阅读 · 0 评论 -
C语言笔记——数组
一、一维数组的创建和初始化什么是数组:一组相同类型元素的集合。一维数组的创建:int arr[];char s[];double arr1[];变长数组:数组中存储的元素是变量。int n=0;scanf("%d",&n);int arr[n];变长数组在C99之前是比支持的,在C99标准后可以使用。初始化1.完全初始化:把数组中的每一个元素都赋值int arr[10]={1,2,3,4,5,6,7,8,9,10};2.不完全初始化:赋值一部分原创 2021-11-09 00:34:47 · 593 阅读 · 0 评论 -
文件编译【上】
1.程序的翻译环境和执行环境翻译环境:在翻译环境中,源文件被翻译为可执行的机器指令。执行环境:实际执行代码的环境2.编译与链接组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其函数一起链接到程序中。图解:2.1编译的过程预编译------>编译---------->汇.原创 2022-02-24 23:33:23 · 558 阅读 · 0 评论 -
操作符浅解
1.移位操作符作用的对象是数的二进制位。(1):>>向左边移动一位,左边丢弃,右边补0;相当于这个数乘以2移动n位,相当于乘以2的n次方。int main(){int a=2;int b=a<<1;//打a的二进制向左移动一位printf("b=%d",b);return 0;}(2)>>向右边移动,因为二进制位的第一个数表示数的正负,所以向右移时分为两种情况;1.算术右移:右边丢弃,左边补原符号位(1表示负数,0表示整数)原创 2021-11-17 00:28:35 · 256 阅读 · 0 评论 -
<C语言>文件操作
1.什么是文件按照文件的功能来划分,文件可以分为程序文件和数据文件。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。2.文件的打开和关闭2.1文件指针每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构.原创 2022-02-22 21:06:03 · 709 阅读 · 0 评论 -
字符函数和内存函数的模拟实现
1.字符串函数长度不受限的函数1.1strlen函数字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')。参数指向的字符串必须要以'\0'结束。模拟实现:size_t my_strlen1(const char*str)//const保证了字符串的内容不可以更改{ assert(str);//断言,防止出现NULL指针 int cnt=0; while(*str) { cnt++原创 2022-01-22 20:38:26 · 375 阅读 · 1 评论