C++总结
文章平均质量分 63
DRondong
这个作者很懒,什么都没留下…
展开
-
171017—if嵌套试验(解一元二次方程)
#include<iostream>#include<cmath>using namespace std;int main(){ double a,b,c,x1,x2,x,m; cout<<"请输入a,b,c"<<end; cin>>a>>b>>c; m=b*b-4a*c; if(int(a==0&&b!=0)) x=-(c/b);原创 2017-10-17 22:58:30 · 916 阅读 · 0 评论 -
171104—数组开张【一维数组&指针数组】
前言:断断续续地往前走,总算进入数组了。。楔子:回忆我们在学习函数的时候发现Cpp有一个很人性化的设计是你可以通过一个语句定义一个“函数类型”,然后就可以以此很方便地定义许多函数,另外一个有相同效果的是你可以将一个函数名定义成很多不同类型的函数,因为它们都需要做同样的事情。今天,我们进入了数据的批量化处理时代。。 (好了其实楔子就是用来水的)一.数组:由 一定数量的 同类型元素 顺序排原创 2017-11-04 23:03:31 · 270 阅读 · 1 评论 -
171114—程序学习:猜数游戏。
这题自己折腾很久了。没搞出来。看了参考的程序,当时学习了,存点自己的考虑。 原题: 猜数游戏。玩家想好了一个 1~1000 之内的整数,由计算机来猜这个数。如果计算机猜出的数比 玩家想的数大,则玩家输入1;如果计算机猜出的数比玩家想的数小,则玩家输入-1;这个过程一直进行到 计算机猜中为止,玩家输入0。一针见血的问题: 怎么实现多次输入数值加回车?你之前写的程序可是只能玩一次就挂掉了。。!原创 2017-11-14 20:38:02 · 2799 阅读 · 0 评论 -
171128——程序练习:动态数组申请&数组元素值倒置
很久没来写总结的感觉。上个周末好歹有时间看了看数组剩下的快要烂尾的知识点。今天做程序练习。 这个程序在完成这样一件事情: 由用户给定一个数目,而后由此申请动态空间得到相应长度的数组,由随机数函数赋值得到一组数字,之后把这组数组倒置排序。在做倒置的时候考虑到实质是首尾互换,于是不可避免要遇到奇数偶数难同归一路的情况,那就干脆分类讨论。这个思想自己觉得很可以保留。 代码:#include<iost原创 2017-11-28 22:39:15 · 359 阅读 · 0 评论 -
171121—数组程序练习(随机数,排序,作为传值参数)
一.随机数函数: 在库函数中有: rand() 函数可以用来生成随机数,其原理为线性同余方程,因此其实际生成的数字:X=(参数i*n+参数j)/模M;需要三个参数来确定,实际是“伪随机数”,由百度发现,真正意义上的随机数是认为难以模拟的,真正的随机数必须涉及物理现象如“抛掷硬币各面朝上的次数”等。rand()函数需要头文件 cstdlib; 在调用rand函数之前,需要对其进行初始化,也就是原创 2017-11-21 23:10:31 · 277 阅读 · 0 评论 -
171211—链表书写&对类(book题)的润色
一. 链表不知道是啥时候的事情了,之前自己看完书上例题后,按着自己理解的思路试着写了个链表。 每次都在三个之后停止运行。 调试后有: 之前用手画模拟流程的时候没找出明显错误。今天干脆再试一次。最后发现问题出在这里: 在第一次(头指针找到第一个链节,且s生成第二环时),第一节的next指针是没有指向的,即p->next无物所指。实际上从第一节开始,这个链表就已经断掉了。 (第一次执原创 2017-12-11 13:54:47 · 693 阅读 · 0 评论 -
171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
又见老师编程能力。。。 每次上机,自己之前看过的、想了想没有很具体的思路的题目,到了老师那都是一个评价: “这很简单啊。” ………一.如何对一个数组排序,并且输出时能够同时输出其原数组的下标?初步考虑的时候想用二维数组(a[][]不是有俩下标嘛?换一个留一个当储存啊),仔细想想这属于想偏了。 忽视了其存储结构,也完全没想过怎么把下标输出来。老师只提了一句,这一句就足够惊醒梦中人了:你用俩数组原创 2017-11-22 23:53:21 · 1252 阅读 · 1 评论 -
171204—对char型数据输入问题的解决
一. 之前在刚刚学过结构体之后,初次编程遇到了char型变量无法(整体)输入的问题。 最初的尝试是直接定义字符指针,然后用cin直接输进去,真是异想天开。问度娘之后得知,首先,如果想要在控制台里由I/O流读取字符串的话,用来装它的容器得是个字符数组,(把你的指针扔到一边去。。)其次,cin是不够的。需要使用库函数 gets() 。本函数可以无限读取,不会判断上限,所以程序员应该确保buff原创 2017-12-05 21:46:50 · 1069 阅读 · 0 评论 -
171216—几种经典加密方法。
送走了四级考试之后,接下来可以好好学习了。此篇只打算梳理几种加密方式的大体思路,具体公式不熟,不在整理范围内。Caesar加密即凯撒密码,基础的基础,核心是“k”偏移量。 其原理在于,按既有字母表顺序,以k为偏移量,使用一个字母后固定数值位的另一个字母代替该字母。例如:取k=3时,A应由D取代,整个字母表按序为“DEFGHIJKLMNOPQRSTUVWXYZ ABC”Vigenere密码维原创 2017-12-16 21:15:10 · 17291 阅读 · 1 评论 -
171226—类继承机制练习(险些烂尾的程序)
按:在学校而言,学好编程。无关于做好预习,认真听讲,甚至无关于课后复习,你的高度取决于你敲过多少代码,犯了多少错误,并为解决这些问题脱了多少头发。。。Cpp学习进入面向对象之后写的首个好歹能拿出手的程序,因为种种原因在手里烂了四天,差点放弃。 因为日常使用Dev,时不时抽个疯什么的我都习惯了。但这次跟我玩了个大的。 找不到明显的错误,而这个报错一般出现的原因是exe黑框没关,但是这是首次编译原创 2017-12-27 00:15:36 · 329 阅读 · 1 评论 -
171201—备忘录
难得终于能有一个完整的可以完全用来学习的周六(为啥不说周末呢?因为明天全天都没法。。)index: 一.一个 char 型能存储几个字符? char数据所存的东西实际是ASCII,一个数字而已。一个char只能放一个字符。 此疑问来自于对字符数组和字符指针复习时,当定义一个字符型数组时,每个元素只能放一个字符。 比如:char c=‘aasdjiasknnfi’原创 2017-12-02 20:48:53 · 216 阅读 · 0 评论 -
180111—【字符】字符变量、字符数组以及它和指针乱七八糟的关系。
字符变量赋值: 首先需要明白,char型变量存放的是一个ASCII码值,是个数,但又不是个数。啥意思呢? 我们都知道在程序里给一个char变量赋值的话,以下写法是教科书级的:char a=‘c’; //定义了一个char型变量a,它的值表示小写字母“c”。但由其实质出发的话,我们可以发现,这里的赋值可以不写成‘ c’这样的形式: 上述代码中,变量b的赋值是直接用了数字,即ASCII码值,可原创 2018-01-11 23:03:13 · 730 阅读 · 2 评论 -
171228—虚继承&虚基类、虚函数、纯虚函数&抽象类 这一家人
虚继承&虚基类定义:虚继承:在继承定义中包含了virtual关键字的继承关系,它描述了一种无关于公有、私有、保护继承的继承方式。 虚基类:在虚继承体系中的通过virtual继承而来的基类,即被虚继承的基类。 但是! 没有任何类天生就是虚基类。 需要注意的是:class B: public virtual A 其中A称之为B的虚基类,而不是说 A 就是个虚基类,因为 A原创 2017-12-29 11:24:11 · 531 阅读 · 0 评论 -
171230—重载、覆盖、隐藏
按:一入此门深似海…… 此篇仅是个人的一些理解。希望能把自己之前遇到的问题的思考和后续研究整理出来。 此诸概念在面向对象的编程范围内讨论。重载:(overloaded)抄百度:重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。也就是说,重载,是在同一个类中,多个函数共用一个函数名,但由于其参数的不同,各函数可以原创 2017-12-30 13:44:11 · 233 阅读 · 0 评论 -
171025—例题分析 & 思维拓展
一. 今日习题课。所谓习题,无非是出一些在实际操作中几乎用不到的东西来考察你对基础知识的掌握程度。 比如: I think that that that that that boy writes is right 语法上玩得绝妙,但有脑子的人都不会这么说话。 读代码也是种必备的能力哇,所以… 看题:inti,j;for(i=0,j=5;i=j;) //坑一原创 2017-10-26 10:54:15 · 336 阅读 · 0 评论 -
180108—【复习】:两个典型题的自省。
按:此篇无甚营养,读者自决去意。 前天晚上信了联场的邪。。系统自带电脑管家推送让我更新驱动,脑子一短路就全更了。包括无线和有线两个网卡驱动。昨天早上开机,发现连不上网。追悔莫及,又信了客服的邪,瞎胡乱搞折腾一上午才让我卸驱动重装。于是乎,卸装卸装卸装。。一上午,未果。索性拿去找学长。诊断症状,决意重刷系统。忆当初无知,分区,文件放置多有不合理,近日正烦闷,此为良机。刷之,因SSD之故中途坎坷原创 2018-01-08 23:33:12 · 286 阅读 · 0 评论 -
171102—素数寻找:我爱程序,程序节约生命
今天上导论的时候一时兴起(老师讲到关于素数和合数用于加密)。想写个程序找出前n个自然数中的所有素数。 第一次意识到“程序节约声明的道理。” 我忏悔: 好多天只看书没动手自己写代码的后果就是很多地方都生疏了。连for语句括号里要分号还是逗号都搞不清了。。 原码:#include<iostream>using namespace std;int main(){ int x,s,原创 2017-11-03 14:56:29 · 254 阅读 · 0 评论 -
171111—函数练习:梯形法求积分
程序练习是用来检查前期知识掌握情况并复习的好办法。 坦白:双十一肯定要狂欢一把对不对。所以这篇总结是第二天上午写的。。 原题: 考虑把下面三个函数做为底层函数,定义一个TN积分函数,以函数指针作为参数来调用它们。 复合函数是吧。。问题一:当一个函数需要另一个函数来做参数的时候,另一个函数的参数怎么办?答:一起写在“一个函数”的形参表里。理解函数的头部是主函数与子函数的接口,写在形参表里相原创 2017-11-12 11:39:17 · 3380 阅读 · 1 评论 -
171016—if与switch语句&初次实验。
今日进入程序控制结构部分。 所有程序都只能包含三种控制结构: 顺序结构、选择结构和循环结构。选择控制: 1.if语句: if语句有两种形式:一个分支的if语句 和 两个分支的if-else语句。 1) if (表达式) {语句块; } 表达式为逻辑表达式,【若果是其他类型的表达式,则将原创 2017-10-16 22:58:16 · 651 阅读 · 0 评论 -
171018—if程序。
今日授课以结束for语句。 书还没细致地看。 写了几个课后作业: 1.用if语句求三数中的最大数(逻辑式的等价转化是最有味道的东西):#include<iostream>using namespace std;int main(){ cout<<"请输入三个整数"<<endl; int a,b,c,max; cin>>a>>b>>c; if (a>b) m原创 2017-10-18 22:53:59 · 317 阅读 · 0 评论 -
171019—循环语句实际操作
一。首先,对昨天的素因数分解,犯了低级错误。 不过,犯错不是学习过程中必经的步骤之一吗? 因为今天晚上犯的错连起来可绕地球一圈。。 (嗯,真不害臊。) i%n 是i/n之后的余数。//素因数分解。#include<iostream>using namespace std;int main(){ int n,i; double m; cout<<"输入正整数n=";原创 2017-10-19 23:17:11 · 289 阅读 · 0 评论 -
171027—函数自学【知识点初识二】
一.向组织承认错误,昨天被一大堆有的没的的乱七八糟的事缠住周身,委实磨去学习所需的静心,更别提坐下来敲一篇总结(时间都没有。。),只是稍微看了下书。为学习而学习的嫌疑过大。。二.函数参数的传递: 前言:上回书说得好生不正经。。且有偏颇。看书不看小标题的下场。。 上次总结的很多内容仅仅是很小一部分的特性,而非共性。 对函数的参数而言,分为三种:传值,指针,引用。(又跟变量惊人相原创 2017-10-27 22:55:05 · 264 阅读 · 0 评论 -
171028—经典递归问题:汉诺塔(自写分析)
楔子:高中搞奥数的时候就对这种递归的东西很头大。总是想几步就感觉脑子内存已经溢出了。。昨晚最初看到这个问题还是没搞明白,书上给的代码看了就更糊涂。今早趁精神好想明白了这个问题的解决办法(所谓递归)。但还是没看懂代码。那就自己写一遍呗,果然奏效。原理: 递归的一个特点是,把很大的n阶问题一步步分解,直到成为一个可以很容易解决的小问题。 想想斐波那契,计算n项时需要n-1和n-2,这就需要n-2和n原创 2017-10-28 09:57:17 · 294 阅读 · 0 评论 -
171020—Fibonacci数列&失败的素数完全分解。
一.Fibonacci:计算兔子数比兔子本身还要烦人。。 一开始的时候很困惑怎么用有限个变量单元去不断替换存储新值以完成迭代。 后来感觉可以就直接上了。 哪有那么多十足把握。。#include<iostream>using namespace std;int main(){ int i,n; long double a0=0,a1=1,a2; cout<<"原创 2017-10-20 23:05:35 · 236 阅读 · 0 评论 -
171106—错题本
一.有关函数类型定义。typedef int functype(参数表)由这一语句定义之后得到的函数类型(名)“functype”有且只有两个作用:以“functype max,min;”形式进行函数声明。以“functype *p”定义指向某一类型函数的指针。!!!不能用来定义函数!!!!可想而知,这样定义一个函数类型出来之后,这里的形参只提供类型,而不提供参数名。所以不可能用类似定义指针原创 2017-11-05 23:34:24 · 347 阅读 · 0 评论 -
171021—用do...while和if完成素数完全分解。
此篇填上昨天的坑。 在昨晚之前,对这个问题有一下几点考虑: 1.这不是简单找n的因数,那样的话我们只需要让i递增或递减,遍历一次,和条件的输出就好。这次是要求其所有的质因子,而且按个数输出。这里有两点考虑:必须保证是质数,输出2而不能输出4;如何让质因子都输出各自该有的个数?即:8 如何输出3个2?这两个问题可以一同解决,只需设置一个量,去记录每做一次余数为0的除法后的商x,让x而非n去继原创 2017-10-21 19:15:39 · 904 阅读 · 0 评论 -
171022—素数完全分解的另外循环 & 剪刀石头布!
一.对昨天的素数完全分解做了小改动,试了试其他循环语句。 之前保留了一点想当然的想法,认为在原结构中(x在最后位置得出值)判断语句应该放在后边。 今天尝试了for语句和while,发现这想法纯属多余。 这时给x赋了个初值。而最后的语句空下。运行结果正常。 while语句,运行也正常。 P.S. 切记想当然和人为敏感。。二.剪刀石头布。 这是书上一道习题。 要求:s表示剪刀原创 2017-10-22 22:55:11 · 311 阅读 · 0 评论 -
171013—引用&常量
一.引用 引用即小名、别称;定义格式为: *类型 &引用名=对象名(此处 & 为引用变量标识符。)*该操作是对“已存在的变量”再起另外一个名字。需要满足两个条件变量已存在;2. 定义 引用名时需要保持和对象名同样的类型。 int n=10; int &m=n; cout<<m<<endl; return 0; 在引用之后,这个空间就即叫m原创 2017-10-13 22:44:26 · 337 阅读 · 0 评论 -
171108—内联函数和重载函数&宏定义。
此篇填上函数新课部分欠下的债。 一.内联函数。 以“inline”定义,存在意义:以空间换时间。 在常规情况下,我们把一个算法封装在一个子函数中,当在主函数需要这个算法时,就调用子函数。 这一“从主函数到子函数”的过程是花费时间的。如果是循环调用很多次。时间浪费极大。 为节约时间,当我们用inline定义函数时,在主函数之中调用该函数时,编译器会自动把那个函数的代码抄到主函数的相应位置,即原创 2017-11-08 21:07:32 · 327 阅读 · 0 评论 -
171014—表达式&运算符&相关
一.表达式: 定义:表达式是由数据和运算符组成的,按求值规则,表达一个值的式子。据说实用相当灵活。 分类:算数表达式,逻辑表达式,赋值表达式,条件表达式。(今日仅稍微整理前两种)。 二.运算符: 运算符是以简洁的方式表达对数据操作的符号。又称操作符(我觉得这种叫法更能体现这个概念在C++语言中的普遍性) 由之前(&)我们已经认识到,运算符具有多义性,其具体的表达意思需要看语境 不原创 2017-10-14 21:18:11 · 336 阅读 · 0 评论 -
171023—各进制数输出:二进制转换&用格式控制符输出八,十,十六进制数
插一句:昨天做的“剪刀石头布”忘掉了双方出同一种(即平局)的可能。只需在原有的if …else语句之中再内嵌一个if就好。正文原题:输出一张数表,内容是1~126各个数字的十进制,二进制,八进制,十六进制。 初生牛犊啊。。第一反应是:这个计算机应该会自己做吧?我用那什么叫啥来着。。格式控制符就好了吧?一翻书,格式控制符有是有。。只有十进制(dec),八进制(oct),十六进制(hex)。没有二进制原创 2017-10-24 11:13:50 · 3193 阅读 · 0 评论 -
171015—表达式&数据的输入输出
一.表达式: 表达式是由数据和运算符组成的,按求值规则,表达一个值的式子。切莫拘泥字面! - 算数表达式 - 逻辑表达式 - 赋值表达式 - 条件表达式 - 逗号表达式(啥?) 1.算数表达式:有算数运算符和操作数组成,结果为算数值。(反应计算。) 类型转换: 在计算中,结果值的类型由操作数的类型决定(例见昨日。)。当操作数类型不同,则发生类型转换。原创 2017-10-15 22:44:42 · 470 阅读 · 0 评论 -
171024—函数自学【知识点初识】
楔子: 看书,关于函数的很多概念、定义、描述,使我觉得:如果我们说,之前研究的维度更多停留在数据(分子)层面(抛去之前的语句相关),那么函数就很像是在数据的层面上向上跨入了一个更高维度,它保留了很多当时在学习变量时接触的类似定义,但又有发展。 它的很多定义让人觉得耳目一新,它的思维方式很有味道。之前大概是最后一次写类似知识点整理类总结的时候提过,总结不应该仅仅是知识点的教材式罗列。而应该在绝大意原创 2017-10-24 22:56:57 · 625 阅读 · 0 评论 -
171110—题:【递归改写】
今天终于把断断续续考虑了一个星期的题想了出来。 原题是:将print函数改写成等价的递归形式。#include<iostream>using namespace std;void print(int w){ for(int i=1;i<=w;i++) { for(int j=1;j<=i;j++) cout<<i<<" ";原创 2017-11-11 10:30:39 · 781 阅读 · 0 评论 -
171029—函数自学【函数地址和函数指针】
前言:本篇多数说法来自个人理解。在理论、逻辑上学到现在,发现了函数一个和之前接触的变量相比最大的不同之处:函数的调用只要提供函数的入口地址。 复习一下:int a;int & b=acout<<a;变量名访问cout<<b;引用名访问cout<<&a;取变量地址cout<<*(&a);间址访问再看:int func() func() &func//取函数地址,但函数只要你提供地址它就可原创 2017-10-30 19:51:54 · 731 阅读 · 0 评论