笔记
饭要梁了
一名大学生的笔记本
展开
-
【数据结构】数据结构学习大纲
数据结构概述定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。数据结构 = 个体 + 个体的关系算法 = 对存储数据的操作算法:解题的方法和步骤衡量算法的标准:时间复杂度大概程序要执行的次数,而非执行的时间空间复杂度算法执行过程中大概所占用的最大内存难易程度健壮性预备知识:1. 指针地址:地址就是内存单原创 2020-05-28 09:38:39 · 345 阅读 · 0 评论 -
【C++】第9章:(二)构造函数和析构函数
构造函数:是用于创建对象的特殊成员函数,当执行对象定义语句时,系统自动调用构造函数作用:初始化对象:为对象的数据成员赋初值&请求其他资源;构造函数构造函数是类的public成员构造函数名与类名相同构造函数可以重载构造函数可以有任意类型的参数,但没有返回值,函数头部无返回值类型说明对象的定义语句即为构造函数的调用语句系统按照函数重载规则调用构造函数析构函数当一个对象的生命周期结束时,C++会自动调用析构函数析构函数是public成员函数析构函数名为:~类名析构函数没有参数原创 2020-05-23 15:56:14 · 253 阅读 · 0 评论 -
【C++】第9章:(一)类和对象的定义
从C++定义的数据类型到自定义数据类型类:用户自定义数据类型对象:类的变量文章目录类的定义类的定义_1:访问限定符类的定义_2:成员类的定义_3:成员函数的定义类的封装类的定义数据与数据的处理函数封装在一起 --> 类类的定义包括四要素:类名数据成员 (数据集合的值规范)函数成员访问限定符类的定义_1:访问限定符访问限定符:说明类成员的可访问范围1.三种关键字出现的次数和先后续都没有限制2.若某个成员前面没有上述关键字,则为私有成员class 类名{ pri原创 2020-05-22 22:30:11 · 580 阅读 · 0 评论 -
【C++】第8章:(三)文件处理-二进制文件
二进制文件打开二进制文件用ios::binary方式;二进制文件的读写方式由程序控制,并用特定的读写函数:fstream infile,outfile;infile.open("inf1.txt",ios::in|ios::binary);outfile.open("outf1.txt",ios::out|ios::binary);二进制文件读写操作输入函数:Infile.read(char *,int); //char *数据进入的内存地址,int一次读入的字节数输出函数:Outfil原创 2020-05-22 19:46:35 · 572 阅读 · 0 评论 -
【C++】第8章:(二)文件处理-文件文本
文件与流文件操作的基本步骤:打开文件:建立文件流对象流对象与磁盘文件关联指定文件的打开方式streamclass fileObj(fileName,openMode);fileObj.open(fileName,openMode);文件的打开模式:打开文件方法1:调用流类带参数的构造函数,建立流对象时连接外部文件流类 对象名(文件名,方式);(流类:ifstream、ofstream或fstream)例如:ifstream infile(“datafile.dat”,ios::原创 2020-05-22 18:53:41 · 162 阅读 · 0 评论 -
【C++】第8章:(一)输入输出流的基本概念及标准I/O流
文章目录一.流类和流对象IO流二.标准流标准输出流标准输入流一.流类和流对象流(stream):是一个抽象的概念,表示信息从源到目的端的流动,数据按顺序从一个对象传送到另一个对象IO流输入输出流的任务就是在内存和外部设备之间稳定可靠地传输数据和解释数据。输入数据 ———(输入流 Input stream)——> 内存 ——— (输出流Output stream)——> 输出数据二.标准流在C++中,把键盘和显示器定义为标准设备,而针对标准设备实现的输入与输出操作称为标准流。标准输原创 2020-05-22 16:43:16 · 189 阅读 · 0 评论 -
【C++】第7章:(五)递归算法
用递归的方法求n!n! = 1 (n=0,1)n! = n*(n-1)! (n>1)原创 2020-05-21 19:15:55 · 279 阅读 · 0 评论 -
【C++】第7章:(四)参数传递的意义和作用
文章目录一.函数为什么需要参数传递?二.参数传递——值传递的用法三.参数传递——地址传递的用法1.形参是指针2.传数组的首地址(传数组名)传二维数组的首地址3.传引用一.函数为什么需要参数传递?函数之间的共享数据是通过参数传递完成的(函数就像一个可以实现特定功能的盒子,实参的值复制一份传进去,操作后返回一个值,而实参原来本身的值不会改变)二.参数传递——值传递的用法方式:函数的形参的类型为简单变量当实参传递给形参时,系统会建立一份拷贝给形参。当函数调用完毕后,这份实参的拷贝消失。特点:传值调用原创 2020-05-21 16:57:53 · 490 阅读 · 0 评论 -
【C++】第7章:(三)变量的作用域与生存期
文章目录1.什么是作用域与生存期?2.变量的种类3.变量的存储类型1.什么是作用域与生存期?文件 file.cppint a; //文件作用域,全局变量main 函数{f2();...f1();}f1 函数{auto int b; //函数作用域或块作用域,局部变量f2();...}f2 函数{static int c; //同 b...}变量的作用域:变量起作用的范围(1.文件作用域;2.函数或者块作用域)变量的生存期:变量能保存值的时间范围2.变量的种类局原创 2020-05-21 13:02:47 · 297 阅读 · 0 评论 -
【C++】第7章:(二)函数的调用及声明、函数重载
函数的调用主调函数通过函数名调用被调函数,如果被调函数中有形参,则主函数中的函数调用语句须给出对应的实参;调用格式:函数名(实参表)调用方式:有返回值:m=funMax(x,y); //表达式形式的调用无返回值:fun(a,b); //语句形式的调用函数的声明在主函数前声明函数,则函数的定义可以在所有地方调用三个关键部分函数的名字函数返回值的类型调用这个函数的时候必须提供的参数的个数和参数类型语法格式数据类型 函数名(形参列表);函数重载定义原创 2020-05-21 10:45:52 · 299 阅读 · 0 评论 -
【C++】第7章:(一)函数的概念及定义
文章目录一.为什么需要函数二.什么叫函数三.如何定义函数一.为什么需要函数避免重复性操作分而治之思想:把一个复杂的问题分解成若干个简单的问题,每个简单的问题是一个独立的功能模块,每个模块用函数实现二.什么叫函数int funMax(int x,int y){ if(x>y) return x; else return y;}能够完成特定功能的独立代码块;能够接受数据,并对接受的数据进行处理;也可以不接受数据,可以返回结果也可以不返回结果;归纳:函数是一个工具,原创 2020-05-20 19:38:28 · 249 阅读 · 0 评论 -
【C++】第6章:(五)多级指针、动态存储分配
二级指针一级指针:指针变量中存放目标变量的地址int *p;int i=5;p=&i;*p=15;二级指针:指针变量中存放一级指针变量的地址int **p1;int *p2;int i=5;p2=&i;p1=&p2;**p1=15;用二级指针处理字符串int main(){char **p;char *name[5]={"www.","hust.","edu.","cn"};p=name+1;cout<<*p;p+=2;while原创 2020-05-20 16:38:49 · 312 阅读 · 3 评论 -
【C++】第6章:(四)指针数组
指针数组数据类型 * 数组名[数组长度说明]例 int *p[4];指针数组赋值与初始化赋值:main(){ int b[2][3],*pb[2]; pb[0]=b[0]; pb[1]=b[1]; ......}初始化:main(){ int b[2][3],*pb[ ]={b[0],b[1]};...}指针数组赋值与初始化初始化:mai...原创 2020-04-17 11:06:36 · 190 阅读 · 0 评论 -
【C++】第6章:(三) 指针和二维数组
文章目录二维数组与指针的关系行指针与列指针(重点)用指针操作二维数组的实例二维数组与指针的关系int a[3][4];对于二维数组a:a是数组名,包含三个元素,a[0],a[1],a[2]每个元素a[i],又是一个一维数组,包含4个元素二维数组具有二级地址的含义行指针与列指针(重点)行指针:a[0],a[1],a[2],a[3]列指针:a[0]+1,a[0]+2,a[1]+1...原创 2020-04-16 14:38:24 · 285 阅读 · 0 评论 -
【C++】第6章:(二)指针与一维数组:求两个集合的交集
指针表示一维数组的元素数组名int a[ ]={1,2,3,4,5,6,7,8,9}下标表示法a[i]:a[0],a[1],a[2],a[3]地址表示法*(a+i): *(a+0), *(a+1), *(a+2), *(a+3)指针的算术运算与比较运算用指针操作一维数组的实例...原创 2020-04-16 11:10:10 · 1908 阅读 · 1 评论 -
【C++】第6章:(一)指针概述及基本应用
访问内存中的数据从内存单元中访问数据的方法有两种:直接访问和间接访问直接访问通过变量名,直接对变量的存储单元进行存取访问。定义变量后,该变量名也就成为了相应内存空间的名称,表现在程序语句中就是通过变量名来存取变量内容间接访问根据变量的地址进行存取访问指针变量与指针变量的定义...原创 2020-04-12 22:16:02 · 261 阅读 · 0 评论 -
【C语言】变量的作用域和存储方式
文章目录变量的作用域和存储方式全局变量局部变量全局变量和局部变量命名冲突的问题变量的作用域和存储方式按作用域分:全局变量局部变量按变量的存储方式:静态变量自动变量寄存器变量全局变量在所有函数外部定义的变量叫全局变量全局变量使用范围:从定义位置开始到整个程序结束#include <stdio.h>int k=1000;//k是全局变量void f(vo...原创 2020-04-05 09:53:26 · 219 阅读 · 0 评论 -
【C语言】如何在软件开发中合理的设计函数来解决实际问题(举例输出从1~某个数(包括这个数)之间的素数)
举例:输出从1~某个数之间的素数在这里插入代码片原创 2020-04-04 21:08:09 · 246 阅读 · 0 评论 -
【C语言】函数的声明、形参和实参
例1:#include <stdio.h>void g(void){ printf("hello,函数!\n");}int main(){ g(); return 0;}例2:#include <stdio.h>void f(void);//函数声明,分号不能丢int main(){ f(); return 0;}v...原创 2020-04-04 16:12:08 · 2245 阅读 · 0 评论 -
【C语言】函数_判断一个数是否是素数
判断一个数是否是素数:#include <stdio.h>int main(){ int val; int i; scanf("%d",&val); for(i=2;i<val;i++) { if(val%i==0) break; } if(i==val) printf("Yes!\n"); else printf("No!"); ...原创 2020-04-04 15:24:16 · 513 阅读 · 0 评论 -
【C语言】初识函数:第一个简单的函数
如果要实现一个相同的功能,只是针对的数据不一样,可以把这部分单独出来,这就能写成可以实现某一功能的函数。要使用这个功能时直接引用这个函数即可。避免大量重复性代码的出现函数是一个工具,不是为某一个问题而设计的,而是为了解决大量同类型的问题而设计的用一个简单的例子理解函数:输入两个数输出其中的最大值代码如下:#include <stdio.h>//max函数求两个数的最大值...原创 2020-04-03 18:48:30 · 734 阅读 · 0 评论 -
C++如何输出换行及空格
C++中用cout输出换行的三种方式:cout<<endl;cout<<’\n’;cout<<"\n";这样就可以单独输出换行啦!输出空格:cout<<" "<<endl;另外:c++中\t是跳到下一个Tab位置的意思,相当于按一下Tab键。Tab键代表了8个空格,所以输出空格时也可以用\t空开8个间隔。...原创 2020-03-23 16:36:33 · 80006 阅读 · 4 评论 -
【C++】第5章:(六)字符串的应用(包含统计一个句子中单词的个数)
文章目录一.字符数组和数值数组的区别二.字符数组的赋值三.字符串常用的函数四.一维字符数组的遍历框架五.字符数组举例一.字符数组和数值数组的区别相同点:定义格式一样,可以使用循环访问每个元素不同点1:循环控制条件不一样;//数值数组int a[6]={1,2,3,4,5,6};for(i=0;i<6;i++)cout<<a[i];//字符数组char str[6...原创 2020-04-02 18:10:43 · 602 阅读 · 0 评论 -
【C++】第5章:(五)字符串和字符数组 (包含cin和cin.getline混合使用输入时要清除缓冲区数据)
文章目录一.字符变量与字符串二.字符串与一维字符数组三.字符数组的输入混合使用cin和cin.getline四.字符数组的输出一.字符变量与字符串char a=‘M’;char b[ ]=“M”;char c[ ]="爱“;sizeof(a) = 1sizeof(b) = 2sizeof( c) = 3sizeof() 用来求所占字节数以上表明:字符变量只能存放一个字节的字符...原创 2020-04-02 16:42:49 · 1291 阅读 · 0 评论 -
【C++】第5章:(四)二维数组:从计算多个学生成绩并排序输出看二维数组
文章目录二维数组二维数组的存储二维数组应用的三个基础框架二维数组案例:计算多个学生的成绩并排序输出二维数组二维数组可以表示二维表格上的数据二维数组存储形式先行后列二维数组的处理一般采用双重循环语句二维数组的存储元素按先行后列的顺序存放例如:int a[3][4];a —>数组名a代表整个二维数组的首地址的地址常量0a[0][0]1a[0]...原创 2020-04-02 14:00:13 · 4554 阅读 · 0 评论 -
【C++】第5章:(三)巧用数组下标 (判断一个数有无重复数字、十进制转换成二进制)
【例】输入一个整数,判断该数是否有重复的数字原创 2020-03-29 22:24:40 · 411 阅读 · 0 评论 -
【C++】第5章:(二)冒泡排序(数组应用)
冒泡排序的思想:const int N=5;int a[N];N个数要循环N-1轮,设每轮的顺序数为i每轮循环N-i次for(i=1;i<N;i++)//一共需要循环的轮数i{ for(j=0;j<N-i;j++)//从a[0]开始循环比较,每轮需要循环的次数j if(a[j]>a[j+1]) { t=a[j+1]; a[j+1]=a[j]; ...原创 2020-03-29 17:28:14 · 157 阅读 · 0 评论 -
【C++】第5章:(一)查找算法(数组应用)
折半查找查找的数据必须是顺序排列的查找的条件:low<highkey的一次查找过程:mid=(high+low)/2;1.key>a[mid],没有找到,low=mid+1,结束本次查找2.key<a[mid],没有找到,high=mid-1,结束本次查找3.key==a[mid],找到,输出mid,全部查找结束代码如下:#include <iostrea...原创 2020-03-29 16:28:35 · 215 阅读 · 0 评论 -
【C语言】关于C语言数组的基础知识
数组为什么需要数组数组的分类为什么需要数组为了解决大量同类型数据的存储和使用问题为了模拟现实世界数组的分类一维数组二维数组原创 2020-03-28 21:09:41 · 487 阅读 · 0 评论 -
【C++】判断一个数是否有小数
有这样一道题:题目内容:设计一个简单的计算器程序,根据输入的操作数和运算符可以完成 + 、—、 、/ 、% 运算。输出结果必须是一个完整的算术运算式的格式。*例如 :输入3.1 5 + ,输出结果是 3.1+5=8.1。注意:当输入的运算符是"/“且第二个操作数是0时,输出“除数不能为0”当输入的运算符是”%"且操作数中含有小数(如6.5)时,输出“error!”在做这道题时,我把输...原创 2020-03-26 12:20:23 · 12107 阅读 · 3 评论 -
【C++】第4章:(五)从百钱买百鸡问题看穷举法
文章目录穷举法一.百鸡问题二.破解密码的简单方法:暴力穷举三.小结穷举法穷举法的基本思想:一一列举所有可能的解,逐个验证是否符合“约束条件”,找出符合要求的解穷举法适合求解的问题:可能的答案是有限个且答案是可知的,但又难以用解析法描述。这种算法 通常用循环结构来完成基本框架:for(i=a;i<=b;i=i+步长){…}一.百鸡问题“百鸡问题”:鸡翁一,值钱五,鸡母一...原创 2020-03-20 21:00:03 · 1273 阅读 · 0 评论 -
【C++】第4章:(四)嵌套循环:从打印九九乘法表看内外循环的关系
文章目录一.嵌套循环的常用设计方法二.问题:打印九九乘法表(由外到内)三.小结一.嵌套循环的常用设计方法从内到外先考虑每一行中的数据如何输出再考虑如何输出这样的多个行由外到内先将每一行看成一个数,考虑如何输出多行再对每一行是如何输出的进行细化二.问题:打印九九乘法表(由外到内)一.先输出九行二.细化每行输出#include <iostream> #inc...原创 2020-03-20 17:55:58 · 550 阅读 · 0 评论 -
【C++】第4章:(三)嵌套循环:从计算多个圆面积看内外循环的关系
循环嵌套:在一个循环结构中又完整地包含着另一个循环结构嵌套层次一般不超过3层,以保证可读性。【例1】输入10个圆的半径,要求输入数据是非负数,可对半径反复输入,最多输入3次,或直到输入半径为正数,输出10个圆的半径和相应的面积。#include <iostream> using namespace std;int main (){ int i,j;//i为圆的个数,...原创 2020-03-20 17:29:10 · 426 阅读 · 0 评论 -
【C++】第4章:(二)素数算法问题中的break,continue和标记变量
文章目录1.求素数方法一2.求素数方法二3.break&continue【例】输入一个数字,判断其是不是素数1.求素数方法一问题分析如果m>2,m是素数的条件是不能被2,3,…m-1整除或不能被2,3,k(k为不大于根号m整整)#include <iostream> #include <cmath>using namespace std;in...原创 2020-03-20 16:35:31 · 349 阅读 · 0 评论 -
【C++】第4章:(一)从Fibonacci数列和猴子吃桃问题看递推法
文章目录1.什么是递推法?2.如何实现递推法?1.什么是递推法?递推法指从问题的已知条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果递推初始条件确定1.问题本身已经给定;2.通过对问题的分析与化简后确定;递推方向1.顺推法从已知初始条件出发,通过递推关系逐步推算出要解决的问题的结果的方法。如求Fibonacci数列2.倒推法在不知初始值的情况下,经某种递推关系...原创 2020-03-20 15:02:44 · 442 阅读 · 0 评论 -
【C++】整数拆分程序框架
int n,y;cout<<"Enter the number:";cin>>n;//n保存输入的整数 cout<<"The number in reverse order is";while(n!=0){ y=n%10;//对n求模取出当前个位数 cout<<y; n=n/10;//即n=n/10运算,相当于对n右移一位,去掉已取出...原创 2020-03-19 10:36:59 · 325 阅读 · 0 评论 -
【C++】第2章:(三)混合运算和类型转换
不同类型的数据运算时,先转换成同一类型再运算转换原则:确保计算值的精度,转换后尽量不丢失有效数字1.字节少的向字节多的转换char,unsigned char,short,unsigned short,bool --> intcout<<('a'+5)<<endl;//'a'转换为int再加5,结果为整型...原创 2020-03-15 11:54:07 · 211 阅读 · 0 评论 -
【C++】第2章:(二)逗号运算符
逗号是”,"一个运算符;多个表达式用逗号隔开,构成逗号表达式;格式:<表达式1>,<表达式>,…,<表达式n>*规则:从左向右依次计算n个表达式的值,整个表达式的值为<表达式n>的值例1:int a=1,b=2,c=3;int y;y=(a=a+1,b=b+2,c=c+3);//相当于a=a+1;b=b+2;c=c+2;y=cco...原创 2020-03-14 18:51:54 · 228 阅读 · 0 评论 -
【C++】第2章:(一)算术运算
优先级:优先级最高:- :取相反数;函数:exp(x): e^xpow(x,y):x^ysqrt(x): x的平方根fabs(x):|x|log(x):lnx,(x>0)log10(x):lgx,(x>0)sin(x): sinx,x为弧度值cos(x):cosx,x为弧度值使用函数时要在开头加上标准库函数:#include <cmath>us...原创 2020-03-13 17:49:38 · 149 阅读 · 0 评论 -
【C++】第一章:多数据输入时的分隔问题
在键盘输入多数据时,必须用空格键,Tab键或enter键隔开;不同数据类型的输入: 按数据类型读取数据当用enter键分隔数据时:当用空格键分隔时结果是一样的:多数据错误输入情况当有与数据类型不匹配的数据时:用空格键分隔:按变量数据类型依次读入符合类型的数据a是整型,先读1,.2还在内存缓冲区,符合第二个浮点型变量,所以读了0.2,数字3可以看做整型也可以看做字符,所以读...原创 2020-03-12 22:52:38 · 4411 阅读 · 0 评论