自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day38.C++提高03

Day38.C++提高0301.函数对象(仿函数)总结:- 创建一个类,重载()- 函数对象通常不定义构造函数和析构函数,所以在构造和析构时不会发生任何问题,避免了函数调用的运行时问题- 函数对象超出普通函数的概念,可以在类中保存自己的状态。- 函数对象可以内联编译,性能好- 模板函数对象使函数对象具有通用性- 函数对象可以作为函数参数来传递 02.谓词(仿函数的返回值为bool类型)概述:- 谓词可分为一元谓词和二元谓词- 一元谓词是指有一个参数,二元谓词有两个参数代码:#

2021-08-10 18:26:46 111

原创 Day37.C++提高02(STL)

Day37.C++提高02(STL)01.stack栈队列(先进后出)#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<stack>void test01(){ stack<int> s; s.push(10); s.push(20); s.push(30); s.push(40); while (s.size()) { cout &

2021-08-07 10:25:47 130

原创 Day36.C++提高01(STL)

Day36.C++提高01(STL)01.STL基本概念(Standard Template Library)STL基本概念:STL从广义上分为:容器(container),算法(algorithm),迭代器(iterator),容器和算法之间通过迭代器进行无缝连接。STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。STL标准模板库,在我们C++标准程序库中隶属于STL的占到了80%以上。STL六大组件简介:STL提供了六大组件,彼此之间

2021-08-04 10:30:51 140

原创 Day35.C++09

Day35.C++0901.类型转换-静态类型和动态转换和常量转换#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//静态转换//基础类型void test01(){ char a = 'a'; double d = static_cast<double>(a); cout << "d = " << d << endl;}//父

2021-07-27 10:29:39 90

原创 Day34.C++08

Day34.C++08001.函数模板的基本使用模板概论:C++提供了函数模板,所谓函数模板,实际上就是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。代码示例:#define _CRT_SECURE_NO_WARNINGS#include<iostream>u

2021-07-22 21:56:42 105

原创 Day33.C++07

Day33.C++07001.静态联编和动态联编(引出多态的概念)#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std; class Animal{public: virtual void speak() { cout << "动物在说话" << endl; }};class Cat:public Animal{public: void speak(

2021-07-15 15:58:23 53

原创 Day32.C++06

Day32.C++06001.关系运算符重载(==)#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string>using namespace std;class Person{public: Person(string name,int age) { this->m_Age = age; this->m_Name = name; } //==运算符重载(!=运算符

2021-06-19 17:42:52 62

原创 Day31.C++05

Day31.C++05001.加号运算符重载#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: Person() :m_A(1),m_B(1){} Person(int a,int b):m_A(a),m_B(b){} //+号运算符重载 成员函数 /*Person operator+(const Person& p) { P

2021-06-14 18:41:29 100

原创 数据结构(读书学习04)

栈与队列001.栈与队列定义:栈是限定仅在表尾进行插入和删除操作的线性表。队列是只允许在一段进行插入操作、而在另一端进行删除操作的线性表。002.栈栈:- 栈是一种特殊的线性表,栈中的元素具有线性关系,即前驱后继关系。- 其特殊之处就是限制了它的插入和删除的位置,它始终只在栈顶进行。- 栈的插入操作,叫做进栈,也称压栈,入栈。- 栈的删除操作,叫做出栈,也有的叫做弹栈。003.栈的抽象数据类型栈的常用操作:ADT 栈(stack)Data 同线性表。元素具有相同的类型,相邻

2021-06-10 16:39:52 50

原创 Day30.C++04

Day30.C++04001.静态成员变量和静态成员函数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: static int m_Age;//加入static就是 静态成员变量,会共享数据 //静态成员变量,在类内声明,类外进行初始化 int m_A; //静态成员函数 //静态成员函数不可以访问 普通成员变量 //普通成员函数 可

2021-06-06 18:27:48 98

原创 数据结构(读书学习03)

线性表线性表:零个或多个数据元素的有限序列。001.线性表的定义线性表几个需要注意的点:1. 元素之间是有顺序的,若元素存在多个,则第一个元素没有前驱,最后一个元素没有后继,其他每一个元素都有且只有一个前驱和后继。2. 线性表元素个数是有限的线性表的元素个数n(n>=0),定义为线性表的长度,当n=0时,称为空表。002.线性表的抽象数据类型 ##、线性表的抽象数据类型定义:ADT 线性表Data: 线性表的数据对象集合为{a1,a2.....,an},每个元素的类型均为

