自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 python的安装

这里的path是指系统路径,即将python.exe文件添加到系 统路径下,此时在系统自带的cmd窗口中可直接执行python,进行编译。:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple(永久切换清华镜像站):关于需要的安装库的命令,可以去这里找https://pypi.org/,需要什么就搜相关词。[注意]要更新,请运行:python。命令安装,多个库可以一个一个安装也可以。

2023-08-22 12:31:05 142

原创 二叉树线索化

以中序二叉树为例,中序二叉树声明节点的结构体如下中序线索二叉树需要两类指针,指向左孩子、右孩子的指针,指向前驱和后继的指针,我们需要区分开它们,所以我们需要一个这样的结构体:1)如果ltag=0;则lchild为指针,指向左孩子,如果ltag=1,则lchild为线索,指向节点的直接前驱。2)如果rtag=0;则rchild为指针,指向右孩子,如果rtag=1,则rchild为线索,指向节点的直接后继。思考:显然,我们需要寻找节点的空指针,lchild的指向前驱,rchild指向后继。显然,我们需要在

2022-07-03 16:44:55 303 1

原创 递归算法——求n个不同字符的所有全排序列

**算法描述:**设str是含有n个不同字符的字符串,perm(str,k-1,n)为str[0] ~ str[k-1]的所有的字符的全排序列,perm(str,k,n)为str[0] ~ str[k]的全排列,对于str[k]位置,可以取str[0] ~ str[k]范围内的任何值,再组合perm(str,k-1,n)得到的全排列则得perm(str,k,n)。以上是书本上的描述,下面给它稍微解释一下。算法的核心思想是,遍历n个不同字符的序列每次挑出不同的元素保持在末尾不动,计算其他的全排列。这样依次

2022-04-30 21:07:03 1274 1

原创 编写链表的产生的问题

问题描述:结构体定义结构体指针变量"L"即一个结点,“L”指向第一个结点首地址。定义一个创建函数来创 建链表。而使用“L”时,需要将“L”初始化,即将“L”传入创建函数之前需要初始化“L”,或者直接调用 “L”的地址即“&L”。下方采用的就是第二种方式,功能函数采用“双重指针”(ListL或struct LinkList**L)定义形参来接收传入函数的“L”的地址,然后再进行其他操作。这种方式避免了“L”的初始化。(typedef struct LinkList List)#include&

2022-02-04 20:18:31 655

原创 结构体里不能开辟空间2021-08-12

代码如下://1)一个景区根据游人的年龄收取不同价格的门票。//2)请编写游人结构体(Visitor),根据年龄段决定能够购买的门票价格并输出//3)规则:年龄>18,门票为20元,其他情况免费//4)可以循环从控制台输入名字和年龄,打印门票收费情况,如果名字输入 n,则退出程序#include<stdio.h>#include<string.h>#include<stdlib.h>struct Visitor{ char name[20]

2021-08-12 09:54:54 169

原创 动态内存分配2021-08-11

动态内存分配C程序中,不同数据在内存中分配说明:1)全局变量——内存中的静态存储区2)非静态的局部变量——内存中的动态存储区——stack 栈3)临时使用的数据——建立动态内存分配区域,需要时随时开辟,不需要时及时释放——heap 堆4)根据需要向系统申请所需要大小的空间,由于未在声明部分定义其为变量或者数组,不能通过变量名或者数据名来引用这些数据,只能通过指针来引用内存动态分配的相关函数1)头文件 #include<stdlib.h> 声明了四个关于内存动态分配的函数2)

2021-08-11 10:02:34 253

原创 指针综合2021-8-11

