自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 问答 (1)
  • 收藏
  • 关注

原创 【C语言】atoi函数的使用及模拟实现

atoi (ascii to integer),是把参数 str 所指向的字符串转换为一个整数(int类型)的库函数。有兴趣的朋友可以听我逐句翻译一下cpluscplus.com里的这段解释(要考六级了练一下):将字符串转换为整型解析C-字符串str,将它的所含物解释为一个整数,将这个整数作为int类型的值返回。这个函数首先丢弃必要数量的空白字符(像isspace),直到第一个非空白字符被找到。然后,从这个字符开始,接受一个可选的初始正号或负号,后面跟着尽可能多的十进制数字,并将它们解释为数字值。这个字符串

2024-05-29 10:59:50 362

原创 【C语言】大小端字节序存储

/十六进制数那么,因为数据在内存中的存储以字节为单位,这个十六进制数的四个字节内放的应该就是11 22 33 44(因为1个十六进制位可以转换为4个二进制位,而8个二进制位也就是2个十六进制位刚好为一个字节),可能会有以下两种存放方式:我们把上面这一种叫做大端字节序存储,下面的叫小端字节序存储。可以通俗地理解为,正着存的是大端,倒着存的是小端。用语言描述低位字节存放在高地址处,高位字节存放在低地址处,叫大端字节序存储;低位字节存放在低地址处,高位字节存放在高地址处,叫小端字节序存储。

2024-05-27 11:05:01 1204

原创 【C语言】八进制、十六进制

在我们日常生活中使用的数往往是十进制的,而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制(尤其是2的幂相关的进制,因为这种计数系统比十进制更接近于计算机的二进制系统),所以学习和掌握这些不同进制是非常重要的。本文将对八进制和十六进制(8和16都为2的幂)进行一些讲解。通常情况C语言都假定整型常量是十进制的数,但在表达与计算机相关的值时,八进制和十六进制却十分方便。

2024-05-26 15:03:20 1354 3

原创 【C语言】指针作为参数(传值调用vs传址调用)

在前面讲了那些指针相关的内容后,是时候探讨一下指针有什么作用了。在C语言中,指针有多种各不相同的应用,在本篇文章中,我们探讨一下指针作为函数参数的作用(对比传值与传址两种不同函数调用方式)。传址调用,可以让函数和主调函数之间建立真正的联系,在函数中可以修改主调函数中的变量。所以我们可以知道,当我们只是需要主调函数中的变量值来实现计算,可以采用传值调用。举个例子:而如果需要修改主调函数中的变量的值,就需要传址调用了。到此,本文就结束了,希望大家阅读愉快^_^

2024-05-26 11:00:06 655 3

原创 【C语言】整型提升与char取值范围

C语言中整型算术运算总是至少以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中字符、短整型操作数在使用前被转换为普通整型。而这个过程是悄悄发生的。整型提升的意义:表达式的整型运算要在CPU的相应运算器件内执行,CPU整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使是进行两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU难以直接实现两个8bit字节的直接加法运算。

2024-05-25 19:43:25 339 6

原创 【C语言】指针运算

前面在“走进指针世界”中我已经讲解过指针相关的很多前置知识,其实还有一个很重要的部分就是指针的运算。这篇博客,就让我们一起了解一下指针的运算吧!指针作为变量,是可以进行算术运算的,只不过情况会和整型变量、浮点型变量有所不同,比较特殊。当指针指向一个数组时,C语言是允许对指针进行算术运算的,往往是加法或减法,这给我们提供了一种数组下标以外的对数组进行处理的方式。

2024-05-25 14:04:02 1010 6

原创 【C语言】冒泡排序详解

排序,就是将一组数据按特定的规则调换位置,使这组数据具有某种顺序关系,一般就是递增或递减。在接触C语言不久,我们就会遇到其中一种有名的排序算法——“冒泡排序”,不知道你是否已经掌握了,如果还没有的话,不妨听一下我的讲解版本,或许能有一点启发。记住,理解冒泡排序非常重要的一点是,你要知道这个名字“冒泡”并不是随便乱取的,通过画图你可以看到它的过程真的就像在“冒泡”,可以抓住这个形象的过程去理解。当然冒泡可以向左冒,也可以向右冒。

