2022华南师范大学C++程序设计(918)硕士研究生考试最后提分tips第一期
2021/12/11 22:18:28
本文主要是介绍2022华南师范大学C++程序设计(918)硕士研究生考试最后提分tips第一期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
承蒙各位厚爱,我并不是什么大佬,可能很多人都不理解我为什么要无私分享这些资料,这不是帮助竞争对手吗,其实并非如此,因为有各位的关注,我将我的思路公之于众,很多我自己没有发现的错误,大家会发现同时好心的会向我指出来,大家每一次的指正这对于我来说都是一次提升,如果没有发博客,可能很多知识点我还是秉持则我错误的想法,可能到时候考完后看到分数都不知道为什么会那么低,可能就怪学校压分了,还有我也算半个程序员吧,之前在某厂实习半年,每天忙于业务开发,需求永远源源不断,而我自己又想对自己感兴趣的方向去做研究,所以就辞职考研了,希望回到校园这种没有那么忙于业务的环境,去静下心来研究研究。当然我准备的时间也比较晚,所以可能也是炮灰,~说远了,其实就是程序员天生对开源很感兴趣,对重复造轮子这种事情比较反感,然后再复习的时候找资料发现没有满意的,所以就决定自己做。
选择题
对于选择题其实918的难度是逐年上升的,分数是45分快到总分的三分之一了,所以建议大家多加重视,可以多看两遍【918c++选择和填空题归纳总结】点击,有时间的话可以自己画一下思维导图,把知识点连起来,我认为45分里面起码有18分以上是对概念的辨析,所以我觉得最有效的办法就是打开目录,看着每个小标题问自己,这个是什么,想不起来的就是你需要去复习的,这个阶段可能比较麻烦,但是这应该是解决这18分最有效的方法(我感觉这个比刷题快!!!),其次就是去刷题就是看上面那个总结,我感觉如果今年要往难的出,可能就是向一下这几个方向,如果大家觉得还有可以在评论补充:
- 指针和引用:其实这一块也是c++基础的难点
EX: int &a[3]; // 错误 int &*p; // 错误 int &&r; // 错误
- 指针和常量:这一块我们书上是分开写的,但是他们结合到一块就比较恶心了
EX: const int *p //整形常量的指针,它的值不能修改 int *const p //整形的常量指针,它不能指向别的变量,但值可以修改 const int *const p //整形常量的常量指针,它不能指向别的向量,也不能修改
- 友元:书上篇幅比较少,但是这个东西很容易搞混,所以要重视
- 运算符重载:概念比较难记忆,容易遗漏
//运算符重载函数可以是所重载的这个类的成员函数或全局函数 //运算符的重载不能改变运算符的运算对象数。 //一个一元运算符重载成成员函数时,该函数没有形参 //如果将重载函数设计成类的成员函数,它的形参个数比运算符的运算对象数少1
- 继承:这个不是难,是必考考点,记住这幅图就行
口诀:private权限永不变,public继承权不变,protect继承都protect,private继承都private。 - 动态联编和静态联编:这个把书上是没有怎么讲的,但是它又属于虚函数,是必考点之一,所以建议好好理解这两个
- 多重继承:这个也是没有讲的,但是属于继承的考点,可以留意一下
- 虚基类:这个书上没有的,但是考纲明文规定了这是考点,在考纲8.4 这里,所以必须会
这题我想说一下就是虚基类定义需要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编程题总结
这篇关于2022华南师范大学C++程序设计(918)硕士研究生考试最后提分tips第一期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享