指针数组基本介绍要让数组的元素 指向 int 或其他数据类型的地址(指针)。可以使用指针数组指针数组的定义数据类型 *指针数组名[大小]1)比如:int *ptr[3];2)ptr声明为一个指针数组3)由 3 个整数指针组成。因此,ptr中的每个元素,都是一个指向 int 值的指针void main(){ char* pStr = "hello word!";//定义一个字符指针指向一个字符串 char* books[] = {//定义一个指向字符的指针数组来存储字符串列表 "h

2021-08-11 08:10:34 109

原创 数组的退化问题

问题描述定义一个函数,以数组为形参,函数体内部求出数组大小如下:结果:无论定义多大的数组,最终函数体内输出的数组大小始终为**4*#include<stdio.h>void fun(char arr[]){//以数组为形参,一维数组作形参无需确定大小 printf("%d\n",sizeof(arr));//输出传递过来的数组的大小}void main(){ char arr[9]; printf("%d\n",sizeof(arr));//输出实参数组的大小 fun(ar

2021-08-06 21:57:27 423

原创 二分查找法

//通过二分查找法在一个已经排好序的数组查找值#include<stdio.h>//定义二分查找的函数(递归函数)//基本思路://1.将被查值与数组中间值相比较//2.被查值>中间值,在数组右边继续重复上述操作;被查值<中间值,在数组左边继续重复上述操作//3.直到被查值与中间值相等,输出中间值int two(int arr[],int left,int right,int scan){//参数分别为,数组、最左下标值、最右下标值(用于求出中间下标从而求出中间值)、被

2021-08-06 10:42:24 73

原创 C语言宏定义

C语言宏定义基本介绍1)#define 叫做宏定义命令它也是C语言预处理命令的一种,所谓宏定义,就是用一个标识符来表示一个字符串。如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。2)#define N 100 就是宏定义,N为宏名,100是宏的内容(宏所表示的字符串)。在预处理阶段,对程序中所有出现的“宏名”,预处理器都会用宏定义中的字符串区代换,这称为“宏替换”或“宏展开”。宏定义是由源程序中的宏定义命令#define完成的,宏替换是由预处理程序完成的。宏定义的形式#defin

2021-08-03 11:50:28 51428 10

原创 金字塔与菱形

1.金字塔#include<stdio.h>void main(){ int a; printf("请输入金子塔层数:"); scanf("%d",&a);//1.最外层的for循环针对金字塔的层数,i即层数、a为金字塔最低层 for(int i=1;i<=a;i++){//2.循环体内部第一套for循环针对' '(空格)的输出。// 2*a-1为金字塔最低一层的'*'个数,2*i-1为第i层'*'个数,其差的1/2为图形每行左边的空格数。 for(int k

2021-07-05 20:00:22 308

原创 scanf函数中的格式字符

scanf函数中用到的格式字符格式字符说明d,i输入有符号十进制整数u输入无符号十进制整数o输入无符号八进制整数x,X输入无符号十六进制整数(大小写作用相同)c输入单个字符s输入字符串将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志‘\0’作为其最后一个字符f输入实数,可以用小数形式或指数形式输入e,E,g,G与 f 作用相同,e 与 f、g可以互相替换(大小写作用相同)l输

2021-07-04 21:52:39 2922

原创 switch分支结构细节

switch细节讨论1)switch 语句中的 expression 是一个常量表达式,必须是一个整型(char、short、int、long等)或枚举类型2)case 子句中的值必须是常量,而不能是变量3)default 子句是可选的,当没有匹配的 case 时,执行 default4)break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;5)如果没有写 break,会执行下一个 case 语句块,直到遇到 break 或者执行到 switch 结尾,这个现象称为穿

2021-07-04 20:53:36 203

原创 位运算相关

位运算:位运算有如下几种运算符:运算方式:在计算机内部运算均是以补码的形式进行运算的。步骤:将十进制数化为二进制远原码、再将原码通过反码求补码、以补码进行位运算。示例:~2、2&-3、-1>>2~2=?2&-3=?-1>>2=?(图片来自尚硅谷)...

2021-07-03 21:40:44 62

原创 输出函数——printf注意事项

域宽:可以在格式声明中指定输出数据的域宽(所占的列数),如用 “%5d”,指定输出数据所占 5 列,输出的数据显示在此 5 列区域的左侧。如:printf("%5d\n%5d\n",12,-345);输出结果为:12 ( 12 前面有 3 个空格)-345 (-345前面有1个空格)其他任何输出格式均可以指定域宽,如%c、%f、%s。输出字符时:一个整数,如果在 0-127 范围中,也可以用 “%c” 使之按字符形式输出,在输出前,系统会将该整数作为 ASCLL 码转换成相应的字符

2021-07-03 21:20:45 1870

原创 数据类型的大小(int型为例)

上图int型能表示的范围是-2147483648(-215) – 2147483647(215 -1)int型占系统分配的4个字节(不同系统不一样)8个位,最高一位为符号位。10000000时表示-215 、01111111时表示215 - 1unsigned int 为无符号整型范围为0 – 216 - 1,全0为0,全1为 216 - 1...

2021-06-27 22:11:48 2995

原创 浮点类型(C)

上图Turbo C 对long double 型分配16个字节如上图所示,而Vsiual C++则对long double 型和 double 型一样处理,分配8个字节,上图没有给出,有效数字应为15-16。精确一点的范围:1.210-38 – 3.41038、2.310-308 – 1.710308 、3.410-4932 – 1.1104932这些为数值范围(取绝对值后),还有共同的 0。浮点数使用细节1)浮点数常量默认为double型,声明float型常量时,须后加 ‘f’ 或 ‘F’。

2021-06-27 21:40:58 1059