2024-05-25 11:51:32 1182 2

原创 【C语言】sizeof运算符 讲解与例题

sizeof运算符允许程序获取存储指定类型的值所需要的内存空间。表达式sizeof(类型名)的值是一个无符号整数,代表的是存储属于该类型的值所需要的字节数。如,sizeof(char)的值为1。但其实对于其他许多类型我们无法得到一个确切的值而是取决于具体实现。如在32位的机器上,sizeof(int)的值为4。注意,sizeof是一种特殊的运算符,因为编译器本身就能确定sizeof表达式的值。当然,除了类型之外,sizeof也可以用来求常量、变量和表达式的字节数。

2024-05-24 12:26:45 977

原创 【C语言】strstr函数的使用和模拟

今天给大家带来一个字符串函数,strstr()的使用介绍和模拟实现。模拟实现这个函数,可以帮助我们更深刻地理解这个函数的功能和提高解决字符串相关问题的能力,有兴趣的话就请往下看吧。函数功能:strstr函数的功能是在字符串中找另一个字符串有无出现,或者说就是找一个子字符串。如果能找到,就返回第一次出现的地址,如果找不到就返回空指针。函数原型:或char* strtstr(char* str1,const char* str2);

2024-05-23 16:07:37 1246 1

原创 【C语言】走进指针世界(下卷)

在“走进指针世界(上卷)”中,我们已经说过:什么是指针、内存和地址,指针的使用、声明、初始化,取地址运算符、解引用运算符以及这两者关系,还有指针赋值。在正式使用指针进行各种代码的编写之前,在这篇“走进指针世界(下卷)”里,让我们再了解一些指针的重要的前置知识吧。

2024-05-21 13:48:43 1178

原创 【C语言】求第n个斐波那契数

输入n,输出第n个斐波那契数例如:输入:5 输出:5输入:10, 输出:55输入:2, 输出:1斐波那契数列(Fibonacci sequence),又称黄金分割数列 ,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在学习数学的过程中我们一定遇到过斐波那契数列,但是现在如何用C语言来解决这个问题呢?这里我将给出递归与迭代两种方法尝试。

2024-05-21 11:39:22 1028

原创 【C语言】函数递归

递归(recursion)的概念很简单:如果。

2024-05-20 12:53:17 1266

原创 【C】求Sn=a+aa+aaa+aaaa+aaaaa的前n项之和

首先我们要输入a和n的值、然后我们要生成a、aa、aaa、aaaa、aaaaa……还是假设a为2,n为5,最开始tmp为0,tmp*10+a就为2,其实这个时候我们是得到了a……其实在这一个个要解决的小问题中,最难也是最关键的一部就是,怎么生成a、aa、aaa、aaaa、aaaaa。那么Sn=a+aa+aaa+aaaa+aaaaa的前n项之和的讲解就到此结束了,希望大家发现错误可以向我反馈,共同进步。其实很简单,如果我们已经知道了aaa,假设存储在变量tmp里,那么aaaa的求法就可以是。

2024-05-16 11:02:56 472 1

原创 【C语言】水仙花数

解决这个问题,我们可以拆成生成0~100000的数组,求每个数是几位数(此时假设位数为n),求每个位上的数字的n次方之和(还可以进一步细分为求每位的n次方、求和两个动作),判断是否是水仙花数、打印这几件事。%计算的是除之后的余数,%10就是除10后的余数,因为是十进制,所以剩在最低位上的就是无法达到10从而进位的数,所以也就是%10的余数。既然我们要拿到每一位,并且要求它们的count次方的和,这时我们就创建一个变量sum,用来每轮循环存放这一位n次方的值,随着循环进行累加。其实我们的“武器”还是循环。

2024-05-15 11:28:36 1044 2

原创 【C语言】矩阵转置

