![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C和C++
文章平均质量分 50
C和C++基础学习
死磕的斯坦张
Coding everyday。
展开
-
基础:C++的运算符重载
C++的运算符重载4.5 运算符重载4.5.1 加号运算符重载4.5.2 左移运算符重载4.5.3 递增运算符重载4.5.4 赋值运算符重载4.5.5 关系运算符重载4.5.6 函数调用运算符重载4.5 运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1 加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this-&g原创 2020-07-04 15:21:02 · 139 阅读 · 0 评论 -
C++读写文件操作基础
#include <iostream>#include <fstream> // 读写文件的头文件#include <string>using namespace std; 1 文本文件 写文件 1 包含头文件 #include <fstream> 2 创建流对象 ofstream ofs; 3 指定路径和打开方式 ofs.open(路径,原创 2020-06-21 19:52:20 · 167 阅读 · 0 评论 -
泛型编程:C++的模板
泛型编程:C++的模板一级目录二级目录三级目录1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.2.2 函数模板注意事项1.2.3 函数模板案例1.2.4 普通函数与函数模板的区别1.2.5 普通函数与函数模板的调用规则1.2.6 模板的局限性一级目录二级目录三级目录1.1 模板的概念模板就是建立通用的模具,大大提高复用性模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板1.2 函原创 2020-05-27 20:55:06 · 118 阅读 · 0 评论 -
基础:C++的引用特点
C++的引用1 内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符2.1 引用的基本使用2.2 引用注意事项2.3 引用做函数参数2.4 引用做函数返回值2.5 引用的本质2.6 常量引用1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:原创 2020-05-14 11:42:09 · 833 阅读 · 1 评论 -
基础:C++的指针系统
C++的指针系统7.1 指针的基本概念7.2 指针变量的定义和使用7.3 指针所占内存空间7.4 空指针和野指针7.5 const修饰指针7.7 指针和函数7.8 指针、数组、函数7.1 指针的基本概念指针的作用: 可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址7.2 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;示例:int main() { //1、指针的定义 int a = 10; //定义整型变量a /原创 2020-05-14 11:15:11 · 199 阅读 · 0 评论 -
基础:C++的文件操作
文件的基本操作5.1文本文件5.1.1写文件5.1.2读文件5.2 二进制文件5.2.1 写文件5.2.2 读文件程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fs原创 2020-05-14 11:00:51 · 173 阅读 · 0 评论 -
基础:C++的多态体系
C++的多态体系4.7.1 多态的基本概念4.7.2 多态案例一-计算器类4.7.3 纯虚函数和抽象类4.7.4 多态案例二-制作饮品4.7.5 虚析构和纯虚析构4.7.6 多态案例三-电脑组装4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址下面通原创 2020-05-14 10:52:35 · 215 阅读 · 0 评论 -
基础:C++的友元
C++的友元4.4.1 全局函数做友元4.4.2 类做友元4.4.3 成员函数做友元在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元4.4.1 全局函数做友元class Building{ //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void goodG原创 2020-05-12 16:40:00 · 80 阅读 · 0 评论 -
基础:C++const关键字和this指针
C++对象模型和this指针4.3.1 成员变量和成员函数分开存储4.3.2 this指针概念4.3.3 空指针访问成员函数4.3.4 const修饰成员函数常函数:常对象:4.3.1 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB;原创 2020-05-12 16:29:27 · 249 阅读 · 0 评论 -
基础:C++的拷贝构造和析构函数以及深浅拷贝
C++的拷贝构造函数4.2.1 构造函数和析构函数构造函数:析构函数:4.2.2 构造函数的分类及调用4.2.3 拷贝构造函数调用时机4.2.4 构造函数调用规则4.2.5 深拷贝与浅拷贝4.2.6 初始化列表4.2.8 静态成员4.2.1 构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完原创 2020-05-12 16:20:12 · 181 阅读 · 0 评论 -
基础:C++的类与对象——封装
C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类4.1 封装4.1.1 封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一:原创 2020-05-12 16:05:10 · 345 阅读 · 0 评论 -
C++编写ATM机小程序
功能1、查询余额2、存钱3、取钱4、账户登录流程5、有退卡流程6、可以反复操作#include<iostream>#include<conio.h>using namespace std;char *password() //定义输入密码的函数{ int j; char *n=new char[4]; ...原创 2020-03-18 22:17:58 · 1114 阅读 · 0 评论 -
windows10 下 gcc/g++ 的安装教程
官网下载使用说明写程序的时候,有时候需要GCC的编译,在Windows下没有预装GCC编译器,所以需要进行手动安装,这里主要简介如何进行安装。下载安装MinGw我们安装Vs Code时候可以帮我们自动安装GCC编译器,但是我们只是使用GCC的话没必要大费周折安装Vs Code,我们可以直接利用MinGw进行安装比如出现了上图的下载异常,是因为URL丢失引起的若干包丢失不能下载,例如:libgmp-6.1.2-2-mingw32-dll-10.tar.xz,libmpfr-3.1.5原创 2021-04-03 10:13:56 · 11262 阅读 · 0 评论 -
求最大公约数:更相减损法和辗转相除法
更相减损法原理假设有两个数161和63,我们要求这两个数的最大公因数,不妨假定这个最大公因数为m,我们可以将较大的数161看成63+98,63与98的和161可以被m整除,其中63也可以被m整除,自然98可以被m整除;所以这个问题就转换为求98和63的最大公因数m(和上面m相等)将98看成63+35,其中63可以被m整除,和98也能被m整除,故35也可以被m整除;所以问题进一步转换为求35和63的最大公因数m(和上面m相等)同理转换为求 (63-35)=>28和35 的最大公因数然后转换为求原创 2021-01-22 10:56:21 · 2632 阅读 · 0 评论 -
深入浅出学算法011-众数
题目描述由文件给出N个1到30000间无序数正整数,其中1≤N≤10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数。求出它的众数及它出现的次数。输入输入文件第一行是正整数的个数N,第二行开始为N个正整数。输出输出文件有若干行,每行两个数,第1个是众数,第2个是众数出现的次数。2个数之间用2个空格隔开。有多个众数时,按照数从小到大的顺序输出。样例输入122 4 ...原创 2020-03-05 16:21:15 · 2465 阅读 · 0 评论 -
C语言:结构体——《手把手将你学C语言》
C语言结构体概论结构体的定义和使用结构体的声明结构体类型变量结构体的字节对齐结构体数组结构体指针概论结构体就是集成了若干不同组分的可自定义的数据类型。算是面向对象编程中类和对象的前身。例如一个学生机构体,可以包含一个学生的姓名,年龄,性别,学号,班级等信息。结构体的定义和使用结构体的声明struct 机构体名{成员列表};最后的分号一定不要忘记加。struct只是一个关键字,表明这是一个结构体,而结构体名才是真正的数据类型名,而且结构体名一般大写。struct STUDENT{ in原创 2020-10-05 10:23:48 · 142 阅读 · 0 评论 -
C语言:指针进阶——《手把手教你学C语言》
指针进阶动态内存分配1.概论malloc函数和free函数2.动态数组2.1动态数组的建立2.2动态数组长度的扩充和缩小3.多级指针3.1跨函数使用动态内存多级指针的使用直接返回被调函数的指针3.2通过指针引用二维数组4.函数指针动态内存分配1.概论对于普通的数组,其一大缺点就一旦定义以后就无法改变其大小容量。这其实本质上是静态内存的缺陷。静态内存:对于系统分配的内存就是静态内存也叫栈内存,比如定义的变量,函数等等都是由系统进行内存的分配。因而程序员自己无法灵活对其进行更改。值得注意的是静态变量和原创 2020-10-04 11:44:17 · 346 阅读 · 0 评论 -
C语言:指针基础——《手把手教你学C语言》
指针基础概论指针简介指针和地址指针变量指针变量的定义和初始化指针变量的定义:指针变量的大小:指针的表示和使用:指针变量的运算:指针变量的初始化:指针使用的优势指针函数传参指针代替一维数组概论时隔一年,又一次复习起C语言,感慨良多,渐渐才明白为什么国内外一众大学都选择C语言这个看似已经不太常使用的古老编程语言作为第一学习语言了。因为它太经典了,“凡是比C语言低级的,都不足以完成整个系统化程序编写,凡是高于C语言的,都来源于C语言”,对于初学者,基本的数据类型,编译器的接触,控制逻辑与控制流程语句,数组,原创 2020-10-03 15:19:40 · 939 阅读 · 0 评论 -
Problem J: 调用函数,输出Fibonacci数列的m项至n项
Problem J: 调用函数,输出Fibonacci数列的m项至n项Description定义递归函数fib(n),它的功能是返回第n项Fibonacci数,如fib(7)的返回值是13。 在主函数中,输入两个正整数m和n,调用该函数输出Fibonacci数列的m项至n项,共(n-m+1)项。 Fibonacci序列为:1 1 2 3 5 8 13 21…Input多组测试数据,每组输入...原创 2020-01-06 18:49:08 · 1078 阅读 · 0 评论 -
Problem H: 计算数列和2/1,3/2,5/3,8/5......
Problem H: 计算数列和2/1,3/2,5/3,8/5…Description有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…… 计算这个数列的前n项和。注意:C语言中整数/整数的结果为整数;需要用(float)强制转换为实型或乘以1.0后进行计算。Input输入一个正整数n。Output输出数列的前n项和(保留两位小数),输出格式可为:printf(“s...原创 2020-01-06 17:41:18 · 893 阅读 · 0 评论 -
Problem C: 求最大公约数
Problem C: 求最大公约数Description两个数能同时被一个数所整除,这个数就是公约数。例如,12和20的公约数有1,2,4。其中4是12和20的最大公约数。Input输入两个正整数,用逗号分隔。Output输出这两个数的最大公约数。Sample Input24,60Sample Output12HINT可以用辗转相除法计算最大公约数;也可以用穷举法求最大公约...原创 2020-01-06 09:13:22 · 719 阅读 · 0 评论 -
Problem B: 矩阵对角线求和
Problem B: 矩阵对角线求和Description输入一个n×n的整数矩阵,分别计算两个对角线的和。Input输入矩阵的阶数n(n≤10),另起一行后输入一个n×n的整数矩阵,每列数据用空格隔开,每行数据用回车分隔。Output输出主对角线和副对角线的和。Sample Input31 2 33 2 19 7 8Sample Output11 14#include...原创 2020-01-06 08:56:41 · 876 阅读 · 0 评论 -
Problem A: 调用函数,求三个数中最大数
Problem A: 调用函数,求三个数中最大数Description输入三个数,输出其中最大数。要求自定义函数max(a,b),其功能是找出并返回a,b中较大的数。在main函数中调用该函数,求三个数中最大数。如三个数变量a, b, c和变量m, m = max(a,b), m = max(m, c),这样m就是最大数了。Input多组测试数据,每组输入三个整数。Output输出三个...原创 2020-01-06 08:42:00 · 4670 阅读 · 0 评论 -
Problem F: 计票
Problem F: 计票Description美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜。各州的统计结果陆续出来了,你能帮忙统计下总得票吗?Input多组测试数据,每组先输入一个整数T,表示组数,然后每组先输入一个整数n,表示已经出结果的n个州,然后分两行分别是特朗普和西拉里的选票。每行n个整数.Output对于每组数据,输出特朗普和西拉里的总得票数,中间用空格隔开Sa...原创 2020-01-02 15:56:51 · 402 阅读 · 2 评论 -
Problem J: 零起点学算法113——统计单词个数
Problem J: 零起点学算法113——统计单词个数Description输入一行字符(少于80个字符),以回车结束,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。Input多组测试,输入一字符串,以回车结束。Output输出该字符串中单词的个数Sample InputThis is a c program.Sample Output5#in...原创 2020-01-01 11:38:03 · 903 阅读 · 0 评论 -
Problem I: 判断回文字符串
Problem I: 判断回文字符串Description输入一字符串(少于80个字符),所谓“回文:是指顺读和倒读都一样的字符串,如“XYZYX”。若是回文,以输出“Yes”,否则“No”。Input多则测试数据,每组输入一字符串(少于80个字符)。Output若是回文,以输出“Yes”,否则输出“No”。Sample InputXYZYXHOWAREYOUSample Ou...原创 2020-01-01 11:29:22 · 1070 阅读 · 0 评论 -
Problem G: 函数调用,统计数中'2’的个数
Problem G: 函数调用,统计数中’2’的个数Description定义并调用函数countdigit(number, digit),它的功能是统计整数number中数字digit的个数,如countdigit(10090, 0)的返回值是3. 在主函数中定义并调用该函数,统计任意一个输入整数中’2’的个数。Input多组测试数据,每组输入一个整数。Output输出该数中’2’的...原创 2020-01-01 11:09:26 · 541 阅读 · 0 评论 -
Problem O: 输出双层金字塔
Problem O: 输出双层金字塔Description输出双层金字塔Input输入一个大于2的整数Output输出n层的双层金字塔Sample Input25Sample Output **** * * *** ***** **************** ******* ***** *** *#include <s...原创 2019-12-31 16:32:49 · 1044 阅读 · 0 评论 -
Problem F: 调用函数,求a+aa+aaa+....+aa...aa(n个a)
Problem F: 调用函数,求a+aa+aaa+…+aa…aa(n个a)Description定义并调用函数fn(int a, int n),它的功能是返回aa…a(n个a),如fn(3,2)返回值是33。在主函数中,输入两个正整数a和n,求a + aa+aaa+…+aa…a(n个a)之和(假设数据都在整数大小范围内)。Input多组测试数据,每组输入两个正整数a和n。Output...原创 2019-12-31 16:13:22 · 2081 阅读 · 0 评论 -
Problem : 深入浅出学算法021-汉诺塔问题
Problem : 深入浅出学算法021-汉诺塔问题Description汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。Input输入圆盘数nOutp...原创 2019-12-31 15:42:47 · 1411 阅读 · 0 评论 -
Problem H: 恺撒加密
Problem H: 恺撒加密Description有一行电文,请将电文中所有字母按A→F,B→G,……,U→Z,V→A,W→B,X→C,Y→D,Z→E,a→f,b→g,……,u→z,v→a,w→b,x→c,y→d,z→e的规律译成密文,其他字符保持不变。Input多组测试数据,每组输入一行以回车结束的字符串(少于80个字符)。Output输出加密后的字符串。Sample Input...原创 2019-12-31 15:32:29 · 1299 阅读 · 0 评论 -
Problem : 深入浅出学算法022-汉诺塔问题II
Problem : 深入浅出学算法022-汉诺塔问题IIDescription汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。三根柱子分别标为a, b, c,...原创 2019-12-31 14:14:25 · 1509 阅读 · 0 评论 -
Problem L: 结构体:求最高分和最低分
Problem L: 结构体:求最高分和最低分Description定义一个学生结构体,含学号(字符型)、姓名、成绩(整型)。从键盘输入数字n(n<20),并输入n个学生的信息,输出最高分和最低分同学的信息。Input输入一个n,接着输入n个学生的信息。Output输出最高分和最低分同学的学号、姓名、成绩。Sample Input41001Li761002Zhang...原创 2019-12-28 21:12:20 · 1429 阅读 · 0 评论 -
Problem K: 结构体:计算学生平均分
Problem K: 结构体:计算学生平均分Description定义一个学生结构体,含学号(字符型)、姓名、2门课程的成绩。从键盘输入3个学生的信息,计算并输出每个学生的平均成绩。Input按学号、姓名、成绩1、成绩2的顺序输入学生信息Output输出每个学生的平均分Sample Input101Xue8790102Lin9892103Liu8983Sam...原创 2019-12-28 21:08:15 · 1612 阅读 · 0 评论 -
Problem J: 结构体:计算输入日期是该年的第几天
Problem J: 结构体:计算输入日期是该年的第几天Description定义一个结构体变量(包括年、月、日),输入一个日期,计算并输出该日是本年中的第几天.Input多组测试数据,每组输入年-月-日Output输出其在该年中对应的天数Sample Input2006-10-1Sample Output274#include <stdio.h>struct ...原创 2019-12-28 21:05:09 · 2508 阅读 · 1 评论 -
汉诺塔问题
汉诺塔问题#include<stdio.h>void han(int n,char A,char B,char C);int main(){ int n; printf("please input an number\n"); scanf("%d",&n); han(n,'a','b','c'); return 0;}void han(...原创 2019-12-28 18:46:33 · 124 阅读 · 0 评论 -
Problem D: 移数
Problem D: 移数Description有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下图:Input多组测试数据。每组2行 第1行输入2个整数n和m, 1 < m < n < 100 第2行输入n个整数Output输出移动后的数据Sample Input4 21 4 5 6Sample Output5 6 1 4#in...原创 2019-12-28 10:08:18 · 970 阅读 · 0 评论 -
Problem B: 判断素数的函数
Problem B: 判断素数的函数Description编写一个判断素数的函数,主函数中利用这个函数,打印出n与m之间的所有素数。Input多组测试数据,每组输入2个整数n和m,其中1 < n <= m <= 1000Output在一行输出n和m之间(包含n和m)的所有素数,中间用空格隔开,最后一个数后面没有空格。Sample Input2 14Sample ...原创 2019-12-28 09:50:54 · 1972 阅读 · 1 评论 -
Problem S: 检索大写字母
Problem S: 检索大写字母Description输入一行字符串,按字符串各字母出现次序输出字符串中所有出现过的大写英文字母(不能重复输出相同字母)Input输入一行字符串。Output输出字符串中所有的大写字母Sample InputFONTNAME and FILENAMESample OutputF O N T A M E I L#include <stdi...原创 2019-12-27 20:32:24 · 656 阅读 · 0 评论 -
Problem Q: 重组字符串
Problem Q: 重组字符串Description输入一个以回车结束的字符串,将字符串中的字符按ASCII码从小到大顺序重组后输出。Input输入一个以回车结束的字符串(少于80个字符)。Output将字符串中的字符按ASCII码从小到大顺序重组后输出Sample InputStudentSample Output#include<stdio.h>#inclu...原创 2019-12-27 20:18:31 · 818 阅读 · 0 评论