承蒙各位厚爱,我并不是什么大佬,可能很多人都不理解我为什么要无私分享这些资料,这不是帮助竞争对手吗,其实并非如此,因为有各位的关注,我将我的思路公之于众,很多我自己没有发现的错误,大家会发现同时好心的会向我指出来,大家每一次的指正这对于我来说都是一次提升,如果没有发博客,可能很多知识点我还是秉持则我错误的想法,可能到时候考完后看到分数都不知道为什么会那么低,可能就怪学校压分了,还有我也算半个程序员吧,之前在某厂实习半年,每天忙于业务开发,需求永远源源不断,而我自己又想对自己感兴趣的方向去做研究,所以就辞职考研了,希望回到校园这种没有那么忙于业务的环境,去静下心来研究研究。当然我准备的时间也比较晚,所以可能也是炮灰,~说远了,其实就是程序员天生对开源很感兴趣,对重复造轮子这种事情比较反感,然后再复习的时候找资料发现没有满意的,所以就决定自己做。
对于选择题其实918的难度是逐年上升的,分数是45分快到总分的三分之一了,所以建议大家多加重视,可以多看两遍【918c++选择和填空题归纳总结】点击,有时间的话可以自己画一下思维导图,把知识点连起来,我认为45分里面起码有18分以上是对概念的辨析,所以我觉得最有效的办法就是打开目录,看着每个小标题问自己,这个是什么,想不起来的就是你需要去复习的,这个阶段可能比较麻烦,但是这应该是解决这18分最有效的方法(我感觉这个比刷题快!!!),其次就是去刷题就是看上面那个总结,我感觉如果今年要往难的出,可能就是向一下这几个方向,如果大家觉得还有可以在评论补充:
EX: int &a[3]; // 错误 int &*p; // 错误 int &&r; // 错误
EX: const int *p //整形常量的指针,它的值不能修改 int *const p //整形的常量指针,它不能指向别的变量,但值可以修改 const int *const p //整形常量的常量指针,它不能指向别的向量,也不能修改
//运算符重载函数可以是所重载的这个类的成员函数或全局函数 //运算符的重载不能改变运算符的运算对象数。 //一个一元运算符重载成成员函数时,该函数没有形参 //如果将重载函数设计成类的成员函数,它的形参个数比运算符的运算对象数少1
这题我想说一下就是虚基类定义需要virtual关键字,但是它是不一定需要使用虚函数的,不要把关键字和虚函数搞混了
对于编程题,基本上每年都会考个文件操作, 所以这部分还可以重点看看,把文件操作背熟了,这10分就是送的了,其次我想说的就是一些我的个人观点了,我觉得编程题手写,我们是可以有很多发挥空间的,同时老师也是可以中看出一个人写代码的好坏,因为每个人写代码的思路是不一样的,面对同一个问题有的人可以用递归或者其他比较好的方法去解决,而有的人只会暴力(这个人就是我本人了),当然这个并不会决定你的分数,但是我想说的是,那么多人,改卷老师要一份份去看代码,你要是用的方法比较常见,老师一眼就看的出来那还好,如果你的代码比较长,那改卷人需要去仔细读你的逻辑,最后要是发现还是错的,这时估计就是零分了,所以我觉得编程规范是一个很好解决这个问题的办法,首先注释是一个非常好的东西(虽然平时不会去写,但是考试嘛,拿分嘛,不寒蝉),通过注释把每个函数的purpose写出来,其次在每个判断语句和循环语句前也把purpose写出来,这样可以提高阅卷人的效率,可能他看你的purpose对了,代码中的小瑕疵就不看了,第二我觉得编程规范中比较重要的一点是统一命名,命名规则我也在之前的博客中提过,【小驼峰命名法】点击这是我之前实习时公司的命名规则,可以参考,最后我以2021年编程题第一题为例
#include <iostream> using namespace std; //1. 编程找出满足ABCD*E=DCBA的互不相同A B C D E的五个数字 //互不相同A B C D E //purpose:bdifferent这个函数是来判断ABCD是否各不相同 bool bdifferent(int aryList[4]){ /* 这里采用了数组的方式来表示nArr[0]就代表A,nArr[1]就代表B,nArr[2]就代表C,nArr[3]就代表D 代码中用了最朴素的方式来看ABCD是否各个都不同。这里提供另一种思路,但时间复杂度高不如最朴素的 for(int i=0;i<4;i++){ int j=0; for(j=i;j<4;j++){ if(aryList[i]==aryList[j]){ return true } } } return false */ if(aryList[0]==aryList[1]||aryList[0]==aryList[2]||aryList[0]==aryList[3]||aryList[1]==aryList[2]||aryList[1]==aryList[3]||aryList[2]==aryList[3]) return true; return false; } //purpose:打印ABCDE void aryprint(int aryList[4],int nE){ cout<<"ABCDE为:"<<endl; for(int i=0;i<4;i++){ cout<<aryList[i]<<" "; } cout<<nE<<endl; } int main() { int aryList[4];//创建一个数组用于存放ABCD for(int i=1000;i<9999;i++){//循环获取全部的四位数 int y = 3;//用于方便表示数组下标arrList[3]就是表示D int nTmp1 = i;//获取当前四位数 //purpose:这个循环用于将i去摸获取最后一位数放入数组中,然后对nTmp1除十,直到四位数都放入数组中 while(nTmp1!=0){ aryList[y]=nTmp1%10; nTmp1/=10; y--; } //purpose:判断当前数组ABCD是否各不相同,如果相同则continue进入下一个循环,不同则继续执行下面的代码 if(bdifferent(aryList)){ continue; } //purpose:将数字倒序放入nTmp3,nTmp3的数表示DCBA int nTmp2 = i; int nTmp3 = 0; while(nTmp2!=0){ int nNum=nTmp2%10; nTmp2/=10; nTmp3 = nTmp3*10 + nNum; } //purpose:模拟ABCD*E=DCBA for(int e=1;e<=9;e++){ if((i*e)==nTmp3){ aryprint(aryList,e); break; } } } return 0; }
以上内容是第一期,如果对大家有用的话在做第二期吧
发起一个投票吧,下一篇博客大家是想看19年试卷解析还是918编程题总结