C语言
文章平均质量分 58
你代码出BUG了
这个作者很懒,什么都没留下…
展开
-
C语言-对指针的理解(2)
1.数组指针(指向数组的指针)数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element)。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。以int arr[] = { 99, 15, 100, 888, 252 };为例,该数组在内存中的分布如下图所示:定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。以上面的数组为例,下图是 arr 的指向:原创 2022-04-17 20:07:04 · 1044 阅读 · 0 评论 -
C语言-对指针的理解(1)
1.什么是指针数据在内存中的地址称为指针2.什么是指针变量存放了一份数据的地址的变量一个比较高级的变量,一般的变量用来存放值,指针变量用来存放普通变量的地址例子1:假设现在有一个int类型变量a=1,地址为0X62FE0C;还有一个指针变量p,p=0X62FE0C;正好是变量a的地址;那么称指针变量p指向了普通变量a。例子2:假设现在有一个char类型变量b=‘K’,地址为0X62FE03;还有一个指针变量q,q=0X62FE03;正好是变量b的地址;那么称指针变量q原创 2022-04-17 15:09:25 · 1836 阅读 · 0 评论 -
C语言(写一个函数打印乘法表)
#include <stdio.h>void print_table(int n);int main(){ int n; scanf("%d", &n); print_table(n);}//打印乘法口诀表 //1*1=1//2*1=2 2*2=4//3*1=3 3*2=6 3*3=9//4*1=4 4*2=8 4*3=12 4*4=16void print_table(int n){ int i, j; //打印行,有n行 for(i=1; i<原创 2022-04-11 16:01:20 · 1164 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
P48函数的调用一个函数如果没有写返回类型,默认返回int类型练习1.写一个函数可以判断一个数是不是素数之(打印100-200之间的素数)#include<stdio.h> //打印100-200之间所有的素数 int is_prime(int n); //函数声明 int main(){ int i = 0; int count = 0; for(i=100; i<=200; i++)//这里可以优化代码写成i+=2,因为偶数肯定不是素数 { //判断原创 2022-04-09 14:04:23 · 1067 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
P42函数库函数如何学习库函数https://www.cplusplus.com/https://zh.cppreference.com/自定义函数自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己设计的。例子1:写一个函数返回两个整数中的较大值#include <stdio.h>int get_max(int x, int y);//函数声明可以没有变量的名称,但是一定要有变量的类型 int main(){原创 2022-04-08 17:02:58 · 2883 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
练习1.计算n的阶乘#include<stdio.h> int main(){ int i, ret, n; printf("请输入n:>"); scanf("%d", &n); for(i=1; i<=n; i++) { ret *= i; } printf("%d!=%d", n, ret); return 0; }1.1写一个函数计算n的阶乘#include<stdio.h> int ret(int n);原创 2022-04-08 10:30:21 · 1769 阅读 · 0 评论 -
C语言 冒泡排序
#include<stdio.h> int main(){ int n[10] = { 25,35,68,79,21,13,98,7,16,62 };//定义一个大小为10的数组 int i, j,k,temp; for (i = 1; i <= 9; i++)//外层循环是比较的轮数,数组内有10个数,那么就应该比较10-1=9轮 { for (j = 0; j <= 9 - i; j++)//内层循环比较的是当前一轮的比较次数,例如:第一轮比较9-1=8次,第二轮原创 2022-04-06 20:06:00 · 164 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
分支语句和循环语句分支语句(选择结构)ifswitch循环语句(循环结构)forwhiledo whilegoto语句C语言中由一个分号;隔开的就是一条语句C语言中非0就是真P30 分支语句if elseif语句语法结构例子#include <stdio.h>int main(){ int age = 20; if(age>=18) printf("成年\n"); else printf("未成年\n"); printf.原创 2022-03-31 12:28:56 · 2080 阅读 · 0 评论 -
C语言数据类型转换(自动类型转换+强制类型转换)
自动类型转换自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。1)将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如float f = 100;100是int 类型的数据,需要先转换为float类型才能赋值给变量f。再如int n = f;f是float类型的数据,需要先转换为int类型才能赋值给变量n。在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型转换为左边变量的类型,这可能会导致数据失真,或者转载 2022-03-30 12:18:19 · 4377 阅读 · 0 评论 -
C语言 (写一个函数返回较大值)
写一个函数求两个整数中的较大值#include <stdio.h>int max(int x, int y); //函数声明 //函数声明也可以写成以下形式,即函数声明可以省略变量名字但是不可以省略变量类型 //int max(int, int); int main(){ int x, y, result; printf("请输入两个整数x和y:"); scanf("%d %d", &x, &y); result = max(x, y); //函数调用.原创 2022-03-29 10:58:56 · 1688 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
P19 初识操作符1算术操作符+ - * / %移位操作符>>按位右移<<按位右移位操作符&按位与^按位或|按位异或赋值操作符= += -= *= /= &= ^= |= >>= <<=单目操作符(只需要一个操作数)0表示假,!0就是真sizeof(int等类型)时括号不能省略sizeof a(变量)时,因为sizeof是操作符不是函数(括号可以省略但一般不省略)~:按位(二原创 2022-03-22 17:56:04 · 2041 阅读 · 0 评论 -
C语言(B站比特鹏哥)笔记
P9 初始变量的作用域和声明周期局部变量和全局变量当局部变量和全局变量同名的时候,局部变量优先使用变量的作用域和生命周期作用域:限定名字的可用性的代码范围就是这个名字的作用域。局部变量的作用与就是变量所在的局部范围。全局变量的作用域是整个工程P10 什么是常量枚举关键字enumP11 字符串字符串就是一串字符,用英文双引号括起来的一串字符字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容原创 2022-03-22 14:40:05 · 1158 阅读 · 0 评论 -
MOOC数据结构不挂科
第八章 排序考点插入排序(稳定的)时间复杂度O(n2)空间复杂度O(1)选择排序(不稳定的)时间复杂度O(n2)空间复杂度O(1)冒泡(沉底)排序(稳定的)时间复杂度O(n2)空间复杂度O(1)归并排序(稳定的)-2路(划分为两个部分)时间复杂度O(n*log n)空间复杂度O(1)快速排序(不稳定的)在子序列里面再次做快排可用于外部排序时间复杂度O(n*log n)空间复杂度O(1)...原创 2022-03-21 17:09:57 · 490 阅读 · 0 评论 -
C语言函数的调用
函数调用(Function Call),就是使用已经定义好的函数。函数调用的一般形式为:functionName(param1, param2, param3 ...);functionName 是函数名称,param1, param2, param3 …是实参列表。实参可以是常数、变量、表达式等,多个实参用逗号,分隔。在C语言中,函数调用的方式有多种,例如://函数作为表达式中的一项出现在表达式中z = max(x, y);m = n + max(x, y);//函数作为一个单独的语句p转载 2022-03-18 10:49:39 · 20407 阅读 · 3 评论 -
C语言函数的返回值
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。return 语句的一般形式为:return 表达式;或者return (表达式);有没有( )都是正确的,为了简明,一般也不写( )。对C语言返回值的说明没有返回值的函数为空类型,用void表示。例如:void func(){ printf("http://c.biancheng.net\n");}一旦函数的返回值类型被定义为 void,就不能再接收它的值了。例如.转载 2022-03-18 10:29:07 · 3946 阅读 · 0 评论 -
C语言字符串处理函数
字符串连接函数 strcat()strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:strcat(arrayName1, arrayName2);arrayName1、arrayName2 为需要拼接的字符串。strcat() 将把 arrayName2 连接到 arrayName1 后面,并删除原来 arrayName1 最后的结束标志’\0’。这意味着,arrayName1 必须足够长,要能够同时容纳 arrayName1 和 arrayNa原创 2022-03-18 10:05:13 · 631 阅读 · 0 评论 -
C语言的自增自减运算
#include <stdio.h>int main(){ int a = 10, b = 20, c = 30, d = 40; int a1 = ++a; int b1 = b++; int c1 = --c; int d1 = d--; printf("a=%d, a1=%d\n", a, a1); printf("b=%d, b1=%d\n", b, b1); printf("c=%d, c1=%d\n", c, c1);原创 2022-03-17 10:25:36 · 3870 阅读 · 0 评论 -
MOOC数据结构不挂科
第五章 图考点图的基本概念(多对多的逻辑结构)图的存储结构/表现方式顺序存储---->邻接矩阵链式存储---->邻接表邻接矩阵和邻接表的比较邻接矩阵的优点找到两个顶点便可以找出关系,时间复杂度为O(1)邻接矩阵的缺点邻接矩阵无论如何都需要一个二维数组[n][n] ,在各顶点度较少时浪费大量空间邻接表的优点在边较少的时节省许多空间---->适用于稀疏图邻接表的缺点无法直接获取某条边的信息,需要vi链表从头进行顺序存原创 2022-03-03 10:20:06 · 209 阅读 · 0 评论 -
MOOC数据结构不挂科
第四章 树和二叉树考点树和森林二叉树结构二叉树:每个结点的度至高为2(至多有两个孩子),也可以1个或0个,分别成为左孩子和右孩子二叉树的重要性质两种特殊的二叉树满二叉树(Full)完全二叉树(Complete)(允许有空缺,但空缺只能是最后一层的最右边)树/森林转换为二叉树(左孩子又兄弟)二叉树的顺序存储实现二叉树的链式实现二叉树的遍历三种遍历的主要区别在于当前结点的访问的先后伪代码三种遍历顺序中,左子树都先于右子树先序遍历是第一次访问到该节原创 2022-03-01 14:21:29 · 336 阅读 · 0 评论 -
C语言笔记(翁恺老师)--字符串变量
字符串常量char *s = “Hello, worlld!”;s是一个指针,初始化为指向一个字符串常量由于这个常量所在的地方,实际上s是const char *s,但是由于历史原因,编译器不接受const的写法但是试图对s所指的字符串做写入会导致严重的后果#include <stdio.h>int main(void){ int i = 0; char *s = "Hello World"; char *s2 = "Hello World"; //s[0] =原创 2022-01-10 11:12:56 · 655 阅读 · 0 评论 -
C语言笔记(翁恺老师)--字符串与字符数组
字符串字符数组char word[ ]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘!’,};这不是C语言的字符串,因为不能用字符串的方式做计算char word[ ]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘!’, ‘\0’};或者写成char word[ ]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘!’, 0};这样写就可以用字符串的方式进行运算字符串对于C语言来说,字符串是一串以0结尾的一串字符0或’\0’是一样的,但是和’原创 2022-01-10 10:41:06 · 287 阅读 · 0 评论 -
C语言笔记(翁恺老师)--动态内存分配
动态内存分配malloc1.需要引入头文件#include <stdlib.h>2.它的原型参数是size_t,返回的类型是void *void * malloc(size_t size); free()把申请得来的空间还给“系统”申请过的空间,最终都是要换的只能还申请来的空间的首地址释放的不是申请来的空间的首地址(p已发生变化)释放的空间不是malloc得来的写指针的好习惯:一旦定义就初始化为0因为:可能会忘记malloc或者malloc失败,原创 2022-01-10 10:06:11 · 424 阅读 · 0 评论 -
C语言笔记(翁恺老师)--指针运算
指针运算指针的基本运算#include <stdio.h>int main(void){ char a[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9,}; char *p = a; printf("p=%p\n", p); printf("p+1=%p\n", p+1); int b[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9,}; int *q = b; printf("q=%p\n", q); printf("q+1=%p\n原创 2022-01-09 12:07:53 · 454 阅读 · 0 评论 -
C语言笔记(翁恺老师)--指针与数组
指针与数组为什么数组传进函数后的sizeof不对了#include <stdio.h>void minmax(int a[], int len, int *max, int *min);int main(void){ int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,}; int max, min; printf("main sizeof(a)=%lu\n", sizeof(a)); minmax(a, sizeof(a)/s原创 2022-01-09 10:58:36 · 205 阅读 · 0 评论 -
C语言笔记(翁恺老师)--指针的应用场景
指针的应用场景指针的应用场景1—交换主函数里面变量的值#include <stdio.h>void swap(int *pa, int *pb);int main(void){ int a = 1; int b = 2; swap(&a, &b); printf("a=%d, b=%d\n", a, b); return 0; }void swap(int *pa, int *pb){ int t = *pa; *pa = *pb; *p原创 2022-01-09 09:50:39 · 646 阅读 · 0 评论 -
C语言笔记(翁恺老师)--对指针的初步理解
对指针的初步理解#include <stdio.h>void f(int *p);void g(int k); int main(){ int i = 6; printf("&i=%p\n", &i); //调用f函数 f(&i); //调用g函数 g(i); return 0; }void f(int *p){ printf("p=%p\n", p);}void g(int k){ printf("k=%d\n",原创 2022-01-08 11:55:53 · 143 阅读 · 0 评论 -
数据结构MOOC浙大笔记
第三讲 树(上)什么是树查找查找:根据某个给定关键字K,从集合R中找出关键字与K相同的记录静态查找 没有插入和删除操作,只有查找动态查找 除了查找,还可能发生插入和删除静态查找方法1:顺序查找时间复杂度O(n)Tbl是一个一个指针的结构,有两个变量typedef struct LNode *List;struct LNode{ ElementType Element[MAXSIZE]; //数组Element int length; //数组大小lengt原创 2021-12-06 11:41:45 · 238 阅读 · 0 评论 -
数据结构MOOC浙大笔记
第二讲线性结构2.5小白专场一元多项式的加法与乘法运算题意理解设计函数分球求两个一元多项式的乘积与和已知两个多项式(1)3x4-5x2+6x-2(2)5x20-7x4+3x多项式和:5x20-4x4-5x2+9x-2多项式乘积:15x24-25x22+30x21-10x20-21x8+35x6-33x5+14x4-15x3+18x2-6x题意理解求解思路1.多项式的表示2.程序框架3.读多项式4.加法实现5.乘法实现6.多项式输出多项式的表示 数组:编程简原创 2021-12-05 18:29:30 · 1082 阅读 · 0 评论 -
数据结构MOOC浙大笔记
第二讲线性结构2.4应用实例多项式加法运算实现思路实现方法采用不带头结点的单向链表,按照指数递减的顺序排列各项具体的数据结构的结构类型的定义struct PloyNode{ int coef; //系数 int expon; //指数 struct PloyNode *link; //指向下一个结点的指针};typedef struct PloyNode *Ploynomial;Ploynomial P1, P2;设计一个函数,函数参数是传入两个多项式Polyn原创 2021-12-05 11:51:07 · 269 阅读 · 0 评论 -
数据结构MOOC浙大笔记
第二讲线性结构2.3队列队列的基础知识队列:具有一定操作约束的线性表特点: 插入和删除操作:只能在一端插入,而在另一端删除数据插入:入队列数据删除:出队列先进先出数据对象集:一个有0个或多个元素的有穷线性表操作集:长度为MaxSize的堆栈S∈Stack,堆栈元素item∈ElementType1.Queue CreateQueue(int MaxSize):生成长度为MaxSize的空队列2.int IsFullQ(Queue Q, int MaxSize):判断队列Q是原创 2021-12-04 20:18:04 · 320 阅读 · 0 评论 -
数据结构MOOC浙大笔记
第二讲线性结构2.2堆栈堆栈的基础知识堆栈是一种线性结构,也是一个特殊的线性表堆栈的引入例子:计算机如何进行表达式求值5+6/2-34=5+3-34=8-12=-4由两类对象构成运算数运算符不同的运算符优先级不一样堆栈(Stack):具有一定操作约束的线性表特点:只在一端(栈顶)做插入、删除插入数据:入栈删除数据:出栈后入先出数据对象集:一个有0个或多个元素的又穷线性表操作集:长度为MaxSize的堆栈S∈Stack,堆栈元素item∈ElementT原创 2021-12-04 14:18:20 · 287 阅读 · 0 评论 -
数据结构 MOOC浙大笔记
第二讲线性结构2.1线性表及其实现初始化(建立空的顺序表)List MakeEmpty(){ List PtrL; PtrL = (List)malloc(sizeof(struct LNode));//通过malloc函数动态申请结构的空间 PtrL->Last = -1;//Last代表表里最后一个元素 return PtrL; }查找(在Last中查找X的位置)int Find(ELementType X, List PtrL) //PtrL是一个线性表结构的原创 2021-12-03 17:33:36 · 615 阅读 · 0 评论