
C语言
文章平均质量分 54
黄色的拉拉6
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
29.if if if else和if else if else if else的区别
在这种结构中,每个 if 都会被依次检查,只要条件为真,相应的代码块就会被执行。如果第一个 if 的条件为真,则只会执行第一个 if 后面的代码块,而忽略后续的 if 语句。如果所有的 if 条件都为假,则执行 else 后面的代码块。原创 2024-05-28 10:23:56 · 314 阅读 · 0 评论 -
基于Ncurse图形库的贪吃蛇(C语言)
【代码】基于Ncurse图形库的贪吃蛇(C语言)原创 2024-03-15 21:26:40 · 176 阅读 · 0 评论 -
28.指针总结
指针总结原创 2024-03-15 20:12:03 · 146 阅读 · 0 评论 -
27.函数指针数组
函数指针的数组本质是一个数组,它允许你存储多个函数指针,并且可以通过索引来调用这些函数。原创 2024-03-15 16:26:28 · 731 阅读 · 0 评论 -
27.二维数组的地址写法
【代码】27.二维数组的地址写法。原创 2024-03-14 20:43:25 · 271 阅读 · 1 评论 -
26.数组翻转
【代码】26.数组翻转。原创 2024-03-14 18:58:43 · 121 阅读 · 0 评论 -
25.最大公因数 最小公倍数
用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。最小公倍数等于两数之积除以其最大公约数。∵ 319÷377=0(余319)∵ 377÷319=1(余58)∵ 319÷58=5(余29)∵ 58÷29=2(余0)可以写成右边的格式。原创 2024-03-14 11:27:14 · 427 阅读 · 0 评论 -
24.C语言实战项目(链表、指针、结构体的综合运用):学生成绩管理系统
C语言实战项目:学生成绩管理系统学生结构体班级结构体创建学生链表创建班级链表打印出每一个学生的各科成绩、总分、平均分找出总分最高分学生的班级、学号、分数找出总分最低分学生的班级、学号、分数学生结构体struct Student{ int classNum; int xuehao; int Chinese; int maths; int English; float sum; float average; struct Student* next; };班级结构体stru原创 2021-08-11 01:37:18 · 603 阅读 · 0 评论 -
23.动态链表的创建——尾插法
动态链表的创建——尾插法核心代码核心代码struct Test* insertFromBehind(struct Test* phead,struct Test* new){ struct Test* p=phead; if(phead==NULL) { phead=new; return phead } while(p->next!=NULL) { p=p->next; } p->next=new; return phead;}原创 2021-07-31 23:40:30 · 184 阅读 · 1 评论 -
22.动态链表的创建——头插法
动态链表的创建——头插法核心代码核心代码struct Test* insertFromHead(struct Test* phead){ struct Test* new=NULL; while(1) { new=(struct Test*)malloc(sizeof(struct Test)); printf("Please input node:\n"); scanf("%d",&(new->data)) if(phead==NULL) { phe原创 2021-07-28 01:18:57 · 182 阅读 · 0 评论 -
21.链表的更改
链表的更改核心代码示例核心代码struct Test* gaiNode(struct Test* phead,int data,int newdata){ struct Test* p=NULL; p=phead; while(p!=NULL) { if(p->data==data) { p->data=newdata; return phead; } p=p->next; } return phead;}示例将链表中的 8 改成原创 2021-07-27 13:26:43 · 146 阅读 · 0 评论 -
20.链表节点的删除
链表节点的删除核心思路核心代码核心思路核心代码#include <stdio.h>struct Test{ int data; struct Test* next;};void printLink(struct Test* phead){ struct Test* point=phead; while(point!=NULL) { printf("%d ",point->data); point=point->next; } pu原创 2021-07-25 00:12:47 · 102 阅读 · 0 评论 -
19.链表插入——头插法
链表插入——头插法核心思想核心代码头插法示例核心思想当目标节点为第一个节点时当目标节点为非首节点时核心代码当目标节点为第一个节点时if(p->data==data){ new->next=p; return new;}当目标节点为非首节点时while(p->next!=NULL){ if(p->next->data==data) { new->next=p->next; p->next=new;原创 2021-07-19 10:37:08 · 314 阅读 · 0 评论 -
18.链表插入——尾插法
链表插入——尾插法核心思想核心代码注意示例核心思想找到要插到后方的节点 new->next = p->next p->next = new 核心代码void insertBehind(struct Test* phead,int data,struct Test* new){ struct Test* p; p=phead; while(p!=NULL) { if(p->data==data) { new->next=p原创 2021-07-09 17:31:04 · 1578 阅读 · 0 评论 -
17.计算链表节点个数 && 链表的查找
计算链表节点个数 && 链表的查找计算链表节点个数链表的查找示例计算链表节点个数int totalNodeNum(struct Test* phead){ int cnt=0; while(phead!=NULL) { cnt++; phead=phead->next; } return cnt;}链表的查找int searchNode(struct Test* phead,int data){ while(phead!=NULL) { i原创 2021-07-09 10:16:32 · 1012 阅读 · 1 评论 -
16.链表静态添加和动态遍历
链表静态添加和动态遍历链表静态添加链表动态遍历示例链表静态添加直接在链表尾部加struct Text* tn={x,NULL};tn.next=&t(n+1)链表动态遍历void printLink(struct Test* phead){ struct Test* point=phead; while(point!=NULL) { printf("%d ",point->data); point=point->next; } putchar('\原创 2021-06-30 21:38:16 · 160 阅读 · 0 评论 -
15.链表是个好东西!good job!
链表的引入链表定义链表特点单链表的引入示例和数组相同,链表也是一种线性表结构。作为非常基础、非常常用的两种数据结构,数组和链表经常被拿来比较。链表定义链表是一种线性表数据结构。从底层存储结构上看,链表不需要一整块连续的存储空间,而是通过“指针”将一组零散的内存块串联起来使用。链表中的每个内存块被称为链表的“结点”,每个结点除了要存储数据外,还需要记录上(下)一个结点的地址。链表特点插入、删除数据效率高,只需要考虑相邻结点的指针改变,不需要搬移数据,时间复杂度是 O(1)。原创 2021-06-30 11:20:58 · 141 阅读 · 0 评论 -
14.typedef关键字
typedef关键字作用示例typedef和结构体的配合使用一般结构体结构体指针当结构体成员里面定义了一个[函数指针](https://blog.youkuaiyun.com/weixin_46105931/article/details/117904949)时链表作用typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是原创 2021-06-28 10:31:47 · 169 阅读 · 0 评论 -
13.计算结构体的大小(面试)
计算结构体的大小结构体大小的计算必须满足两条原则:一般的结构体计算结构体的大小并不是将变量所占的字节数相加,而是按照一定的对齐规则进行计算结构体的大小的。优点:按照计算机的访问规则,这种对齐规则提升了效率。缺点:浪费空间。结构体大小的计算必须满足两条原则:结构体每一个成员相对于结构体首地址的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)。结构体的总大小必须是所有成员大小的整数倍(数组成员除外,结构体成员除外)。一般的结构体struct s1{ char a; //第原创 2021-06-27 19:06:52 · 301 阅读 · 0 评论 -
12.运用结构体指针、函数综合处理学生成绩
结构体指针函数综合处理学生成绩示例如下:注意:示例如下:#include <stdio.h>#include <stdlib.h>#include <string.h>struct Student{ char name[128]; int score; }; struct Student* init(int len){ int i=0; struct Student* p=NULL; p=(struct Student*)malloc(原创 2021-06-26 20:54:26 · 639 阅读 · 0 评论 -
11.结构体数组
结构体数组结构体数组定义示例注意:结构体数组定义一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。它与前面讲的数值型数组几乎是一模一样的,只不过需要注意的是,结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定义是原创 2021-06-26 14:46:30 · 4979 阅读 · 0 评论 -
10.结构体指针
结构体指针结构体指针的定义结构体指针的定义原创 2021-06-24 13:01:30 · 149 阅读 · 0 评论 -
9.结构体的定义和使用
这里写目录标题结构体的声明结构体的定义结构体的声明关键字struct和结构体名组合成一种类型标识符,其地位如同通常的int、char等类型标识符,其用途就像 int 类型标识符标识整型变量一样可以用来定义结构体变量。定义变量以后,该变量就可以像定义的其他变量一样使用了;成员又称为成员变量,它是结构体所包含的若干个基本的结构类型,必须用“{}”括起来,并且要以分号结束,每个成员应表明具体的数据类型。struct为结构体关键字,Student为结构体的标志,{}内为结构体成员列表,其必须列出其所有成员,以原创 2021-06-23 12:40:51 · 467 阅读 · 0 评论 -
8.自己实现字符串操作API
自己实现字符串操作APIputsputs在这里插入代码片原创 2021-06-22 18:12:16 · 130 阅读 · 0 评论 -
7.1strcmp
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。该函数与 strncmp() 函数类似,不同的是,通过 strncmp() 您可以指定每个字符串用于比较的字符数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。当s1>s2时,返回正数。原创 2024-03-16 17:06:16 · 285 阅读 · 0 评论 -
7.字符串操作常用函数:puts gets strlen memset strcpy strncpy strcat strcmp strchr strstr strtok strlwr strupr
字符串操作常用函数字符串的常用操作函数puts()字符串的常用操作函数puts() //输出字符串gets() //获取字符串strlen() //计算字符串长度memset() //初始化strcpy() strncpy() //字符串的拷贝strcat() //字符串的拼接strcmp() //字符串的比较strchr() strstr() //字符串的查找strtok() //字符串分割strlwr() strupr() //字符串转为小写和字符串原创 2021-06-20 11:21:07 · 956 阅读 · 0 评论 -
6.字符数组 & 字符串 & sizeof和strlen的区别
这里写目录标题字符数组字符数组的定义字符串字符数组字符数组的定义字符数组是指用来存放字符数据的数组。其定义的一般形式为:char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。字符数组的定义可以类比于整型数组,定义整数数组为 int array[3] = {1,2,3}; 那么定义字符数组就为 char string[3] = {’ a ‘,’ s ',‘ f ’},这就是定义字符原创 2021-06-17 23:15:00 · 397 阅读 · 0 评论 -
5.malloc函数 & free函数 & 内存泄漏 & 野指针
malloc函数和free函数malloc函数malloc函数原型malloc头文件返回值malloc函数作用如何定义malloc函数的应用malloc函数malloc函数原型void *malloc(unsigned int size)malloc头文件#include<stdlib.h>返回值如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域原创 2021-06-15 16:42:35 · 856 阅读 · 0 评论 -
4.函数指针和指针函数
函数指针和指针函数函数指针1.如何定义一个函数指针2.如何给函数指针赋值3.如何通过函数指针调用函数示例指针函数1.如何定义一个指针函数示例函数指针函数指针,函数的指针,本质上是一个指针。该指针存放函数的地址。1.如何定义一个函数指针定义一个函数指针如下:int (*padd)(int a,int b);2.如何给函数指针赋值直接用函数名(一般采用第1种方式)padd=add用取地址运算符 &padd=&add第2种方法,取地址运算符&可有可无,因原创 2021-06-14 16:03:46 · 126 阅读 · 0 评论 -
3.指针数组和数组指针
指针数组和数组指针指针数组指针数组原创 2021-06-14 12:41:30 · 209 阅读 · 0 评论 -
2.为什么要用指针,你想过没???
为什么要用指针一,你想过没???为什么要用指针?先睇睇下面这串代码:为什么要用指针?先睇睇下面这串代码:#include <stdio.h>void swap(int a,int b){ int tmp; tmp=a; a=b; b=tmp; } int main(){ int a=10; int b=5; swap(a,b); printf("a=%d\n",a); printf("b=%d\n",b); return 0;} 很多原创 2021-06-13 11:05:25 · 400 阅读 · 0 评论 -
1.指针概念&指针分类&指针与数组
指针变量访问有两种方式&:取地址,取变量名所代表的变量的内存地址*:取内容,取出内存地址中数据的值指针=地址变量访问有两种方式变量名比如:去花店,一直以店名问过去。地址比如:去花店,有地址,直接导航。&:取地址,取变量名所代表的变量的内存地址&运算符,取地址:取出变量名所代表的的变量的地址int a=10;printf("a的地址是%p\n",&a); //&运算符 取地址:取出变量名所代表的的变量的地址 *:取内容,取出内存地址中数原创 2021-06-10 09:25:41 · 167 阅读 · 0 评论