![](https://img-blog.csdnimg.cn/201789f09a2c483d87af7dda2d3c5b74.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言-基础
文章平均质量分 60
关于C语言的基础学习
_麦子熟了
麦子熟了,美好的事物都在悄然发生着。
展开
-
【C语言】八大排序算法
本文详细介绍了数据结构的排序算法,结合动图,基本思想,解析,代码,你也可以手撕算法。原创 2022-09-30 09:38:29 · 16957 阅读 · 22 评论 -
【C/C++】有关宏函数的问题
一文掌握宏函数。原创 2023-03-23 20:53:47 · 405 阅读 · 9 评论 -
学习文件操作前必须先理解文件,如何理解文件?
学习文件操作前需要先理解文件,这样才能对文件有较为完整的认识。原创 2023-03-10 18:01:45 · 499 阅读 · 6 评论 -
【C语言】strcat函数_字符串追加/连接
文章目录前言一、认识并使用strcat函数二、模拟实现strcat函数1.明确思路2.代码实现前言strcat函数又称字符串追加或字符串连接函数,函数的功能就是在一个字符串后面追加上另外一个字符串。一、认识并使用strcat函数1.库函数中strcat函数的声明->头文件string.hchar* strcat(char* Destination, const char* source);2.认识strcat函数strcat函数最后返回的是目的地地址,所以返回类型是char*由于我原创 2022-04-19 12:53:10 · 7961 阅读 · 1 评论 -
【C语言】关机代码
文章目录前言一、思路二、代码实现1.goto实现2.while实现前言这篇文章我们将会学习如何用C语言写—关机程序,代码运行起来后,请注意你的电脑将会在1分钟后关机,记得输入密码哦。一、思路(1)我们需要输入密码在我们的生活中密码往往不只是由数字组成,还要很多字符,所以我们先创建一个字符数组,用来存放输入的密码。(2)关机的函数-(库函数system()的头文件是stdlib.h)system("shutdown -s -t 60");(3)取消关机的函数system("shutdow原创 2022-04-18 12:36:25 · 7740 阅读 · 5 评论 -
【C语言】演示多个字符从两端向中间汇聚
文章目录前言一、思路二、代码实现前言这节内容我们学习如何用C语言实现多个字符从两端从中间汇聚。一、思路(1)用字符数组char a[ ]和char b[ ]存储你要显示的内容(2)利用strlen()计算字符串数组长度(3)给数组a赋上要显示的字符我们假设strlen(a)=len;那么从a[0]和b[0],a[len]和b[len]开始,从左往右(left++),从右往左(right–),依次赋值,结束的出口是(left<=right)(4)优化代码Sleep函数可以使计算机程原创 2022-04-18 14:29:01 · 322 阅读 · 0 评论 -
【C语言】简单模拟用户登录场景
文章目录前言一、思路二、实现代码前言这篇文章我们将简单模拟用户登录场景,只允许输入三次密码,学习for循环的用法。一、思路(1)用字符数组存储密码(2)利用for循环因为只允许输入三次密码,三次密码均错误,就该退出程序,所以这里采用三次for循环,若最后一次输入的密码也错误i会被赋值为3,用户会被告知“三次密码均错误,退出程序”。若三次以内,密码输入正确,则登录成功,并且要break出for循环。二、实现代码#include<stdio.h>#include<strin原创 2022-04-18 15:49:29 · 1312 阅读 · 0 评论 -
【C语言】九九乘法口诀表
文章目录前言一、左下三角二、右下三角三,左上三角四,右上三角前言九九乘法表是C语言的入门题,我们知道如何打印出左下三角的九九乘法表,那么是否有好奇心试着打印左三,右上,右下三角的九九乘法口诀表呢?一、左下三角#include<stdio.h>int main(){ int i = 0; int j = 0; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%-4原创 2022-04-18 19:43:24 · 54679 阅读 · 22 评论 -
【C语言】使用函数实现字符串部分复制
文章目录题目一、思路二、实现代码题目本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数将 输入字符串char *t 中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。一、思路1.求输入字符串的长度,判断m是否超过输入字符串的长度,若超过则返回空串(注意此时t的位置最后会指向’\0’,所以要提前用字符指针保留 输入字符串 的首元素地址)2.找到输入字符串的第七个字符(t=t+m-1)3.从t的第七个字符开始依原创 2022-04-19 18:31:02 · 9093 阅读 · 3 评论 -
【C语言】PTA-查找书籍
文章目录题目输入格式输出格式思路实现代码题目给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。思路1.书包括书名和价格等,所以我们采用结构体,结构体类型为struct Book,结构体成员为价格和原创 2022-04-20 14:39:30 · 11043 阅读 · 8 评论 -
【C语言】strcpy函数_字符串拷贝【详解】
文章目录前言一、认识并使用strcpy函数二、模拟实现strcpy函数1.明确思路实现代码前言strcpy,即string copy(字符串复制)的缩写。strcpy是C++语言的一个标准函数 ,strcpy把含有’\0’结束符的字符串复制到另一个地址空间。strcpy的头文件:string.h一、认识并使用strcpy函数1.库函数中strcpy函数的声明char* strcpy(char* destination,const char* source);2.认识strcpy函数第一原创 2022-04-20 15:26:12 · 28886 阅读 · 3 评论 -
【C语言】删除指定字符
文章目录题目一、裁判测试程序样例:输入样例输出样例二、学习思路与代码实现1.思路2.代码实现题目本题要求实现一个删除字符串中的指定字符的简单函数。一、裁判测试程序样例:#include <stdio.h>#define MAXN 20void delchar( char *str, char c );void ReadString( char s[] ); /* 由裁判实现,略去不表 */int main(){ char str[MAXN], c; sc原创 2022-04-22 09:12:30 · 32824 阅读 · 8 评论 -
【C语言】初识内存开辟/分配
提示:这篇文章主要用于自己理解更好的理解内存空间,以便更好的学习C语言的动态内存分配,很多内容资料都来自于其他大佬的博客。文章目录前言一,内核空间(用户代码不能读写)二,栈区stack(向下增长)三,内存映射四,堆区(向上增长)五,静态区(数据段)六,代码区七,常量区前言C/C++程序的内存分配主要有几个区域:内核空间,栈区,堆区,静态区(数据段),常量区,代码区一,内核空间(用户代码不能读写)假设有一个4G内存的电脑,那么可能2个G的内存都留给操作系统,内核是操作系统的内部核心程序,它向.原创 2022-04-22 10:54:55 · 509 阅读 · 6 评论 -
【C语言】为什么存在动态内存分配
文章目录前言一、动态内存分配定义二、动态内存分配的意义1.可以控制所开辟的内存大小2.可以多次利用这部分空间三,动态内存函数的介绍前言提示:我们先来看一个在vs编译器下,同学们常犯的错误注意:在VS编译器下C语言是不支持变长数组的,我们应该输入一个常量值,如struct Stu s[100]={0};在C99中是支持变长数组的,不同编译器不同,gcc是支持C99的。一、动态内存分配定义我们平常定义的局部变量都是在栈上分配空间的,(1)开辟的空间都是固定的大小,(2)数组在声明的时候,必须指原创 2022-04-22 17:18:54 · 2152 阅读 · 6 评论 -
【C语言】malloc,free(),strerror函数
提示:动态内存分配函数一般与free()函数配套使用,学这章之前可以先去了解一下什么是动态内存分配,见我的博客:【C语言】初识内存开辟/分配和【C语言】什么是动态内存开辟。文章目录一,malloc函数的定义二,malloc函数的使用一,malloc函数的定义malloc和free()函数的头文件:#include<stdlib.h>void* malloc(size_t size);malloc函数的返回类型为void*, size_t即unsigned int(无符号整型).原创 2022-04-23 10:26:03 · 6947 阅读 · 13 评论 -
【C语言】calloc函数
文章目录前言一、calloc函数的使用二、calloc与malloc的区别前言calloc函数也是与free()函数配套使用的,使用方式与malloc几乎相同,也是在堆区申请动态内存空间。头文件:stdlib.h,返回类型为空指针,size_t num为元素个数,size_t size为每个元素的字节大小。calloc函数的原型:void* calloc(size_t num ,size_t size)一、calloc函数的使用#include<stdio.h>#include原创 2022-04-23 14:45:13 · 25834 阅读 · 6 评论 -
【C语言】realloc函数
文章目录前言一、认识了解realloc函数二、使用realloc函数解析前言有时我们觉得我们用malloc,calloc函数申请的动态内存空间太大了,有时觉得申请的空间太小了,为了合理使用内存,我们要对内存的大小做灵活的调整,那么realloc函数就可以做到控制动态内存开辟的大小。一、认识了解realloc函数1.realloc函数的原型:void* realloc(void* memblock, size_t size)头文件:stdlib.hrealloc函数返回的是void*类型原创 2022-04-23 18:09:37 · 29678 阅读 · 8 评论 -
【C语言】常见的动态内存错误
1.不能对NULL(空)指针的解引用操作#include<stdio.h>#include<stdlib.h>int main(){ int* p = (int*)malloc(40); //万一在堆区动态内存开辟失败,则malloc返回一个空指针 //空指针不指向任何数据,它不是任何对象的地址,我们不能对空指针进行解引用操作 //所以我们在使用malloc函数时,一定要对malloc的返回值做判断 int i; for (i = 0; i < 10; i+原创 2022-04-24 20:09:19 · 377 阅读 · 1 评论 -
【C语言】野指针
前言:在学习C语言或者开放工程时,我们常会听到“野指针”这个概念,那么什么是野指针?野指针产生的原因是什么?野指针的危害是什么?我们又要如何去规避野指针呢?这章内容我们就将学习以上内容。文章目录一,什么是野指针?二、野指针产生的原因(C语言中常见)**1.局部指针变量没有初始化****2.使用已经释放过的指针**3.指针指向的变量在使用之前就被销毁了三,野指针的危害四,如何规避野指针一,什么是野指针?野指针是指向位置随机的(乱指一气),错误的指针,系统无法对其进行操作。野指针指向的值是非法的内存.原创 2022-04-27 14:56:07 · 2384 阅读 · 6 评论 -
【C语言】空指针
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.原创 2022-04-27 15:27:48 · 10108 阅读 · 3 评论 -
【C语言】动态内存面试题(一)
提示:这篇文章列出了四道关于动态内存常出现的面试题,我会解析每道题中的错误,并改成正确的代码。文章目录面试题一面试题一请思考以下代码,找出错误,并改正#include<stdio.h>#include<string.h>#include<stdlib.h>void GetMemory(char* p)//空指针也是有类型的,它与其他同类型指针的值都不相同{ p = (char*)malloc(100);//p用来接收str-NULL}void .原创 2022-04-27 20:29:44 · 1091 阅读 · 8 评论 -
【C语言】动态内存面试题(二)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.原创 2022-04-27 22:51:44 · 347 阅读 · 0 评论 -
【C语言】动态内存面试题(三)
提示:这篇主要叫动态内存分配的内存泄漏问题。文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):i.原创 2022-04-28 08:49:55 · 434 阅读 · 0 评论 -
【C语言】动态内存面试题(四)
注意: free函数释放动态内存空间之后,并不会自动将指针置为空指针请找出以下代码的错误,并改正代码#include<stdio.h>#include<stdlib.h>void Test(void){ char* str = (char*)malloc(100); strcpy(str, "hello"); free(str); if (str != NULL) { strcpy(str, "world"); printf(str); }}in.原创 2022-04-28 18:14:09 · 455 阅读 · 0 评论 -
【C语言】零长度数组(可变数组,柔性数组)
零长度数组又称可变数组,柔性数组,它是在C99中才定义的,所以有些编译器可能还不支持,我这里使用的是VS编译器。那现在就来让我们一起了解学习一下柔性数组吧!目录一,什么是柔性数组?二,柔性数组的特点三,柔性数组的使用四,为什么存在柔性数组?一,什么是柔性数组?在C99中,结构体的最后一个元素允许是可调整大小的数组,这就叫做柔性数组的成员。例如:struct S{ int n; int arr[0];//这就是可变数组(柔性数组,0长度数组)---可以调整大小};有些编译器可能不支持这.原创 2022-04-28 22:08:05 · 889 阅读 · 8 评论 -
【C语言】数据类型,计算机单位,打印符号
文章目录一,数据类型二,计算机单位三,数据类型的大小四,常见的打印符号一,数据类型char 字符数据类型short 短整型int 整型long(int) 长整型long long(int)更长的整型float 单精度浮点型double 双精度浮点型二,计算机单位在学习数据类型大小之前,我们先了解一下计算机的单位。计算机能理解的是二进制位 1/0,一个二进制位占一个比特位。bit -比特位//8bit=1bytebyte-字节//一个字节等于8个比特位kb//1kb=102原创 2022-04-29 17:11:27 · 1795 阅读 · 0 评论 -
【C语言】转义字符
提示:注意转义字符仍将其算作一个字符。文章目录一,常见的转义字符二,转义字符的使用(1)学习了解(2)面试题1(2)面试题2面试题3一,常见的转义字符\? 在书写连续问号时,防止被解析成三字母词( ??) = ] )\’ 用于表示字符常量’\" 用于表示字符常量"\\ 用于表示一个反斜杠\a 警告字符,蜂鸣\b 退格符\f 进纸符\n 换行符\r 回车\t 水平制表符\v 垂直制表符\ddd ddd表示3个八进制数字(0~7)\xdd dd表示2个十六进制数字二.原创 2022-04-30 15:08:48 · 2101 阅读 · 8 评论 -
【C语言】OJ题:printf函数的返回值
提示:我们频繁的使用printf函数,却忽略了printf函数也是有有返回值的,这节我们通过移到OJ题,学习一下printf函数的返回值。文章目录一,题目二,解析三,代码的实现四,扩展题一,题目KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?输入描述:无输出描述:包括两行:第一行为“Hello world!”第二行为printf(“Hello world!”.原创 2022-05-01 23:10:42 · 560 阅读 · 0 评论 -
【C语言】详解:折半查找(二分查找算法)
文章目录前言一、思路二、代码的实现前言当我们需要在一堆有序的数组中(二分查找只支持有序数组)找到某个元素的位置,即下标的时候,最常见的是遍历的方法(暴力求解法),一个个核对,不相等就跳到下一个,但是这种方法要浪费很多时间。这时候,我们就需要用到折半(二分)查找算法啦。一、思路那什么是折半(二分)查找算法呢?我们先来看一个情景—猜数字游戏,数字的范围在1-100之间,我让你猜某个数字,那么聪明的你第一时间肯定会猜50,然后我告诉你猜小了,然后你接下来猜肯定在51-100之间猜75,我又告诉你猜大原创 2022-05-03 20:40:17 · 6770 阅读 · 1 评论 -
【C语言】简单实现猜数字游戏
提示:简单猜数字游戏主要涉及:1.电脑生成随机数;2.循环实现;3.菜单函数和游戏实现的函数;4.switch-case语句;5.time函数文章目录前言一、代码的实现前言rand()函数头文件:<stdlib.h>函数声明:int rand( void );函数功能:生成一个随机数备注:The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand fun.原创 2022-05-04 19:08:31 · 1139 阅读 · 0 评论 -
【C语言】统计素数并求和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.原创 2022-05-04 20:38:07 · 11633 阅读 · 2 评论 -
【C语言】冒泡排序算法和冒泡排序的时间复杂度
提示:冒泡排序算法是非常重要的算法,一定要熟练掌握。思路可以参考一位大佬博主的博客:帅地。介绍的十分详细,理解了之后,可以参考我的代码,是入门级别的,比较好懂。关于时间复杂度是数据结构的内容,没学过的请至我的博客:【数据结构】时间复杂度。文章目录一、代码的实现二,冒泡排序的时间复杂度一、代码的实现#include<stdio.h>void bubble_sort(char* a, int sz){ int i = 0; int j = 0; int temp = 0; .原创 2022-05-05 21:25:16 · 8970 阅读 · 10 评论 -
【C语言】按顺序打印整数的每一位(递归)
文章目录一,题目与思路二,代码的实现一,题目与思路接收一个整型,按顺序打印它的每一位,例如,1234,输出结果为1 2 3 4递归的两个必要条件:1.存在限制条件(递归出口),当满足这个限制条件时,递归便不再继续2.每次递归调用之后越来越接近这个限制条件二,代码的实现#include<stdio.h>void Print(int n){ if(n>9) { Print(n/10); } printf("%d ",n%10);原创 2022-05-10 09:07:05 · 3987 阅读 · 2 评论 -
【C语言】统计1到n的阶乘和(递归与非递归)
文章目录前言一、非递归二、递归前言分别用递归和非递归的方式求得1到n的阶乘和一、非递归#include<stdio.h>int main(){ int n; scanf("%d", &n); int i = 0; int j = 0; int ret = 1; int sum = 0; for (i = 1; i <= n; i++) { //注意将ret赋为1 ret = 1; for (j = 1; j <= i; j++)原创 2022-05-10 17:40:38 · 4198 阅读 · 0 评论 -
【C语言】三种方法模拟实现strlen函数
这篇文章一共介绍三种方法模拟实现求字符串长度strlen的函数.文章目录法一:计数器(非递归)法二:递归的方式法三:指针-指针的方式法一:计数器(非递归)#include<stdio.h>#include<assert.h>int my_strlen(char* str){ //指针断言 assert(str != NULL); int count = 0; while (*str++) { count++; } return count;}i.原创 2022-05-10 18:59:15 · 286 阅读 · 0 评论 -
【C语言】计算一个数的每位之和(递归实现)
文章目录题目代码实现题目写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出:19代码实现#include<stdio.h>int DigitSum(int n){ if (n < 10) return n; else { return n % 10 + DigitSum(n / 10); }}int main(){ int n原创 2022-05-10 19:21:07 · 1703 阅读 · 0 评论 -
【C语言】递归实现n的k次方
题目编写一个函数实现n的k次方,使用递归实现。代码实现#include<stdio.h>int my_pow(int n, int k){ //递归出口 if (k == 1) return n; else { return n * my_pow(n, k - 1);//每调用一次就会趋于限制条件 }}int main(){ int n; scanf("%d", &n); int k; scanf("%d", &k); int r原创 2022-05-10 19:31:23 · 1014 阅读 · 0 评论 -
【C语言】斐波那契数列
文章目录什么是斐波那契数列?一、递归实现二、非递归实现什么是斐波那契数列?1 1 2 3 5 8 13 21 34…,前两项为1,后面的值等于前两项值相加一、递归实现当n较大时 例如50,就会出现栈溢出的问题。#include<stdio.h>int Fib(int n){ //递归出口 if (n < 3) return 1; else { return Fib(n - 1) + Fib(n - 2); }}int main(){ int原创 2022-05-11 13:46:33 · 942 阅读 · 0 评论 -
【C语言】简单实现三子棋游戏
文章目录思路实现代码的实现game.hgame.ctest.c思路实现首先创建game.h 头文件以及函数的声明game.c 游戏逻辑的代码实现test.c 测试游戏1.实现菜单2.初始化棋盘(数组),将其均初始化为空格3.打印棋盘(由数据和分割线组成:利用for循环)4.检验(以免之后bug更多)5.玩家下棋(考虑用户输入的坐标是否在范围内,并且要考虑棋盘有没有被占用)6.电脑下棋(随机下,所以需要生成随机数)7.判断输赢(玩家下完一次棋或电脑下完一次棋后都要判断一次输赢原创 2022-05-13 14:11:01 · 135 阅读 · 0 评论 -
【C语言】原码,反码,补码
文章目录前言一、什么是原码,反码,补码?前言在我们的生活中,有二进制,十进制,八进制,十六进制,还要七进制(星期),十二进制(月份),二十四进制(时间)。1.二进制:二进制由1,0组成,地址线通电后产生正电和负电,正电表示1,负电表示0,那么二进制如何表示呢?例如整型为4个字节,我们知道1个字节是8个比特位,那么一个整型就是32个比特位,7用二进制表示是00000000000000000000000000000111,因为整数32个比特位,1x2^2+1x2的1次方+1x2的0次方=7,二进制的原创 2022-05-14 11:05:06 · 935 阅读 · 0 评论