原创 明确常量的类型

怎样明确常量的类型在C语言中,不仅变量有数据类型,常量也有类型。为什么要把常量分为不同的类型呢?在程序中出现的常量是要存放在计算机的存储单元中的。这就必须分配给它多少字节,按什么方式存储。例如,程序中有整数12,在Visual C++中会分配给它4个字节,按补码方式存储。确定常量的类型字符常量只要看到由单撇号括起来的单个字符或转义字符就可以知道他是字符常量。整型常量不带小数点的数值是整型常量,但应注意其有效范围。如:在Turbo C中,系统为整型数据分配两个字节,其值为-32768--32

2021-06-27 20:58:18 562

原创 自动转换与强制转换

1).数据类型按精度(容量)大小排序为2).数据类型自动转换表规则2.自动类型转换细节说明1)有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如 int 型和 short 型运算时,先把short转成int型再进行运算)。例:int i = 3; float f = 2.5; double d = 7.5; 10 + 'a' + i * f - d/3编译时,从左至右扫描,运算次序如下;1)进行10 + ‘a’ 的运算,‘a’ 的整数97

2021-02-16 23:28:22 878

原创 布尔类型

1)C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0 为真。2)但这种做法不直观,所以我们可以借助C语言的宏定义。3)C语言标准(C99)提供_Bool型,_Bool仍是整数类型,但与一般整型不同的是,_Bool变量只能赋值为0或1,非0的值都会被存储为1,C99还提供了一个头文件<stdbool.h>定义了bool代表_Bool,true代表1,false代表0.只要导入stdbool.h,就能方便的操作布尔类型了,比如 bool flag = false;#d

2021-02-15 22:29:53 2075

原创 数据类型--浮点型详细

3.14159可以表示为:3.14159e0、0.314159e1、0.0314159e2、31.4159e-1等,他们都代表同一个值。可以看到:小数点的位置可以在314159几个数字之间、之前或之后(0)浮动的,只要小数点位置改变的同时改变指数的值,就可以保证他的值不会改变。由于小数点的位置可以浮动,所以实数的指数形式称为浮点数。1)关于浮点数在机器中存放形式的简单说明,浮点数 = 符号位+指数位+尾数位。浮点数是近似值。2)尾数部分可能丢失,造成精度损失。在存储时,系统将实型数据分成小数部分和指

2021-02-15 22:10:04 8307

原创 C程序的运行机制流程

(1)编辑:编写.c文件,就是源代码。(2)编译:将c程序翻译成目标文件(.obj)//在计算机低层执行。(3)链接:将目标文件(.obj)生成可执行文件(.exe)//在计算机底层执行。(4)运行:执行.exe文件,得到运行结果。...

2021-02-10 18:19:55 411

原创 C语言 值传递-地址传递-引用传递(C++)

***1.***被调用的函数的形参只有函数被调用的时候才会临时分配存储单元,一旦调用结束占用的内存会被释放。换句话说,就是函数体内部形参的地址和外部实参的地址完全是两个地址**2.**当main函数调用函数时,把实参copy给了形参,此时形参临时分配存储空间用于存储拷贝过来的值**3.**C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式,即只能由实参传递至形参单向1.1值传递-传递值#include<stdio.h>void swap(int x,int y){ in

2020-10-31 22:52:13 1567

原创 指针与值传递

#include<stdio.h>void swap(int *a,int *b){ int temp; temp = *a; *a = *b; *b = temp;}int main(){ void swap(int *a,int *b); int c,d,*p1,*p2; printf("please enter c and d:\n"); scanf("%d,%d",&c,&d); p1 = &c; p2 = &d; if(c&l

2020-09-21 17:52:03 405

原创 创建对象时,变量名和构造方法多次使用的注意事项

变量名多次使用:EAX a = new EAX();创建对象时,变量名(a)不可重复使用,重复使用会报错(局部变量重复定义);可以通过以下方式来避免这种错误:不再去定义这种变量,如下图的a = new EBX();构造方法多次使用:如:EAX a = new EAX();EAX b = new EAX();EAX c = new EAX();值得注意的是a、b、c分别表示不同的对象,尽管使用的构造方法一样。...

2020-08-08 08:53:38 439

原创 JAVA——向下转型与向上转型

向上转型子类对象一定是父类的一个实例,那么用父类去声明一个子类实例时是可行的,像这样:父类 对象=new 子类构造器 ; 这样是可行的向下转型父类对象不能作为子类的实例,所以向下转型一般会出错。具体分以下两种情况:1.父类 对象1=new 子类构造器子类 对象2=对象1这样是错误的,因为对象1被父类所声明与子类不匹配,但可通过强转纠错:子类 对象2=(子类)对象12.父类 对...

