




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.用最简单的方法判断一个数是否为2的幂(华为笔试)最开始以为是编程题就写了个函数:boolf(intx)while(x%2=0)/判断是否为奇数x/=2;/为追求效率可以用x=1return!(x1);为了追求更高点点的效率可以把除法运算用右移代替,判断用位运算代替,就有下面代码:boolf(intx)while(x&1)=0)/就是判断x的末位是否为1x=1;return!(x1);后来发觉这题其实有更简单的方法,请看下面问题:如何求一个数的二进制表示中1的个数?intfunc(x)intcount=0;while(x)count+;x+=x&(x-1);/这个操作能使x的二进制表示中的1的个数减1returncount;这样判断一个数是不是2的幂代码就很简单了:(也就是判断它里面只有一个1,哈哈)boolf(intx)return!(x&(x-1);2字符串逆置(腾讯面试)题目本身简单,但是有的是要求不能malloc新的内存空间,这样的话你就得在原来的串上进行操作就像下面的代码:voidreverse(char*ch)inti,len;chartmp;len=strlen(ch);for(i=0;ilen/2;i+)tmp=chi;chi=chlen-i-1;chlen-i-1=tmp;有的则是要求逆置到另外一段内存空间里,这样你就需用malloc了,而且注意函数的声明形式:如果用纯c语言,恭喜你,你得用到指针的指针了:intreserve(char*a,char*b)/返回值代表操作成功与否c+的话就可以用引用:intreserve(char*&a,char*&b)3背包问题、约瑟夫问题、有序表合并(华为第4面机测)从一摞摞数里比如从20个数12,24,22,58,47,11,19,28,33,67,81,34,27,41,50,36,88,51,21,14中挑选出若干个数使它们的和等于100.输出所有可能的选法。解法:20个数放到a20数组里,然后b20数组里面放0或者1.然后再sum=a0*b0+a1*b1+.+a19*b19当b=1时,说明下标为i的那个数a被选中了,否则说明a这个数没有被选中于是用一个20位的二进制数k来表示b数组,然后将k从0.0(20个0)到1.1(20个1)遍历一遍(for循环),穷举出所有解法。代码如下:#includeusingnamespacestd;constintN=20;constintM=100;voidmain()intaN=12,24,22,58,47,11,19,28,33,67,81,34,27,41,50,36,88,51,21,14;intbN;/放的0,1.intcN;/掩码intk,sum;/下面是让c里面保存的数第i位为1,其他位都为0c0=1;for(inti=1;iN;i+)c=ci-11;k=(cN-10;k-)sum=0;for(intj=0;j0)?1:0;sum+=aj*bj;if(sum=M)cout以下数字相加和为Mendl;for(intm=0;mN;m+)if(b =1)couta ;couthello();事实是输出了hello,虽然在调用p-hello();之前已经给p赋值为NULL了(即0值),但是p依然可以调用test类的函数。我对此的解释是只要是test类的成员函数和成员变量放在不同的存储区(事实上也是如此),只要是test类型的指针就能调用test的成员函数,前提是函数里没有涉及到成员变量。比如下面的代码编译无误但运行会报错:#includestdio.hclasstestprivate:inti;public:test()i=1;voidhello()printf(%dn,i);voidmain()test*p=newtest();p=NULL;p-hello();如果将p=NULL注释掉就无误,就会输出1.注意:另外上面两个例子中如果把p=NULL换成deletep;也会有相似地效果,第一个依然输出hello,第二个输出个随机值(不报错)。大家不妨调试看看。(1)C+的构造以及析构顺序#includeusingnamespacestd;classApublic:A()coutAendl;A()coutAendl;classB:publicApublic:B()coutBendl;virtualB()coutBendl;classC:publicBpublic:C()coutCendl;C()coutCendl;voidmain()A*a=newA();B*b=newB();C*c=newC();A*d=newB();A*e=newC();B*f=newC();deletea;cout-n;deleteb;cout-n;deletec;cout-n;deleted;cout-n;deletee;cout-n;deletef;cout-n;这个代码在DevC+下顺利通过,在VC6下有点问题,大家自己看结果。这里要注意几点的是:首先,A*类型的指针不能赋给B*类型指针(强制转换也不行),不过有两个例外,一个是void*指针,另一个是当A和B有继承关系时。其次只能将子类类型指针赋值给父类(上转型),而不能将父类对象地址赋给子类指针,因为子类默认包含了父类的所有成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物冻干食品创新创业项目商业计划书
- 罐头亲子体验行业跨境出海项目商业计划书
- 纳米技术在建材防污中的应用企业制定与实施新质生产力项目商业计划书
- 紫外线防护皮肤检测仪行业跨境出海项目商业计划书
- 社区亲子活动创新创业项目商业计划书
- 红枣黑糖暖身酒企业制定与实施新质生产力项目商业计划书
- 面试线上模拟测试题及答案
- 2025年护理学副高电子题库及答案
- 佛山公司税务知识培训班课件
- 南阳市师生安全知识培训课件
- 第二课 教室环境我布置-期初扮新家
- 【MOOC】英语写作-西北工业大学 中国大学慕课MOOC答案
- 台球厅员工工作流程
- 5203措施巷作业规程
- 小班歌唱活动《小手拍拍》
- 转租房转租合同
- 147-2020-PM01 安全防护及维修技术文件应用学习通课后章节答案期末考试题库2023年
- 东华大学画法几何及工程制图第2章平面
- 油气管道保护工(中级)题库(516道)
- JJF 1012-2007湿度与水分计量名词术语及定义
- GB/T 25729-2010粮油机械撞击松粉机
评论
0/150
提交评论