2021-06-03 16:44:06 40

原创 Day29.C++03

Day29.C++03001.面向对象设计案例_立方体案例#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;/*设计立方体(Cube),求出立方体面积和体积分别用全局函数和成员函数判断两个立方体是否相等*/class Cube{public: //设置长 void setLong(int l) { Long = l; } //获取长 int getLong() {

2021-05-31 18:29:44 73

原创 Day28.C++02

Day28.C++02001.作业案例_设计圆类求周长#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;const double pi = 3.14;//1.设计一个类,求圆的周长//周长公式 2 * pi * rclass Circle//class 代表声明一个类,后面紧跟的是类的名称{public://公共权限 //求圆的周长 //在类里面写函数 成员函数 double

2021-05-27 19:33:31 83

原创 Day27.C++01

Day27.C++01001.第一个程序(Hello World!!)#include<iostream>//标准输入输出库using namespace std;//使用命名空间std(打开一个叫std的房间)int main(){ //cout 标准输出 //<< 左移运算符 //endl 结束换行 cout << "Hello World!" << endl; system("pause");//阻塞功能 return EXIT

2021-05-18 20:36:15 98

原创 数据结构(读书学习02)

算法算法(启示):算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作。001.算法定义为了解决某个或者某类问题,需要把指令表示成一定的操作序列,操作序列包括一组操作,每一个操作都完成特定的功能。002.算法的特性算法具有五个基本特性:输入、输出、有穷性、确定性、可行性输入输出:输入可以有零个或多个但算法的输出至少要有一个,输出的形式可以是打印输出,也可以是返回一个或多个值等。有穷性:指算法在执行有限的步骤之后,自动结束而不会出现

2021-05-09 20:12:28 144

原创 数据结构(读书学习01)

数据结构绪论基本概念和术语数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。数据项:一个数据元素可以由若干个数据组成。数据项是数据不可分割的最小单位。数据对象:是性质相同的数据元素的集合,是数据的子集。数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合。逻辑结构和物理结构逻辑结构1. 集合结构:集合结构中的数据元素除了属于一个集合外,它们

2021-05-09 20:02:53 51

原创 Day26.C提高(数据结构03)

Day26.C提高(数据结构03)01、队列概念队列是一种受限制的线性表(先进先出)队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,a3---an),那么a1就是队头元素,而an为队尾元素,这样我们就可以删除时,总是在a1开始,而插入时,总是在队列最后。02、队列的链式存储实现LinkQueue.h#pragma once#inc

2021-05-06 19:45:50 56

原创 Day25.C提高(数据结构02)

C提高(数据结构02)001.单向链表(版本二)#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>//链表结点数据结构struct LinkNode{ struct LinkNode* next;};//链表结构体struct LList{ struct LinkNode header;//头结点 int size;};

2021-04-29 19:49:13 86

原创 Day24.C提高(数据结构01)

Day24.C提高(数据结构01)001.动态数组简单实现#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>//1.先把所需要的数据信息结构定义下来struct DynamicArray{ //数组存储元素的空间的首地址 void** addr; //存储数据的内存中最大能够容纳多少元素 int capacity;//容量 //

2021-04-27 12:30:46 82 2

原创 Day23.C提高7

Day23.C提高7一、链表逆序//接上一次的代码(此处只附逆序函数)void Reverse_LinkList(struct LinkNode* header){ if (NULL == header) { return; } //创建辅助指针 struct LinkNode* pCurrent = header->next; struct LinkNode* pNext = NULL; struct LinkNode* pPrev = NULL; while (pCur

2021-04-04 19:41:57 74

原创 Day22.C提高6

Day22.C提高6一、函数指针#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>void func101(){ printf("hello world\n");}//函数名其实就是函数的入口地址void test101(){ //printf("函数入口地址:%d", func101); int* funcAddr =

2021-04-01 16:08:10 44

原创 Day21.C提高5

