C语言基础详解
文章平均质量分 63
博主结合自身C语言学习经历,然后呕心沥血归纳总结的C语言知识点,通过本专栏,你将学会如何编写高效、可靠的C语言代码。我们将通过实例和练习来帮助你巩固所学知识,并提供实用的编程技巧和建议。无论你是想要学习C语言的基础知识,还是希望深入了解C语言的高级特性,这个专栏都将为你提供全面而深入的学习资料。
爱学C语音的猫
在校大学生,完成作业发布作品
展开
-
C语言基础:自定义类型
这些都是内置类型------C语言自己的数据类型复杂对象就不能只有单一的类型,需要我们自定义一些复杂类型——也叫自定义类型比如结构体 枚举 联合体用来描述书 和 人。原创 2024-06-09 21:31:32 · 794 阅读 · 0 评论 -
C语言基础:字符串函数使用与剖析
这个函数什么意思呢?比如一个字符串为 zpw@bitedu.tech我们要拆分为 zpw bitedu tech 三个字符串,把@和.作为分隔符使用这个函数,就会把@改为\0,同时把z的地址返回来调用一次函数只能切割一次,strtok有某种记忆的功能,他会记住把分隔符变成\0的位置。原创 2024-06-06 16:25:43 · 385 阅读 · 0 评论 -
C语言基础:字符串函数使用和剖析(2)
常量指针即是指向常量的指针,指针的值可以改变,指针所指的地址中的内容为常量不能改变,从第一个字符开始比,第一个字符分出大小的话就不用再往下比了,第一个字符相等,再比较第二个字符。字符串是怎么比较的:是比字符串的多少吗?当然不是,比的是字符的ASCII码,此时出现了两个def,第一个位置的d地址被返回,从而打印defabdef。没有const不行,常量字符串是无法更改的,此时p1,p2为常量指针。num的单位是字节,size_t是无符号整形。模拟实现这个函数自己可以做一做。NUL或Null-'\0'原创 2024-06-05 14:22:27 · 334 阅读 · 0 评论 -
C语言基础:字符函数和字符串函数
统计\0之前的字符的个数: 所以答案是6.注意事项字符串以'\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。注意函数的返回值为size_t,是无符号的( 易错 )=unsigned intint main()elsereturn 0;打印的是str2>str1= '\0')count++;str++;原创 2024-06-02 16:06:17 · 606 阅读 · 0 评论 -
C语言基础:头歌编程作业
为了完成本关任务,需要定义一个指针变量指向任意一个数组元素,擂主是指针变量指向的数组元素,遍历数组,将每个数组元素依次和指针变量指向的数组元素比较。如果大就将这个数组元素的地址赋给指针变量,否则指针变量的值不变,直至最后一个数组元素,即可得出指针变量指向的数组元素为最大。求最大值的擂台赛算法思想:从数组中任意找一个数组元素作为擂主,默认是最大值,遍历数组,将每个数组元素依次和擂主比较,如果比擂主大就将这个数组元素的值赋给擂主,否则就离开,直至最后一个数组元素,即可得出擂主就是最大值。原创 2024-06-02 15:29:08 · 496 阅读 · 0 评论 -
c语言基础:指针作业题
scanf函数读取字符串时遇到空格是不会读取的,所以输入的字符串hello world,只会对hello进行逆序。assert函数的作用是判断指针不为空指针,条件成立往下执行,不成立显示报错。想要有空格的换一个函数,用gets函数(读取一行)可以读取空格。写一个函数,判断一个字符串是否为另一个字符串旋转之后的字符串。给定s1=AABCD s2=BCDAA, 返回1;给定s1=abcd, s2=ACBD,返回0;例如:是旋转得来的,返回1,不是,返回0.实现一个函数,可以左旋字符串中的k个字符。原创 2024-05-31 11:22:07 · 369 阅读 · 0 评论 -
c语言基础:指针笔试题
第二个分析结果是错的,错误原因很明显,数组名是首元素地址,但是二维数组的首元素地址并不是第一行第一列元素的地址,而是第一行元素的地址,加1即跳到第二行,得到第二行元素的地址,解引用即得到第二行元素,得到第二行数组名,即第二行的首元素地址,指向6,减一,指向5,cpp[-2]=*(cpp-2) 我的疑问:*[]加在一起可以抵消掉吗?第一个分析结果是对的,ptr1的指向确实是对的,强制类型转换的原因也在于因为二维数组的指针类型是数组指针,强制转换为int 型的指针,所以加一减一即跳过有4个字节大小。原创 2024-05-30 00:00:00 · 238 阅读 · 0 评论 -
c语言基础:数组的运用以及在内存中的地址的理解
为啥错了当数组传参的时候,实际上只是把数组的首元素的地址传递过去了。所以接收的是指针,指针的大小是4个字节,4/4=1,sz大小是1.我们指针数组名就是首元素地址,毫无疑问,传参的时候arr传过去就是首元素地址,只是为了便于理解,我们说把数组传过去了,数组传过去了,我们拿一个数组接收,所以我们的形参写的是int arr[];但是,实际上我们写的规范一点应该写一个指针去接收,正确的冒泡排序:(在主函数算出sz,再传给形参。原创 2024-05-27 14:32:46 · 789 阅读 · 0 评论 -
C语言基础:数组
数组是一组相同类型元素的集合。//type_t 是指数组的元素类型//const_n 是一个常量表达式,用来指定数组的大小常见错误:因为const_n 是一个常量表达式,不能是变量。原创 2024-05-26 15:40:11 · 681 阅读 · 0 评论 -
C语言基础:数组在内存存储的大小(sizeof,strlen求大小)
会报错, &arr-数组的地址,按理说存在数组指针里面 char(*p)[7]=&arr;元素类型为char(*)[7];而strlen接收的类型是 const char *,有所冲突。16 第二行的数组名,计算的是第二行的数组大小(错误)strlen 求字符串长度的函数,遇到\0结束。原创 2024-05-20 16:32:36 · 170 阅读 · 0 评论 -
C语言基础:指针详解
实现计算器:下面是一般写法:(即通过各种各样的函数来一一实现)缺点是很明显的:比如增加计算器功能,就得多写几个函数,同时在选择结构上多加了很多行代码。下面是通过函数指针数组来实现 ,什么是函数指针数组:肯定是数组:数组的元素是函数指针,记住:&add和add都表示函数的地址,没有任何区别。原创 2024-05-19 21:51:46 · 825 阅读 · 0 评论 -
C语言详解:数组指针
解释一下,arr是指针数组,五个元素是指针,&arr之后,拿到的是数组的地址,所以要用指针数组,但是数组的类型是什么呢?是char*,为啥呢,比如int arr【5】,arr 5个元素是int 型,而我arr的元素是char*的类型。arr是数组名,即首元素地址,我们知道,二维数组可以看成一维数组,所以二维数组的首元素地址不是第一行第一列的元素的地址,而是第一行元素的地址。parr3首先与【】结合,说明是数组,数组的类型是int(*)【5】,就是我们本节学的指针数组,其实表示方式还是有很多种的,原创 2024-05-15 15:38:43 · 417 阅读 · 0 评论 -
C语言基础:初识指针(二)
当你不知道指针变量初始化什么时,可以初始化为空指针我们看NULL的定义,可以看出NULL是0被强制转化为Void* 类型的0;实质还是个0;如何避免野指针:1.指针初始化2.小心指针越界3.指针指向空间释放即使置NULL4.避免返回局部变量的地址5.指针使用之前检查有效性。原创 2024-04-26 11:15:00 · 332 阅读 · 0 评论 -
C语言学习:初识指针(一)
与其给出指针的定义,看完让人模糊不清,不如给出下面几个通俗易懂的要点。指针理解的2个要点:1.指针是内存中一个最小单元的编号,也就是地址2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量这两句话引出新的概念,什么是内存呢内存是什么?内存是用于暂时存储CPU中的运算数据,以及与硬盘等外部存储设备交换的数据。可以比作一个房间,用来存储数据的载体。下图所示,我们把内存分成一个个小格子之后,我们给它一个个编号,这个编号就是一个地址,那我们会想两个问题编号是如何产生的呢?原创 2024-04-21 20:06:46 · 1000 阅读 · 0 评论 -
C语言项目:数组与函数实践:扫雷游戏
1.如果位置不是雷,就显示周围有几个雷2.如果位置是雷,就炸死结束游戏3.把除10个雷之外的所有非雷都找出来,排雷成功,游戏结束。原创 2024-03-17 13:00:48 · 657 阅读 · 0 评论 -
C语言基础:头歌练习数组练习
题目分析:a字符串中最小的字符是A(ASCII码表对应的数字大小),b字符串最大的字符是y。题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。题目描述:输入一个字符串,输出反序后的字符串。题目描述:输入两个字符串。串中的最大字符插入到。原创 2024-02-01 23:25:34 · 876 阅读 · 0 评论 -
C语言基础:写一个函数,输入一行字符,将此字符串最长的单词输出
写一个函数,输入一行字符,将此字符串最长的单词输出原创 2024-01-27 23:32:24 · 939 阅读 · 0 评论 -
C语言基础:头歌作业题(字符串统计)
输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。原创 2024-01-26 16:31:52 · 1109 阅读 · 3 评论 -
【头歌】编写程序:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入“BEIJING“, “123“, 3,则输出:“BEI123JING“
第一行和第二行分别输入两个字符串s1和s2,第三行输入插入位置f每个字符串的长度不超过100个字符。输出一行插入后的字符串。原创 2024-01-24 21:05:02 · 610 阅读 · 0 评论 -
C语言基础:杨辉三角
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国数学史上的一个伟大成就。int main()//要先初始化int i = 0;//行数int j = 0;//列数for (i = 0;i < N;i++)//每行首元素是 1for (j = 0;j原创 2024-01-24 02:46:21 · 2663 阅读 · 0 评论 -
C语言基础:数组相关练习题(两道)
现在顺序 1 4 5 6 8。不用strcpy函数。复制时‘\0’也要复制过去。例如:原来顺序 8 6 5 4 1。原创 2024-01-21 22:47:29 · 440 阅读 · 1 评论 -
C语言基础:函数相关的练习题
注意事项:输入字符串时,中间不能出现空格,比如count try,不然他会认为你输入的字符是count,这与scanf函数的结束标志有关。错误输入如下。count输入后,你再输入空格,scanf会认为你输入完了,你输入后面的,系统会默认是后面你要输入的,就会出现上一个图所示,当然,具体解决方案是可以使用gets这个函数,原创 2024-01-21 15:11:29 · 493 阅读 · 1 评论 -
C语言基础:函数的嵌套调用与链式访问
嵌套调用就是函数之间的互相调用,每个函数就像一个乐高零件,正是因为多个乐高的零件互相无缝的配合才能搭建出精美的乐高玩具,也真是因为函数之间有效的互相调用,最后写出相对大型的程序。原创 2024-01-19 14:24:10 · 404 阅读 · 1 评论 -
【C语言基础】:深入学习C语言的函数
自定义函数和库函数一样,有函数名返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间函数的组成:statement;//函数体ret_type 返回类型fun_name 函数名para1 函数参数是用来表示函数计算结果的类型,函数可能会也可能不会有从该函数返回值。如果您不必从函数返回任何值,则将void用作返回类型,表示什么都不返回。是为了方便使用函数;就像人的名字一样,有了名字方便称呼,函数有了名字方便调用,所以函数名尽量根据函数的功能起有意义的名字。原创 2024-01-19 00:41:56 · 1494 阅读 · 1 评论 -
数组的运用:例题1:用筛选法找素数
j=4, a[4]被赋值为0后,i=4时,j从5开始,此时a[i]=0;系统不会报错,系统一直进行死循环,所以我们对不是素数的数不用再进行判断了。可能有人会迷惑a[i]为啥也不等于0;因为j永远比i大,i=2时,j=4时,a[4]=0了,如果继续进行i++,此时a[i]=0,a[ j ]也不能等于0;i=2时,4,被筛选出去了,a[4]==0了,i=3时,j=4,就不用再筛选一遍了,= 0 && a[j]!(3):检查p是否小于根号n,如果是,继续执行第二步;(4):剩下的数就是素数,打印出来。原创 2024-01-16 22:30:10 · 432 阅读 · 1 评论 -
C语言基础:二维数组
前面我们学习了一维数组,数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这个时候就是二维数组,arr[0]第一行数组名,arr[1]第二行数组名,arr[2]第三行数组名,对后面直针的理解非常重要。arr5只有三个元素,第一行都放不满,所以系统会给他一行。当然,换种方式也可以先定义列,在来定义行,效果是一样的。系统会跳过你输入的空格的,如果二维数组作为数组元素的数组被称为三维数组。效果如下:(没有赋值的系统默认为0)常量值1代表行,常量值2代表列。arr6超过5个,系统给他两行。原创 2024-01-14 20:52:21 · 366 阅读 · 1 评论 -
C语言基础:一维数组
下标的,下标从0开始,假设数组有n个元素,最后一个数组下标是n-1,下标就相当于数组元素的编号,如下。地址都是增加4,因为int占的内存是4个字节,4个内存存一个元素,data2前面三个赋值为1,2,3;其他的被系统默认赋值为0;存放在数值的值被称为数组的元素,数组在创建时可以指定。data1第一个元素赋值为0;其他的被系统默认为0;我们直接访问下标就可以访问这个元素, [ ]也叫。打印数组所有元素1~10。原创 2024-01-13 03:22:13 · 361 阅读 · 1 评论 -
C语言基础:输入一位整数,判断它是几位数
注意点:n=0时,它是一位数,而for循环和while循环循环条件为n!例如 输入1234,输出4。输入一位数,判断它是几位数。do--while循环实现。原创 2024-01-07 23:46:26 · 1109 阅读 · 0 评论 -
C语言基础:判断一个数是不是素数
C语言基础+编程思维原创 2024-01-10 00:00:34 · 424 阅读 · 0 评论 -
C语言基础:goto语句+猜数字游戏的设计思路
这时候摆在我们的第三个问题,循环的条件是啥,输入1,玩了之后菜单会提示我们是否继续玩,要接着循环,输入不是1或0,要你重新输入,也要循环,输入0,退出游戏,就需要循环了,所以循环的条件可以是我们输入的值。time函数会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒,返回的类型是time_t类型的,time_t类型本质就是32位或64位的整形类型。2.玩家猜数字,猜数字过程中,根据猜测数字的大小给出大了或小了的反馈,直到猜对,游戏结束。原创 2024-01-11 20:38:41 · 912 阅读 · 0 评论 -
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
头歌习题解答C语言原创 2023-03-10 22:14:35 · 3408 阅读 · 1 评论