矩阵转置是将原矩阵的行与列进行互换所得到的新矩阵。具体来说,给定一个m×n阶矩阵A,其转置矩阵AT是一个n×m阶矩阵,满足AT[i][j] = A[j][i],其中1≤i≤n,1≤j≤m。即转置矩阵的第i行第j列元素等于原矩阵的第j行第i列元素。求转置矩阵的方法相对简单,只需要创建一个新的空矩阵AT,其行数与原矩阵A的列数相同,列数与原矩阵A的行数相同,然后遍历原矩阵A的每一个元素A[i][j],将其赋值给新矩阵AT的对应位置AT[j][i]即可。

2024-05-14 11:04:08 982

原创 【C语言】走进指针世界(上卷)

本篇博客适合指针小白和对指针理解总是模棱两可的朋友。是关于指针最基本和本质的内容。分为上下两卷,该为上卷。指针(pointer),是C语言中的一个重要概念,是C语言学习过程中比较困难的部分。对于那些未学过指针的朋友而言,看到这里,恭喜你接触到指针,以下内容全是满满的干货,无微不至。对于已学习过指针的朋友,不妨再一起回顾一下指针理解里重要的这些内容。本篇博客在 C/C++语言中,指针一般被认为是指针变量,意思是当我们简单地说“指针”这两个字时,我们真正在讨论的东西其实是指针变量。本质上,指针是一个。

2024-05-12 21:15:59 957 6

原创 【C语言】打印图案问题(下卷)

哎呀,看来上卷的打印金字塔和菱形都满足不了你啊,那我只好再拿出两题考考你了。相信在看完这两题的解说后,你对打印图案的理解一定能更上一层楼。话不多说,继续闯关吧!看到这里,恭喜你已经斩获了四道打印图案的题目啦,感觉如何?其实打印图案类的题目就是要紧紧抓住规律,而且是要有用的规律,一般是与循环控制变量有关的规律。然后记得善用逻辑运算符,逻辑或'||'来简洁负责打印星号的代码。希望大家发现文章的错误可以及时向我反馈,共同进步,吃透打印图案问题!

2024-05-09 16:02:00 827 1

原创 【C语言】打印图案问题(上卷)

打印图案的问题,刚拿到时,看着题目里的图案,总觉得超有感觉,许多不同的灵感一瞬间涌入大脑,一顿操作猛如虎,最终发现哪个思路好像都有点问题,抓耳挠腮硬是写不出来,甚至都想对着图案暴力打好了直接输出了。这是不是你?反正,这就是我。不甘心就这样输给这类题目,我决定总结一下这类打印图案的问题。关于打印图案的题目我将循序渐进给出四道例题(对于初学C语言的我们来说都不太容易)的讲解,其中前两题由于相似度很高且难度刚好由低到高,写为打印图案问题(上卷),后两题写成打印图案问题(下卷),可以当作闯关。

2024-05-07 11:02:04 1176

原创 【C语言】最大公约数

辗转相除的过程就是假设a、b两个数求最大公约数,先将a除以b,得到余数c,然后下一轮中,把b的值赋给a,c的值赋给b,仍然进行a除以b(实际上是上一轮的除数除以上一轮的余数),循环这个过程直到余数为0时停下,此时的除数b就为要求的两个数的最大公约数。a称为b的倍数,b称为a的约数。可以看到,就算18作为被除数,24作为除数,在经历一次重新赋值后,恰好转换成了24作为被除数,18作为除数,然后就正常地进行下去。比如,我给出20和40,它们的公约数有1、2、4、5、10、20,它们的最大公约数就是20。

2024-05-06 11:00:40 442 1

原创 【C语言】打印乘法口诀表

致力用通俗易懂的语言讲清楚怎么打印乘法口诀表……

2024-05-05 10:45:37 431 5

原创 【C语言】猜数字游戏

小时候我们或许都和小伙伴玩过一个游戏,一个人心里默念一个数字,让另一个人来猜这个数字是几,猜完后告诉他猜大了、猜小了或者猜对了。那么现在我们可以用C语言来模拟这个游戏,找回一点童年乐趣。

2024-05-04 14:04:24 963 2

原创 【C语言】二分查找算法