Day21.C提高5一、结构体嵌套二级指针/*当创建结构体变量后,如果其中的成员为指针类型的话,就要将此变量开辟至堆空间,是因为在创建结构体后,程序在运行结束之后,对于结构体变量所占的内存空间就已经分配好了,分配的大小为4字节(也就是一个指针的)大小,如果不重新在堆空间中开辟内存的话,就会导致溢出,因此,一般情况下,看到使用指针类型的数据的时候,应该在堆空间中存储。*/#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include&

2021-03-30 08:52:54 46

原创 Day20.C提高4

Day20.C提高4一、一维数组#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>void test01(){ int arr[] = { 1,2,3,4 }; int* p = arr; //1.sizeof 2.对数组名取地址 &arr //以上两种情况下,数组名不是指向首元素的指针 //**除了以上两种之外,数

2021-03-21 16:34:37 53

原创 Day19.C提高3

Day19.C提高3一、calloc和realloc//开辟一块内存空间,calloc自动将分配的内存置零 格式://calloc(所需内存单元数量,每个内存单元的大小)char* arr = (char*)calloc(10, sizeof(char));if (arr != NULL){ free(arr); arr = NULL;}/*realloc 格式:realloc(void* ptr,size_t size);ptr:之前用malloc或者calloc分配的内存地址,若

2021-03-14 12:03:18 36

原创 Day18.C提高2

Day18.C提高2一、函数调用模型(需要自己理解的知识点)1.1 函数调用流程在经典的计算机科学中,栈被定义为一个特殊的容器,用户可以将数据压入栈中(入栈,push),也可以将压入栈中的数据弹出(出栈,pop),但是栈容器必须遵循一条规则:先入栈的数据最后出栈(先进后出).在经典的操作系统中,栈总是向下增长的。压栈的操作使得栈顶的地址减小,弹出操作使得栈顶地址增大。栈在程序运行中具有极其重要的地位。最重要的,栈保存一个函数调用所需要维护的信息,这通常被称为堆栈帧(Stack Frame)或者

2021-03-11 16:23:42 47

原创 Day17.C提高1

Day17、C提高11.typedef用法用typedef有利于提高代码的可移植性2.void用法1.void不能直接定义变量,因为编译器不知道分配多少内存给变量(当定义一个变量,编译器必须知道分配多少内存)2.对函数返回的限定,对函数参数的限定3.void* 无类型指针(主要用于数据结构的封装)3.sizeof用法sizeof(类型);sizeof(变量);//sizeof的返回结果是unsigned int//数组作为函数参数时,会退化为指向数组首元素的指针4.内存分区栈

2021-03-07 18:13:21 62

原创 Day16.贪吃蛇

Day16.贪吃蛇(有小BUG)一、小知识点改变光标位置函数:#include<Windows.h>void gotoxy(int x, int y){ COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);}去掉控制台的光标://在main函数开始写这段代码CONSOLE_CURSOR_INFO cci;cci

2021-03-06 12:54:50 47

原创 Day15学生信息管理系统

main.c#include "fun.h"enum keys{ //log:录入 bro:浏览 find:查找 chan:修改 add:增加 del:删除 exit:退出 log=1,bro,find,chan,add,del,exit_}key;int main(void){ //初始化 init(); int i; while (1) { printf("请输入功能编号:"); scanf("%d", &i); getchar(); switch

2021-03-05 10:09:14 93 2

原创 Day14.快译通

Day14.快译通main.c#include "fun.h" int main(void) { DICT* p = (DICT*)malloc(sizeof(DICT) * WORDMAX); file_read(p); while (1) { word_inquiry(p); int flag = 0; flag = word_inquiry(p); if (flag != 1) { printf("没有找到该单词!\n"); }

2021-03-04 14:58:06 283 2

原创 Day13.文件(下)

Day13.文件(下)一、块读写#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>int main0101(void){ //char arr[16] = "hello world"; int arr[] = { 888888,888888,888888,888888 }; FILE* fp = fopen("a.txt", "wb

2021-03-03 08:44:49 84

原创 Day12.文件(上)

Day12.文件(上)一、文件打开关闭#include<stdio.h>#include<stdlib.h>#include<string.h>int main101(void){ //以读的形式打开文件 FILE* fp = fopen("C:\\Users\\徐杰\\Desktop\\01.txt", "w"); if (!fp) { //1、找不到文件 2、没有权限 3、程序打开文件超出上限 printf("文件打开失败!!\n");

