![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 60
ZDDWLIG
这个作者很懒,什么都没留下…
展开
-
C语言qsort()函数的使用(详解)
目录1.参数含义1.首元素地址base2.元素个数num3.元素大小size4.自定义比较函数compar2.使用方式1.头文件2.compar的实现3.整体代码qsort()函数(quick sort)是八大排序算法中的快速排序,能够排序任意数据类型的数组其中包括整形,浮点型,字符串甚至还有自定义的结构体类型。1.参数含义void qsort (void* base, size_t num, size_t size,int (*compar)(const.原创 2021-09-09 22:06:26 · 28943 阅读 · 23 评论 -
C语言指针进阶详解
我们之前已经学习了指针的基础知识:指针基础。现在我们来深入了解一下指针与字符串,数组,和函数相关的操作。目录1.字符指针2.指针数组3.数组指针4.数组传参5.函数指针1.字符指针我们已经知道了数组名在大部分时候表示数组的地址,指针本质上也表示一个地址,那么我们能否用指针来创建一个字符串呢?int main(){ char arr1[] = "abcdef"; char arr2[] = "abcdef"; const char* p1 = "abc...原创 2021-09-08 18:48:57 · 271 阅读 · 6 评论 -
C语言实现简单计算器
1.实现目标我们要实现一个简易计算器,提供可选择功能包括加,减,乘,除,取模和异或。2.实现方法1.回调函数法首先我们需要打印一个计算器菜单供使用者选择计算类型,我们可以自定义简单的菜单函数menu,再利用do while循环加switch语句完成用户选则功能,具体实现方法可以看我的另一篇博客:猜数字游戏。如果是在每一个case里进行打印提示和,输入数字和函数调用会显得非常繁冗,并且不利于新运算类型的添加,我们可以将其改进:将以上数条语句包装,利用一个函数Calc来实现我们将不同的运算函数的原创 2021-09-07 20:56:54 · 4478 阅读 · 13 评论 -
C语言中几个基础的字符串函数(简单易懂)
目录1.获取字符串的长度的strlen2.比较两个字符串的长度的strcmp3.复制一个字符串替代另一个字符串的strcpy4.复制一个字符前n位替代另一个字符串前n位的strncpy5.将一个字符串黏贴至另一个字符串尾部的strcat6.将一个字符串前n位黏贴至另一个字符串尾部的strncat7.将小写字符转换成大写字符的strupr8.将大写字符转换成小写字符的strlwr9.将字符串前n位修改为同种字符的memsetC语言的字符串库函数有一个专用的头文件&...原创 2021-08-31 20:53:39 · 398 阅读 · 4 评论 -
C语言结构体详解
目录1.结构体的定义与产生2.结构体的使用1.结构体的创建2.结构体变量的创建和使用3.结构体与指针4.结构体传参1.结构体的定义与产生结构体是什么?结构体本质上是一种数据类型,但它可以包括若干个“成员”,每个成员的类型可以相同也可以不同,也可以是基本数据类型或者又是一个构造类型。所以C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,也就是结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过原创 2021-08-30 15:36:07 · 333 阅读 · 4 评论 -
C语言函数基本知识总结
1.函数的分类从使用者的观点分为: −C编译系统提供的标准库函数−用户自定义函数;从函数间数据传送的有无分为:−有参函数、无参函数−有返回值函数、无返回值函数;从函数的调用分为:−内部函数和外部函数。2.函数的调用1.传值调用和传址调用我们在某些情况下对变量进行传值调用eg.我们要实现一个比较两个数大小的函数int Max(int x, int y){ if (x > y) return x;//注意返回 else retur原创 2021-08-28 19:34:56 · 2344 阅读 · 8 评论 -
C语言指针基础详解(图文)
目录内存取地址符(&)和解引用操作符(*)指针的运算二级指针和多级指针使用时注意事项内存要了解指针,我们先要了解变量在内存中的分布,在c中分为这几个存储区:1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常.原创 2021-08-27 16:27:06 · 546 阅读 · 1 评论 -
C语言实现自动关机整蛊室友系列
Windows系统自带许多指令,Windows cmd大全,我们可以用它们实现一些便捷的操作 ,以下是自动关机cmd:shutdown系列shutdown -s 关机shutdown -f 强行关闭应用程序shutdown -a 取消关机shutdown -i 显示“远程关机”图形用户界面shutdown -r 关机并重启shutdown -s -t 时间 设置关机倒计时shutdown -r -t时间 设置重新启动倒计时shutdown -h 休眠...原创 2021-08-26 10:38:43 · 1365 阅读 · 3 评论 -
C语言实现三子棋(详解附源码)
1.准备工作我们创建三个分文件:game.c,game.h,text.c。game.c:游戏内部函数的实现game.h:游戏内部函数定义目录1.准备工作2.基本思路1.菜单打印2.棋盘打印3.玩家移动4.判断输赢5.电脑移动6.判断满格3测试结果4.源码text.c:测试入口注意:基本思路里的游戏主体函数在game.c中实现并在game.h中定义,后面不再赘述。2.基本思路1.菜单打印具体的菜单如何打印请看我的博客:猜数字游戏。原创 2021-08-25 11:53:52 · 1126 阅读 · 2 评论 -
C语言二分查找
我们常常需要对数据进行查找,修改,查找数据有许多方法,我们先看看最简单的顺序查找int main(){ int i, k = 0; scanf("%d", &k); int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) { if (arr[i] == k) { printf("找到了,它.原创 2021-08-24 12:15:02 · 13681 阅读 · 5 评论 -
C语言判断素数方法之试除法
素数又称质数,指的是一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数,如2,3,5,7,11,13,17…。接下来让我们以打印区间【a,b】内所有素数为目标来探究一种判断素数最简单的方法:试除法。那么首先让我们生成a到b间的所有数,记为i,用一个简单的for循环就能解决,接下来我们要判断生成的数是不是素数,我们可以从素数最简单的性质出发:除了1和它本身以外,不能被其他正整数整除,(我们当然只需要考虑小于这个数的正整数)那么让我们生成从2到i-1的所有数,记为c也是一个for循.原创 2021-08-23 22:39:55 · 1365 阅读 · 2 评论 -
C语言操作符用法详解
C语言中有许多操作符,以下为各个操作符的说明和用法。目录1.算术操作符2.关系操作符3.逻辑操作符4.位操作符5.赋值操作符6.单目运算符7.逗号运算符8.条件运算符9.下标访问,函数调用,结构体成员访问操作符1.算术操作符(+,-,* /,%)算术操作符是比较简单的操作符,包括加减乘除(+ - * /)取模(%),加减乘和数学中的加减乘除一样,而两个数相除我们得到的是它们的商的整数部分,取模(%)得到的是它们的余数。2.关系操作符(>,&l...原创 2021-08-22 18:37:19 · 1627 阅读 · 3 评论 -
C语言两种方法计算一个数所有位上的数的总和
我们要求一个任意正整数所有位上的数的总和,给出一下两种方法方法一:函数递归法关键在于函数部分,我们取出一个数的每一位数比较困难,但是取出最后一位数非常简单,思路便来了:取出最后一位数再加上剩下的数的所有位上的数的和就是答案。方法二:取余取商法我们一层一层地将数a的每一位脱下来,方法是不断先将a对10取模再对10取商,这里就需要用到循环,那么循环条件呢?我们知道取到a为个位数循环就可以结束了个位数再取商就为0了,所以循环条件为a>0就行了问题便解决了。...原创 2021-08-21 21:13:41 · 8194 阅读 · 0 评论 -
C语言实现冒泡排序
冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。先来看看动态原理图从上图可以看出冒泡排序的关键就是相邻元素的大小比较如果前一个元素比后.原创 2021-08-20 19:29:05 · 936 阅读 · 2 评论 -
C语言实现打印任意时间段内的闰年年份
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,补上时间差的年份为闰年。我们可以利用C语言看看21世纪乃至以后的任意时间段内有哪些闰年。首示一个时间段【a,b】。接下来将这个时段的每个年份依次输入。再一一判断这些年份是不是不是闰年,判断某个年份是不是闰年首先要知道闰年的判断规则:闰年分为普通闰年和世纪闰年。普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。世纪闰年:公历年份是整百数的,必须是4..原创 2021-08-18 22:45:03 · 1339 阅读 · 0 评论 -
利用C语言实现简单的猜数字游戏并探究猜中的最大次数(易懂)
猜数字游戏就是让系统随机生成一个数字,由玩家来猜,之后系统反馈是猜大了还是猜小了,逐一减少默认数字的范围之后,最终锁定目标。让我们先试着来实现这个程序。玩游戏需要菜单,我们自己创建一个菜单函数menu()来显示菜单接下来我们为满足玩家的选择可以使用switch语句接下来我们来设计游戏主体game()首先我们需要电脑给我们生成一个随机数,这里我们需要用到三个函数srand(),time()和rand()其中rand()函数用来生成随机数,单单使用rand()函数来生成随机数是不行的,因..原创 2021-08-15 20:26:56 · 1591 阅读 · 1 评论 -
C语言两种方法求解青蛙跳台阶问题
你或许知道这样一个有趣的问题:一只青蛙可以跳上一级台阶,也可以跳上两级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法。让我们先从数学的角度来看看这个问题,设跳上n级台阶有P(n)种方法,我们知道跳上一级台阶只有一种方法:跳一级。跳上两级台阶有两种方法:先跳一级再跳一级或者直接跳两级。即P(1)=1,P(2)=2。那么跳上三级台阶呢?我们可以从第二级台阶跳一级或者从第一级台阶跳两级,那么P(3)=P(1)+P(2)再来看看四级台阶,与三级台阶相似,我们可以从第三级台阶跳一级或者从第二级台阶跳两级,那么P(原创 2021-08-14 18:00:24 · 399 阅读 · 0 评论 -
C语言之利用函数递归解决汉诺塔问题
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆A,B,C,在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。 操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A...原创 2021-08-05 17:24:54 · 413 阅读 · 2 评论