二分查找也叫折半查找(Binary Search),是一种效率较高的查找方法。在一个有序(升序或降序)的数组中查找指定的数字n(想要找到它在什么位置,即它的下标是几),很容易想到的办法是去遍历数组,但这种方法往往更加低效。举个例子,现在我心中默念一个1到10之间的数字,让你猜是几,比起1、2、3……10一个个去猜,更高效的办法是先猜5,然后我告诉你大了或者小了,你就只用从剩下的一半中猜就行了。二分查找的本质。

2024-05-03 15:09:12 724 1

原创 【C语言】喝汽水问题

这个题目容易掉进的一个陷阱是简单地以为20元喝完汽水后得到20个空瓶子,然后换10瓶汽水,总共喝30瓶汽水。错误的点在于,通过空瓶换得的汽水喝完后也会产生新的空瓶,可以再拿去兑换汽水。这个思路是一次性先喝完20瓶然后再去分析得到的空瓶,兑换然后再喝、再兑换。所以循环是建立在total和empty已经有一定数量的情况下,去循环一次性喝完之后的部分。可以拆分三个变量去方便理解,money代表手头有的钱,drink代表喝的汽水数,empty代表空瓶的数量。(偷换了一下概念,不过可以实现,请往下看。

2024-04-29 12:17:01 170 2

原创 【C语言】扫雷游戏的实现

如果我们将提示雷个数的信息直接存入这个存放雷的二维数组里时,如果是2及以上的数我们能确定这只是提示信息而不是雷,但如果周围有一个雷从而提示信息就是1时,就会产生歧义,这个1究竟是雷还是指周围有一个雷?在清楚扫雷游戏实现的大致逻辑后,内部还有很多细节需要严谨处理,这里给出代码参考,并给出详细的注释进行解释:(注意,拆分的三个文件,test.c文件是主文件,但是保持简洁,将实现扫雷的各个具体环节的函数的定义放在game.c,并将所有声明和宏定义放入game.h)然后,在统计周围八个位置的雷个数时,我们还会。

2024-04-20 18:30:17 895 3

原创 【C语言】循环语句的细节

for在使用的时候着重突出了循环控制变量i、j等的存在感,而while的这种感觉较弱,常见的有while(1)、while(flag)、while(count)等。比如打印1~100的正整数值,给数组arr[10]赋值,前者重复的动作是打印,后者重复的动作就是赋值。构成一个循环语句,我们需要引入一个额外的东西,即控制循环的变量,往往是i或者j等,它的作用是很灵活的。它首先一定有的一个作用就是引起循环的发生(或者说控制循环),就像循环的骨架,f(i=0;i++),其后的花括号内的内容才是真正重复要做的事。

2024-04-10 12:31:44 242 1

原创 刷题时想到的

第一次注册牛客网,刷了十道题,在刷题的过程中,曾经在书上见过的类似的实例在脑海中涌现,然后零散的记忆组织成解决眼前这个题的方案。我恍然大悟一个很简单但不常亲身体会到的道理:没有什么人可以在大脑中生成你从未了解过的东西,你的灵感来源是你过去的经验积累而来的。总结得到的经验就是,多看书,多看实例,而且要思考别人为什么这么写代码,然后就能成为自己的东西,在未来解决问题的时候用上。即使是我悟到的这个道理,在某种程度上也来自于我读过的《刻意练习》这本书。

2024-04-02 15:05:30 315 1

原创 程序人生?

人的内心往往是纠结的,常常是两种几乎完全对立的思想在拉扯:我一边觉得非计算机专业就算学了也很难真正走上这条路的,一边又觉得就算是计算机专业的,大学本来就主要靠自学,学校可能也教不了他们很多。高考填志愿,本来可以读中上流211的,看到国美有非美术生可报专业头脑一热就报了,学校挺好,老师同学参差不齐,学不到东西,也算是误入歧途了。不甘心,想改变人生轨迹,大二在图书馆看到编程的书,随便挑了一本(那时还不懂计算机有哪些语言),是C语言的,一个人读书算不上简单,但那本书读着读着居然也快读完了,蛮神奇的。

2024-03-29 11:18:04 230 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除