
C语言学习分享
文章平均质量分 61
JDSZGLLL
努力学习编程的小孙
展开
-
链表经典题带刷(内含精华:链表深拷贝)
链表的题目中,带环问题,链表的深拷贝是很有难度的,希望笔者的分享能对读者有一定帮助。原创 2022-08-18 16:26:56 · 473 阅读 · 5 评论 -
手把手教你写一个单链表
我们知道链表结构和顺序表不同,不是一块连续的空间,而是一个个的数据节点,所以我们先要规定一个数据节点是怎么样的,首先要包含想要储存的数据,然后是要包含指向下一个节点的指针,只有这样才能把一个个松散的节点串联在一起。特别要注意,这里传的是头节点的二级指针,因为可能要改变指针的值,我们知道在C语言中如果想要传值后改变相应的值,就要传相应的指针,因为想改变一级指针,就要传二级指针。在数组上完成数据的增删查改。而链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。.原创 2022-07-30 21:28:56 · 744 阅读 · 3 评论 -
通过构建一个顺序表——教你计算时间复杂度和空间复杂度(含递归)
算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。这篇博客将会手把手构建一个顺序表,在具体的代码中帮助理解一段代码的时间和空间复杂度。...原创 2022-07-29 20:21:19 · 3463 阅读 · 2 评论 -
C语言编译预处理详情以及宏和函数的对比
C语言编译预处理详情以及宏和函数的对比原创 2022-07-19 11:04:41 · 359 阅读 · 1 评论 -
C语言文件操作函数讲解
我们可能想要把特定数据相对稳定地储存在电脑中,而不希望程序结束就被销毁了。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。想要实现这一功能,文件操作函数是必须要掌握的,可以方便快捷地对文件进行相应的处理。...原创 2022-07-18 20:37:21 · 438 阅读 · 0 评论 -
C语言中的自定义类型
C语言中的数据类型分为两种,一种是内置类型:int、long、char、long long、double等;还有一种就是自定义类型,包括结构体类型、枚举类型、以及联合体类型三种。自定义类型的使用较为灵活,但是所需要掌握的知识也更加繁琐。...原创 2022-07-17 22:23:41 · 731 阅读 · 0 评论 -
辗转相除、杨氏矩阵和三步翻转
本文对在学习C语言过程中三个比较经典的问题,进行详细地阐述,从逻辑和代码的角度理解三个解答的细节。原创 2022-07-17 15:28:04 · 413 阅读 · 0 评论 -
动态管理内存的通讯录实现
建立一个简单的通讯录原创 2022-07-15 18:00:16 · 164 阅读 · 0 评论 -
内存管理函数以及动态管理内存的通讯录实现
常见的内存操作函数以及动态管理内存的通讯录实现原创 2022-07-13 20:23:04 · 268 阅读 · 0 评论 -
字符串操作函数集锦
size_t strlen ( const char * str );char* strcpy(char * destination, const char * source );char * strcat ( char * destination, const char * source );int strcmp ( const char * str1, const char * str2 );char * strstr ( const char *str1, const char * str2)原创 2022-07-13 16:36:41 · 147 阅读 · 0 评论 -
函数指针的运用(回调函数和转移表)
前面我们学习了各种各样的指针类型,有些指针可以说是稀奇百怪,特别是函数指针,有些朋友可能觉得,函数指针有些多余,调用函数为什么要用指针调用,直接调用不好吗?接下来我们从具体的实例来回答同学们的问题,加深对函数指针的理解。...原创 2022-06-14 10:16:41 · 170 阅读 · 1 评论 -
深入学习指针
从各种不同的指针的角度切入,使得我们对指针的了解更加深入。原创 2022-06-02 10:08:09 · 322 阅读 · 0 评论 -
浮点数在内存中的储存
浮点数在这些浮点型的内存之中又是如何储存的原创 2022-05-26 13:42:28 · 236 阅读 · 3 评论 -
用C语言实现逻辑推导问题
谁在说谎问题描述警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。代码实现#include<stdio.h>int main(){ //用数值来表示是否为凶手,如果为凶手则为1,否则为0 int A = 0; int B = 0; int C = 0; int D = 0原创 2022-05-24 22:23:40 · 270 阅读 · 0 评论 -
用C语言构建一个带头、双向、循环的链表
用C语言构建一个带头、双向、循环的链表原创 2022-05-23 08:50:20 · 154 阅读 · 0 评论 -
通过局部变量的储存解释越界访问的危害
通过局部变量的储存解释越界访问的危害原创 2022-05-18 15:16:42 · 447 阅读 · 1 评论 -
计算参数二进制中1的个数
题目描述写一个函数,返回参数二进制中1的个数(计算的是补码中1的数量),以int类型为例,9以二进制表示为:00000000000000000000000000001001,有2个1。第一种方法第一种的思路是我们通过取余的方法判断参数的每一位是不是1,然后取模之后赋给原来的值判断下一位,然后统计判断的结果,就能得到结果。接下来我们上代码:#include<stdio.h>int count_of_1(int n){ int ret = 0; while ...原创 2022-05-18 14:45:28 · 139 阅读 · 2 评论 -
如何从头开始构建一个单向、不带头、不循环链表并实现基础功能
关于单向不带头不循环链表的构建原创 2022-05-13 09:30:48 · 131 阅读 · 0 评论 -
计算机储存的原码、反码和补码以及整形提升和算术转换
今天仅仅以int类型为例,讲解整型的原码、反码和补码,下周更新浮点型在计算机中的储存。原创 2022-05-11 15:07:33 · 290 阅读 · 1 评论 -
在1到100中找出所有和为100的数字组合
这是我今天听到的一道题,感觉很有意思,和大家分享一下,核心思想是递归和不降序组合。话不多说,直接上代码。#include<stdio.h>//begin是开头的数字,end是剩余数字想要得到的和,同时begin和end也指定了选取数字的区域范围//size是当前arr数组中储存的数据的个数//arr为储存数组的地址void number(int begin, int end, int size, int* arr){ int i = 0; int j = 0; for原创 2022-05-09 16:44:38 · 1677 阅读 · 3 评论 -
环状字符串的最小字典序表达
题目描述实现思路一将环形字符串展开为一串普通字符串,并且将字符串拷贝一份到临时变量中。二找到环形字符串中的最小字典序字母,并且记录相应坐标。三这时候不要急着比较,要完成重要一步,将环形字符串拷贝一份放到后面,这样比较起来更加方便。四比较最小字母开头的不同字符串,得出最小表示。代码实现#include<stdio.h>#include<string.h>int main(){ char loop[201] = "TCGAGTC原创 2022-05-08 16:06:31 · 587 阅读 · 0 评论 -
用C实现一个简单的扫雷小游戏
可以展开一片的扫雷小游戏原创 2022-05-06 12:07:18 · 459 阅读 · 2 评论 -
多组输入的大坑以及vs的小bug
目录前言题目描述输入描述:输出描述:第一版开始调试和小bug前言在五一期间,我又又又被百度给坑了,这是一道关于字母大小写转换的题,总体没什么难点,但还是缺少经验啊,卡在了多组输入这一关,随后又被劣质回答踹坑里了,调试了好久才发现问题所在,接下来分享一下我的惨痛经验,希望能把大伙从坑里挖出来.题目描述完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。输入描述:多组输入,每一行输入一个字母。输出描述原创 2022-05-05 15:23:46 · 130 阅读 · 1 评论 -
在一组数中找到两个只出现一次的数字
今天要和大家分享的是我最近做到的一个比较有趣的编程问题,希望对大家有所裨益,话不多说下面开始进入正题。简单版本题目及解决给定一个只包含整数的数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。这是今天要讲解的问题的简化版本,也就是使用在一堆出现两次的数中找到那个只出现一次的数字,是不是有种在一堆情侣中找到一条单身狗的感觉。在正式讲解题目之前我们先来了解一个单目操作符——^,异或操作。这个操作符的作用是对两个数字的二进制下的每一位进行操作,如果这一位两个数字相原创 2022-05-02 22:57:32 · 272 阅读 · 0 评论 -
一个简单的三子棋游戏
game.h#pragma once#define ROW 3#define COL 3void menu();void game();void printboard(char board[ROW][COL], int row, int col);void boardinit(char board[ROW][COL], int row, int col);//棋盘初始化int judge_winner(char board[ROW][COL]);void compu原创 2022-04-29 20:11:18 · 1736 阅读 · 0 评论 -
深入理解函数的参数——实际参数(实参)和形式参数(形参)
目录初步了解函数的参数实际参数形式参数深入学习初步了解函数的参数函数是我们编写程序必定会用到的,但是我们真的有那么了解它吗?今天就让我们从形参和实参的角度深入学习函数。接下来让我们上一个简单的代码,是判断是否为闰年的代码,初步了解函数的参数。#include<stdio.h>int isLeapYear(int year)//判断年份是否为闰年,是闰年返回1,否则返回0{ if ((0 == year % 4 && 0 != .原创 2022-04-25 15:47:29 · 27137 阅读 · 11 评论 -
函数递归以及趣味问题的解决
目录函数递归普通数字顺序打印递归数字顺序打印斐波那契数列问题汉诺塔问题函数递归函数调用自身的行为就是递归。可以直接或间接的调用,本质是把复杂的问题转化为一个相似的,规模较小的问题。也就是我们常说的大事化小,小事化了,是一种把问题分而治之的思想。递归的一个最重要的价值就是可以减少代码量,确确实实能提高开发的效率,但它的缺点也是显而易见的,下面让我们用实例来讲解函数递归的优劣吧。普通数字顺序打印假设我们输入一个数,想按照顺序打印它的每一位.比如输入:123输出原创 2022-04-23 15:58:13 · 163 阅读 · 3 评论 -
关于局部变量和整体变量的区别
全局变量和局部变量的作用域和生命周期原创 2022-04-21 21:47:42 · 421 阅读 · 2 评论