2020-04-05 22:32:31 115

原创 JAVA——super关健字用法(子类创建对象时的易错点)

super关健字用法有以下两种:1.操作被隐藏的成员变量和被重写的成员方法(所谓被隐藏的变量是指与子类变量名相同的父类变量) 如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字。2.调用父类构造方法(重点)从以上截图可以看出输出子类构造器时先输出父类构造器,这就涉及到调用父类构造器。若父类无构造器,则会默认一个无参构造器,而子类则会默认super()...

2020-04-05 14:49:36 227

原创 JAVA——类名作方法返回值类型

用类名可以作方法返回,返回该类的实体类对象;并且,可以通过相关途径访问到该对象里面的属性;此外,当父类名作方法返回时,可返回子类实体类对象。...

2020-04-01 17:11:18 1549

原创 JAVA——static关键字注意

1.Java中使用成员变量和成员方法都需要创建对象才能使用。2.对于不同的对象,成员变量具有不同的状态,而且彼此不受影响。 如果需要直接使用成员变量和成员方法而不创建对象就可以使用static关健字: 1.static关健字表明被修饰是成员是属于这个类的而并非某个特定的对象,即它所修饰的成员在该类中处于共有状态。例:以下代码,未用static修饰count时v1,v2,v3三个对象中的变量各不相同...

2020-03-25 22:20:08 73

原创 JAVA——普通方法与构造方法

普通方法:public static void main(String[] args){}声明方法时只有返回值,方法名称,一对小括号和一对大括号是必须的。通常情况下,方法有一下六部分组成:1.修饰符如:访问权限修饰符(public等),静态修饰符(static)2.返回值,方法运行的结果,如果没有返回值需要使用void表明。3.方法名称,通常是首字母小写的英语单词如:main4.参数...

2020-03-21 17:22:19 171

原创 C语言——负数如何求余?

求余定义:a%b = a - (a/b)*b负数求余:被除数的绝对值与除数绝对值取余的值即为余数绝对值,余数符号与被除数一致。、例:-10%3=-1;10%(-3)=1;

2020-03-20 22:42:27 10150 5

原创 C语言:字符的表示方法——为什么"\101"输出为A

字符的表示方法共有三种:第一种:字符表示——加引号char a=‘A’; 表示字符A第二种: Ascall码表示——整数char a=65; 表示字符A第三种:转义字符表示——’\ ’char a=’\101’; 这里的101为八进制数,为65故表示字符A。八进制最大取值为\177char a=’\x60’; 这里的’\x60’为十六进制,十六进制最大取值为\7f...

2020-03-20 22:28:35 16824 6

原创 C语言——字符型与浮点型可以相加吗?

应是可以相加的:在C语言中,char类型其实就是整型中长度最小的类型,在内存中仅占8位也就是一个字节,而浮点型遵循IEEE754标准其数据储存与整型并不相同。即使两者内存表示方法不同,但当两者进行运算时,C编译器会将整型隐式转换为更高精度的浮点型,故char类型与浮点型可以相加,得浮点型。...

2020-03-20 22:04:43 6446

原创 函数的返回值和return

函数的返回值是指函数被调用后执行函数体中代码所得的结果,return将该结果返回给原调用点。例如:在main函数体后的return 0将结果返回给调用main函数操作系统,而自己定义的函数中的return将结果返回给main函数体中调用处。当主函数正常结束时,函数值为0,若出现错误,则函数值为非0 的整数。1.1.没有返回值的函数为空类型,用void表示。1.2.一旦函数被定义为void...

2020-02-12 20:32:48 2083

原创 "&&"逻辑运算符易错点以及两侧的数据类型要求。

*先看两侧数据类型:逻辑运算符两侧的运算对象不但可以是整型,也可以是浮点型,字符型,枚举型,指针型等纯量型数据。系统最终会以0和非0来判断。易错点:逻辑运算符两侧的运算对象可以不是同一类型,例:可以一边是字符型,另一边是浮点型或者其他。其次,不要主观认为因运算对象不一样而影响结果。例:认为's'&&4为假,'f'&&'g'为真。逻辑运算符只判断两侧为0还是1。字...

2019-11-25 20:30:43 4269

原创 选择控制结构if连用时的易错点

@if连用的错误TOC#include <stdio.h>main(){double x,y;printf(“输入一个实数:”);scanf("%lf",&x); if(x<5) y=x-1;if(5<=x<10)y=2x-1;if(10<=x<20)y=3x-11;if(x>=20)y=11;printf("%...

2019-11-24 16:01:41 510

空空如也

空空如也

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

TA关注的人

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