计算机程序设计c++
文章平均质量分 61
mooc课程记录
uncle_ll
这个作者很懒,什么都没留下…
展开
-
二分法的应用
二分法的相关应用介绍原创 2023-06-09 23:00:00 · 622 阅读 · 0 评论 -
计算机程序设计c++ 14-4:标准模板库STL-3
关联容器概览关联容器的特征STL提供了4个关联容器,包括:map (映射) 、multimap(多重映射) 、set (集合) 、multiset(多重集合)map、multimap的元素由(key,value)二元组构成,其中键必须是唯一的set 、multiset相当于叧有键(key),没有对应值(value)的 map 和 mulitimapset支持通过键实现的快速读取,元素唯一multiset支持同一个键多次出现的set类型关联容器与序列容器的差别关联容原创 2021-12-28 21:39:12 · 662 阅读 · 0 评论 -
计算机程序设计c++ 14-3:标准模板库STL-2
序列型容器概览vector定义在头文件 <vector>实际上就是个动态数组。随机存取任何元素都能在常数时间完成, 在尾端增删元素具有较佳的性能deque(双端队列)定义于头文件 <deque>也是个动态数组,随机存取任何元素都能在常数时间完成(但性能次于vector),在两端增删元素具有较佳的性能list(双向链表)定义于头文件 <list>任意位置插入和删除元素的效率都很高不支持随机存取每个元素还有指针占用额外空间在序列容器中原创 2021-12-27 22:41:16 · 115 阅读 · 0 评论 -
计算机程序设计c++ 14-2:标准模版库STL-1
标准模版库概述标准模版库(Standard Template Library,STL)是一个具有工业强度的,高效的C++程序库,它实现了诸多在计算机科学领域里常用的基本数据结构和基本算法STL主要包含了容器、算法、迭代器STL系由Alexander Stepanov和Meng Lee等人创造于惠普实验室STL于1994年2月年正式成为ANSI/ISO C++的一部份容器容器是容纳、包含相同类型元素的对象,主要用类模板实现序列型容器:容器中的元素按线性结构组织起来,可以逐个读写元素。主要代原创 2021-12-27 22:20:22 · 688 阅读 · 0 评论 -
计算机程序设计c++ 14-1:模版
函数多态函数重载是最佳方案吗?假如设计一个求两参数最大值的函数,在实践中可能需要定义四个函数:int max ( int a, int b ) { return ( a > b ) ? a , b; }long max ( long a, long b ) { return ( a > b ) ? a , b;}double max ( double a, double b ) { return ( a >b)? a , b; }char max ( char a, cha原创 2021-12-26 12:39:43 · 671 阅读 · 0 评论 -
计算机程序设计c++ 13-5:文本文件与输入例子
统计文本文件中的单词题目统计一个文本文件中的各个单词数量,假定假定已经存在一个文本文件“words.txt”,其内容为多个单词,各单词之间以空格分割;打开这个文件,搜索全部单词;获取各个单词、个数以及单词总数量并显示出来;算法分析定义存放单词和个数的单词类;定义单词类数组;打开文件读;循环读取一个单词,如果文件结束关闭文件;保存单词及个数,并统计单词总数量;关闭文件对象;显示各单词和个数以及单词总数量;实现单词类class wordtype{ char wo原创 2021-12-22 23:07:51 · 910 阅读 · 0 评论 -
计算机程序设计c++ 13-4:二进制文件的读写
要根据 文件的定义格式 对二进制文件进行读写。比如BMP位图文件,是典型的二进制文件。其文件头部是格式固定的信息,其中前2字节用来记录文件为BMP格式接下来的8个字节用来记录文件长度再接下来的4字节用来记录BMP文件头的长度等等因此,BMP文件的读取方法是依次读取2字节、8字节、4字节的数据,再转化为字符或整数二进制文件读写函数对二进制文件进行操作时,打开文件要指定方式 ios::binary从二进制文件输入数据可调用istream流类提供的成员函数read,函数原型为:istrea原创 2021-12-22 00:09:52 · 2384 阅读 · 0 评论 -
计算机程序设计c++ 13-3:文件的操作
文件流类文件流类是用于操作文件的标准C++类ifstream: 从文件读取数据ostream: 向文件插入数据fstream: 可读取插入文件分类文件分为文本文件以及二进制文件:文本文件:是一种由若干行字符构成的计算机文件。其编码可以是ASCII码、UNICODE码、GBK编码等等。可以用文本编辑器编辑二进制文件:除了上述以字符构成的文本文件,其他文件均称为二进制文件。典型的二进制文件有声音、动画、图像、视频等c++语言对上述两种文件都可以进行创建、读写等操作。文件操作的基本步原创 2021-12-20 08:43:49 · 646 阅读 · 0 评论 -
计算机程序设计c++ 13-2:标准输出
标准输出流标准输出流——流向标准输出设备(显示器)的数据一般使用cout流对象进行输出操作例如:用流插入运算符<<输出数据cout << "a=" << a << endl;cout是ostream类的对象,除了<<符号外,常用函数如下:函数 功能put 无格式插入一个字节write 无格式插入一字节序列flush 刷新输出流seekp 移动输出流指针tellp原创 2021-12-19 20:28:27 · 951 阅读 · 0 评论 -
计算机程序设计c++ 13-1:标准输入输出与文件操作
什么是流及流库流是指从一个位置向另一个位置传输的一连串数据的集合在输入输出过程中,会在内存中为每一个数据流开辟一个内存缓冲区,用来存数据。从而匹配不同工作效率的对象。输入输出流库结构...原创 2021-12-19 16:45:58 · 541 阅读 · 0 评论 -
计算机程序设计c++ 12-5:虚 析构函数
虚函数–特征:virtualclass A //基类{ public: virtual void f(){...} //虚函数};class B:public A //派生类{ public: virtual void f(){...}};测试主函数int main //主函数{ B x; A *p; p = &x; p->f(); //访问派生类的f return 0;}实例基类#include<iostream>us原创 2021-12-18 23:22:02 · 658 阅读 · 0 评论 -
计算机程序设计c++ 12-4:运算符重载
运算符重载运算符重载指赋予运算符新的操作功能,主要用于对类的对象的操作运算符+意味着多少对象类型的加法呢?还可以定义新的对象类型加法运算符重载定义形式这里有关键字operator<类型> <类名>::operator <操作符>(<参数表>){ 函数体}运算符重载举例(两个虚数的运算符重载)首先定义虚数类虚数可以描述为:a+bia与b看成实数,定义成double类型成员函数除了构造与析构外,还有:输出虚数、修改虚数原创 2021-12-18 21:55:04 · 564 阅读 · 0 评论 -
计算机程序设计c++ 12-3:抽象类
抽象类类是对象的集合,类是从相似对象中抽取共性而得到的抽象数据类型将不用来声明对象(实例化)的类称为抽象类,只供继承使用纯虚函数的定义如下:virtual 返回类型 函数名(参数表)= 0具体实现只能在派生类中完成抽象类又可以定义成:至少包含一个纯虚函数的类抽象类的使用要求抽象类不能实例化,即不声明对象抽象类只作为基类被继承可以定义抽象类的指针或引用抽象类设计举例平面上的几何图形可以抽象定义为类,如矩形类、圆类、三角形类等将所有几何图形再加以抽象,定义为原创 2021-12-17 23:29:04 · 1207 阅读 · 0 评论 -
计算机程序设计c++ 12-2:派生类对象替换基类对象及虚函数
派生类对象替换基类对象一个替换原则凡是基类对象出现的场合都可以用公有派生类对象取代三个替换形式派生类对象给基类对象赋值派生类对象可以初始化基类对象的引用可以令基类对象的指针指向派生类对象,即将派生类对象的地址传递给基类指针派生类对象替换基类对象举例设计一个手机类mobile,使其能派生出两种发射制式(GSM或者CDMA)的手机类mobilegsm和mobilecdma派生类对象能够依据各自特征实现显示发射制式的功能,并实现运行时的动态绑定通过将基类对象或者指针在运行时指向不同的派原创 2021-12-17 22:38:23 · 773 阅读 · 0 评论 -
计算机程序设计c++ 12-1:多态性基本概念
多态性含义多态指相同语法结构,代表多种功能或操作例如:X+YX和Y都为整数类型:相加操作先以个位对齐,然后对应位相加X和Y都为浮点类型:相加操作先以小数点对齐,然后对应位相加当然+两边可以为不同类型也可以相加,比如虚数相加例如:datatype max(datatype a, datatype b)a和b都为整数,可以直接用关系运算符判断比较得出最大值a和b都为日期对象,判断比较操作较为复杂能否将max()函数重载,求两个新类的对象的大小无论X+YX+YX+Y还是datatype原创 2021-12-16 22:29:53 · 634 阅读 · 0 评论 -
计算机程序设计c++ 11-5:继承类设计
点,圆,圆柱体继承设计点类class Point{ private: int x, y; //点的x和y坐标 public: Point(int x=0, int y=0); // 构造函数 void SetPoint(int, int); // 设置坐标 int GetX(){return x;} // 取私有变量x int GetY(){return y;} // 取私有变量y void Print(); // 输出点的坐标}原创 2021-12-14 22:38:20 · 1249 阅读 · 0 评论 -
计算机程序设计c++ 11-4:派生类构造函数与析构函数
派生类构造与析构函数基类的构造函数与析构函数不能被继承派生类构造函数的一般形式为派生类名::派生类名(参数总表): 基类名1(参数表1),…,基类名n(参数表n), 内嵌对象名1(对象参数表1),…,内嵌对象名m(对象参数表m){ 派生类新增加成员的初始化;}基类Person类的定义#include<iostream>#include<string.h>using namespace std;class Person{ char Name[10];原创 2021-12-14 21:57:47 · 554 阅读 · 0 评论 -
计算机程序设计c++ 11-3: 三种派生类继承方式
三种派生类继承方式是公有继承public私有继承private保护继承protected公有继承方式(public)采用公有继承方式创建的派生类,对基类各种成员访问权限如下:基类公有成员相当于派生类的公有成员,即派生类可以象访问自身公有成员一样访问从基类继承的公有成员基类保护成员相当于派生类的保护成员,即派生类可以像访问自身的保护成员一样,访问基类的保护成员派生类内部成员无法直接访问基类的私有成员例子// 基类class Person //人员类定义{ protected:原创 2021-12-12 00:24:58 · 1160 阅读 · 0 评论 -
计算机程序设计c++ 11-2:基类与派生类
基类与派生类采用已存在的类去定义建立新类新类称为派生类(子类)已存在的类称为基类(父类)派生类与基类具有相对性人→学生→大学生水果→桃→水蜜桃→陕西水蜜桃派生类的语法结构class <派生类名>: <访问权限><基类名1>,... <访问权限><基类名n>{ private: 新增私有数据成员和成员函数 protected: 新增保护数据成员和成员函数 public: 新增公有数据成员和成员函数}原创 2021-12-11 23:18:20 · 934 阅读 · 0 评论 -
计算机程序设计c++ 11-1:派生类
问题假设两个类,中间有些特征或者功能是有交叉的地方。现在想要合并两个类为一个新的类。简单的合并会面临的问题:代码大量重复!因此需要通过采用继承式的抽象方法描述万物,不用重复的造轮子,减少代码重复。继承的概念从一个或多个以前定义的类(基类)产生新类的过程称为派生新产生的类又称为派生类类的继承(inheritance)是指新类从基类那里得到基类的特征,也就是继承基类的数据和函数派生的新类同时也可以增加或重新定义数据和函数继承的好处软件复用是软件设计中常用的手段在程序设计中反复使用高质量原创 2021-12-08 22:43:22 · 1058 阅读 · 0 评论 -
计算机程序设计c++ 10-7:this指针
this指针每一个类的成员函数都包含一个指向本类对象的指针指针名为this该指针指向本类对象的起始地址this指针的使用#include <iostream>using namespace std;class Test{ int x; public: Test( int = 0 ); // 构造函数 void print();};Test::Test( int a ) { x = a; } // 构造函数void Test::print()原创 2021-12-05 23:19:54 · 470 阅读 · 0 评论 -
计算机程序设计c++ 10-6:对象与指针
对象与指针指向对象的指针类名 * 指针变量名表;例: Person person1("Zhang3", 19, 'f');` Person *ptr=&Person1; ptr->ShowMe();动态存储对象指针=new 类名(名字初始化值);delete 名字指针;例: Person *p=new Person; delete p;例子#include<iostream> //日期类定义using namespace std;class原创 2021-12-05 22:52:22 · 497 阅读 · 0 评论 -
计算机程序设计c++ 10-5:类的实例——Person
Person 类的定义class Person{ char Name[9]; char Sex; int Age; public: Person( ) // 构造函数 { strcpy(Name,"XXX"); Age = 0; Sex = ' '; } ~Person( ) // 析构函数 {cout<<"Now destroying Person"<<endl; } void Register(char *na原创 2021-12-05 22:17:33 · 2709 阅读 · 0 评论 -
计算机程序设计c++ 10-4:类的实例——能翻译整数机器人2
能翻译整数的机器人机器人的特征姓名型号整数:待翻译的整数翻译的英文句子字符串:字符指针,句子有长有短…机器人的功能翻译整数函数: 形成英文字符串,并将字符串指针返回例如128翻译成one hundred and twenty-eight构造函数设置函数析构函数输出英文句子函数……机器人 类的定义class robot{ private: char name[20]; //机器人姓名 char type[20]; //机器人型号 int num;原创 2021-12-05 16:35:28 · 167 阅读 · 0 评论 -
计算机程序设计c++ 10-3:类的实例——能翻译整数的机器人
能翻译整数的机器人机器人的特征姓名型号……机器人的功能翻译整数函数:例如128翻译成one hundred and twenty-eight构造函数设置函数析构函数……机器人 类的定义class robot{ private: char name[20]; //机器人姓名 char type[20]; //机器人型号 public: robot()//构造函数 { strcpy(name, "XXXXXX"); strcpy(typ原创 2021-12-05 13:58:50 · 229 阅读 · 0 评论 -
计算机程序设计c++ 10-2:析构函数
析构函数构造函数(Constructor)在对象创建时执行,提供了初始化对象的一种简便手段析构函数(Destructor)在对象被撤销时(前)执行,用于完成对象被撤销前的一些清理工作具体地说,析构函数往往用于释放“资源”,如在构造函数中动态申请的内存空间,也可以被用来执行“用户希望在最后一次使用对象之后所执行的任何操作”,例如输出有关信息等对象存储空间问题若一个类声明了五个对象,存储空间如何分配?是否对象中的数据成员和函数成员都占用存储空间?正常思考5个对象占用存储空间应该如下所示原创 2021-12-05 13:22:23 · 556 阅读 · 0 评论 -
计算机程序设计c++ 10-1:构造函数及重载
类的共性数据成员都是私有化成员,外界不能直接访问都有一个成员函数,用来设置数据成员该函数可以在需要时调用,达到随时修改数据成员数据成员值读出必须通过相关成员函数构造函数的定义在声明一个对象后,紧接着要给对象初始化对象初始化实质上就是对所有数据成员赋值如果对象中某个数据成员未赋值,则该数据成员的值不确定,那么该对象的值不完整构造函数(Constructor)用于创建一个对象,提供了初始化该对象的一种简便手段注意在所有类的定义中都有一个成员函数完成初始化数据成员,这个函数就可以当成构原创 2021-12-05 12:30:52 · 1550 阅读 · 0 评论 -
计算机程序设计c++ 9-7:类的抽象描述举例-汽车类及圆类设计
汽车的抽象描述类的特征和功能也就是对象(实体)的特征和功能汽车类的特征和功能—分析抽象汽车个体的特征和功能特征:型号、颜色、价格、出厂日期、载客量、载重量、……功能:运动、鸣笛、倒车、播放音乐、恒温、定位、 ……汽车类的定义class automobile{ private: char type[20]; //汽车型号 char color[20]; //汽车颜色 float price; //价格 int carry_weight; //载重量 int carry_原创 2021-12-04 23:00:08 · 1012 阅读 · 0 评论 -
计算机程序设计c++ 9-6:面向过程与面向对象程序设计思想对比
两种程序设计思想面向过程的程序设计(Structured Programming)以功能为中心,通过分解功能,采用函数来描述操作数据与函数分离,数据(类型或结构)一旦发生改变,函数也要相应改变例如排序函数:void sort(int a[],int n);只能排序整数数组面向对象程序设计(Object Oriented Programming)以数据为中心,采用对象来描述内部属性和操作方法将数据和函数当作一个统一体,采用软件对象模拟客观世界中实际对象例如:钟表类、日期类面向对象程序原创 2021-12-04 22:45:35 · 609 阅读 · 0 评论 -
计算机程序设计c++ 9-5:类的抽象描述举例-日期类
日期类的抽象描述日期类是所有公元日期的集合每个公元日期的特征和功能可以作为日期类的特征和功能公元日期的特征(数据成员):年份:int year;月份:int month;日:int day;公元日期的功能(函数成员):设置日期:void init(int y, int m, int d);显示日期:分两种格式显示日期值按年月日格式显示:void print_ymd();按月日年格式显示:void print_mdn();取出年份值:int get_year();取出月份原创 2021-12-04 22:18:08 · 321 阅读 · 0 评论 -
计算机程序设计c++ 9-4:私有/公有/保护成员
公有 私有与保护成员的定义在public:后面定义的数据成员和函数成员都称作公有成员例如:public: char name[10]; int min(int a, int b);字符数组name和函数min()都是公有成员在private:后面定义的数据成员和函数成员都称作私有成员例如:private: int age; int max(int a, int b);整数变量age和函数max()都是私有成员在protected:后面定义的数据成员和函数成员都称作保护成员例如原创 2021-11-16 23:17:59 · 2917 阅读 · 0 评论 -
计算机程序设计c++ 9-3:对象声明与引用
对象的声明用已定义的类去声明对象(即变量),类似于结构体声明对象的一般形式(类的实例化):<类名> <对象1>, <对象2>, ...;例如:Clock Omega, Rossini, Rolex;这条语句声明了三个对象,对象名分别是OmegaRossiniRolex也可以称声明了三个变量,变量名分别是:OmegaRossiniRolex对象的引用对象的引用类似于结构体对类中的成员的访问,采用.运算符例如: Ros原创 2021-11-16 22:19:30 · 814 阅读 · 0 评论 -
计算机程序设计c++ 9-2:类的定义
类的定义格式class <类名>{ private: //私有成员 <数据成员说明语句>; <函数成员说明语句>; public: //公有成员 <数据成员说明语句>; <函数成员说明语句>; protected: //保护成员 <数据成员说明语句>; <函数成员说明语句>;};例子: 实体钟表如何抽象描述特征:即数据成员时、分、秒型号、生产厂、出厂日期、价格等功能:原创 2021-11-16 21:33:05 · 976 阅读 · 0 评论 -
计算机程序设计c++ 9-1:数据的抽象与封装
实体实体:指客观世界存在的某个事物一所大学,例如:西安交通大学某动物,例如:一只羊一本图书,例如:《C++程序设计教程》一篇文章,例如:“趣赏羊联”一个专业班级,例如:材料21班……实体的描述可以拍摄视频描述实体可以写一篇文章描述实体我们设计的程序都是为了求解某个(些)问题通过对实体进行抽象,来描述实体实体的抽象每个实体都有其特征和功能,特征和功能通称为属性实体与实体的不同在于属性的不同所谓抽象描述实体是指:从实体中抽取出若干特征和功能,来表示实体特征指实原创 2021-11-15 23:22:06 · 666 阅读 · 1 评论 -
计算机程序设计c++ 8-6:数组指针相关应用
反序输出数组实现#include<iostream>#include<stdlib.h>using namespace std;// 反序存放各数组元素void invert(double *x, int n){ double t, *i, *j; i = x; j = x + n -1; while(i<j) { t = *i; *i = *j; *j = t; i++; j--; }}int main(){ d原创 2021-11-10 23:08:05 · 639 阅读 · 0 评论 -
计算机程序设计c++ 8-5:动态数组
定义n个元素的一维数组下面的代码无法实现定义n个元素的一维整型数组int n;cin >> n;int array[n]; // c++ 不支持动态申请new运算符–用于动态申请所需要的内存空间1.动态申请单个变量指针变量 = new 类型;例如,动态申请一个double型变量,初始为100.0duble *p;p = new double;*p = 100.0;// 或*p = new double(100.0); // 要有括号()2.动态申请数组原创 2021-11-09 23:17:53 · 449 阅读 · 0 评论 -
计算机程序设计c++ 8-4:指针与结构体
指针与结构体结构体变量的指针样式:&结构体变量名定义指向结构体变量的指针: 结构体类型 *指针变量名;使用结构指针访问结构体变量中的成员格式1: (*指针变量).name格式2: 指针变量->name其中:->称为结构指向运算符结构体指针应用使用结构指针访问日期结构类型变量struct Date{ int year; int month; int day;}int main(){ Date d={2015, 4, 8}, *p=&d原创 2021-11-09 23:04:54 · 433 阅读 · 0 评论 -
计算机程序设计c++ 8-3:指向一维数组指针(行指针)及字符串指针
指向具有M个元素的一维数组指针定义格式如下:类型 (*指针变量)[M]; //M为一整型常量通常利用该指针变量,指向二维数组的行地址,其中M表示二维数组的列数。例如:利用行指针变量,按行输出二维数组各元素值方法1:int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};int (*p)[4];for(p=a; p<a+3; p++) // p++ 行++{ //输出p所指行的各列元素值 for(int j=0; j<原创 2021-11-09 22:22:05 · 1853 阅读 · 0 评论 -
计算机程序设计c++ 8-2:二维数组与指针
二维数组的指针二维数组地址是映射为一维数组存储设二维数组:int a[3][4],i,j;二维数组a中i行j列元素的地址二维数组在内存中映射为一个一维数组,因此可以通过指向元素的指针快速访问二维数组中的每个元素。如:利用指向数组元素类型的指针变量p,寻找a数组中元素的最大值假设:int *p,max=a[0][0]; //max为最大值for(p=&a[0][0]; p<&a[0][0]+12; p++) // 地址被映射为一个一维数组,数组长度为3*4=12{ i原创 2021-11-07 22:43:42 · 157 阅读 · 0 评论 -
计算机程序设计c++ 8-1:数组与指针
一位数组的指针数组占据内存中一块连续的存储空间,每个数组元素都有确定的内存地址;可通过定义指向数组元素类型的指针变量,间接访问数组中的各个元素C++语言规定,数组名代表数组的首地址(即数组中第一个元素的地址),它是一个常量指针如:int a[10], *p=a;说明a是一个整型数组,p是一个整型的指针变量,且p指向a数组,其中a为数组名,代表数组的首地址,即&a[0]指针类型的算术和关系运算指针的算术运算指针±整数 ==》指针假设:int a[10]={10,20,3原创 2021-11-03 23:21:16 · 220 阅读 · 0 评论