2021-03-03 08:43:05 75

原创 Day11.复合类型

Day11.复合类型一、结构体的定义和赋值#include<stdio.h>#include<stdlib.h>#include<string.h>/*struct 结构体名称{ 结构体成员列表};*/struct students{ //成员列表 char name[30]; unsigned int age; char tel[16]; float scores[3]; char sex;}stu_1 = { "曹儿子",16

2021-02-21 12:28:40 663

原创 Day10.内存结构

Day10.内存结构一、作用域1、全局变量和局部变量#include<stdio.h>#include<stdlib.h>#include<string.h>//声明变量,声明之后便可以在此文件中使用这个变量//声明不会分配内存空间//extern int a;//全局变量 作用在整个项目中,使用的前提是需要在使用的文件中进行声明int a = 100;int main(void){ //变量的作用范围:从创建到所在函数结束 int a

2021-02-09 00:03:05 83

原创 Day08,Day09 指针(下)

Day08,Day09 指针十二、指针和函数#include<stdio.h>#include<stdlib.h>//地址传递,可以改变实参的值void tab(int* a, int* b){ int temp = *a; *a = *b; *b = temp; return;}int main(void){ int a = 10; int b = 20; tab(&a, &b); printf("%d %d\n", a,

2021-02-06 21:39:00 54

原创 Day08,Day09 指针(上)

Day08,Day09 指针一、指针的定义和使用/* 1.指针:是一种数据类型 2.指针格式:对应数据类型* int a = 10; int* p = &a; 3.p:指针类型变量 用来指向一个变量的地址 4.内存按照 unsignned int 为每个一个内存分配编号 */ #include<stdio.h> #include<stdlib.h> int main(void) { int a = 10; //指针是一种数据类型

2021-02-05 22:49:57 61

原创 Day07.字符串处理函数与函数

Day07.字符串处理函数与函数一、字符串处理函数1、gets()和puts()//gets() 从标准设备上获取一个字符,这个字符可以带空格,直到接收到换行字符或者字符串结束标志才停止//puts() 从标准设备上,输出一个字符串,这个字符串自带 '\n' 换行#include<stdio.h>int main(void){ char arr_0[30]; gets(arr_0); puts(arr_0); char arr_1[30]; gets(arr_1

2021-02-04 14:47:36 79

原创 Day06 数组

Day06 数组一、数组的定义1、数组的定义和使用格式: 数据类型 数组名[元素个数] 例子:int scores[10]; //scores[0]-scores[9] scores[0] = 10; //赋值操作 int scores[10] = {99,66,51,516,15,3151,31,31,52,85}; //赋值操作 int scores[10] = {99,66,51}; //赋值时括号中一次为数组前面的元素赋值,如果数组长度超过元素个数,后面的值全部初始化

2021-02-01 11:14:31 195

原创 Day05 运算符和流程结构语句

Day05一、运算符表达式和流程控制语句运算符1、算数运算符【+ - * / % ++( 自增 ) --(自减)】 int a =10; a++;等同于 a = a+1; 等同于 a += 1 ++a; 2、赋值运算符【= += -= *= /= %=】 3、比较运算符【 > < >= <= == !=】 4、逻辑运算符【! && ||】二、类型转换1、隐式转换 编译器会自动将低的数据类型转成高的数据类型,转化后的数据正确 2、强制转

2021-01-30 11:39:54 51 1

原创 day04 数据类型与运算符

数据类型与运算符一、数据类型C语言32个关键字duto break case char constcontinue default do doubleelse enum extern float forgoto if int long registerreturn short signed sizeof static struct switch typedef unsigned unionvoid volatile while九种控制语句if()~else~for()~

2021-01-27 22:14:30 58

原创 day03 C语言基础

#Day03 C语言基础#一、第一个程序hello World!!!#include<stdio.h>//包含头文件 std标准库 io 输入输出库 <>系统库 "" 自定义头文件//这是一行注释/*块注释*///函数值的返回值类型 int整型//函数的参数类型 void空类型int main(void){ printf("hello World!!!"); return 0;}//VS快捷键 Ctrl+K+C 注释 Ctrl+K+U取消注释

2021-01-27 22:11:38 67

空空如也

空空如也

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

TA关注的人

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