土豆春季实习试题之惨烈教训

今天做土豆的春季C++实习生招聘试题,很多不应该错的错了,在此挑出一些重要的错误,供自己参考,以免以后再犯。

一、一道编程题,很简单,但是错了。

题目:

   输入一个数组,求它的逆序数组。如输入: 1 2 3 4,输出 4 3 2 1

它给出了框架,让填写部分代码:

#include<iostream>
#include <vector>
#include <string>
using namespace std;
class  example
{
public:static const vector<int>& reverse1(const vector<int>& r){vector<int>  temp(r.begin(),r.end());vector<int>::iterator vbegin=temp.begin();vector<int>::iterator vend=temp.end()-1;while(vbegin<vend){swap(*vbegin++,*vend--);}static const vector<int> temp2(temp.begin(),temp.end());return temp2;}
protected:
private:
};
void main()
{int d[]={1,2,3,4,5};vector<int> f(d,d+5);const vector<int> s=example::reverse1(f);copy(s.begin(),s.end(),ostream_iterator<int>(cout," "));
}

在上述的代码中,要注意以下几点:

1.

vector<int>::iterator vend=temp.end()-1;

一定要注意temp的最后一个元素是end()-1,而不是end(),end()指向量中最后一个元素的下一个元素。

2.当返回类型是指针或引用时,必须强调使用static局部变量,否则使用普通的局部变量,一旦函数调用结束,变量就会释放掉,使得指针或引用指向不确定的对象。

3.静态成员函数,可以直接使用类名直接调用。

二、

   int i=001+010+100;
   cout<<i<<endl;

输出结果: 109

分析:

001,010 都是以0开头的8进制数,分别等于1,8,因此上式等于109

举一反三:

  int i=0x001+0x010+100;
   cout<<i<<endl;

输出结果: 117

分析:

0X001,0X010 都是以0x开头的16进制数,分别等于1,16,因此上式等于117

三、

编程题:

对于一个数字A,它的“DA(DA为一位整数)”数PA为A中所有DA拼成的数。例如1566的PA数为66,因为它有两个6。现在有两个数A和B,DA分别是DA1和DA2,求解A和B的PA书PA1+PA2?  0<A,B<10^30

例如 A:1566,DA1=6;于是PA1=66

B:4231554,DA2=5;于是PA2=55,PA1+PA2=66+55=121

由于A,B的范围较大,实际上已经超过了long long 的范围,所以属于大数据相加。

#include<iostream>
#include <vector>
#include <string>
using namespace std;
class example
{
public:static const string& calc(const string& stra,unsigned int a,const string& strb,unsigned int b)//这里a,b为一位整数{int count_a=0;int count_b=0;int i=0,j=0;//计算stra中有多少个afor(string::const_iterator vbegin=stra.begin();vbegin!=stra.end();++vbegin){if ((*vbegin-'0')==a){count_a++;}}//计算strb中有多少个bfor(string::const_iterator vbegin=strb.begin();vbegin!=strb.end();++vbegin){if ((*vbegin-'0')==b){count_b++;}}int na=count_a;int nb=count_b;int length=na>nb?na:nb;int* pa=new int[length+1];//由于stra可能都是a组成的,一旦相加有可能越位。int* pb=new int[length+1];memset(pa,0,(length+1)*sizeof(int));memset(pb,0,(length+1)*sizeof(int));//计算pawhile (count_a--){pa[i++]=a;}//计算pbwhile (count_b--){pb[j++]=b;}for (int i=0;i<length;i++){pa[i]=pa[i]+pb[i];}int ncount=0;//相加的两个数的最终位数for (int i=0;i<length;i++){if (pa[i]>9){int temp=pa[i]/10;pa[i+1]+=temp;pa[i]=pa[i]%10;ncount=length;}else{ncount=length-1;continue;}}//至此pa就是最后的结果,但是pa是反着的。可以参考我的博客:<a target=_blank href="http://blog.csdn.net/xiamentingtao/article/details/46362577">http://blog.csdn.net/xiamentingtao/article/details/46362577</a>static string s1;//整数转字符串for (int i=ncount;i>=0;i--){char s=pa[i]+'0';s1.append(1u,s);//string& append (size_t n, char c);}delete[] pa;pa=NULL;delete[] pb;pb=NULL;return  s1;}
protected:
private:
};void main()
{const string vi=example::calc("12455555555555555555555555555",5,"45666666666666666666666666666666666666666666666666112",6);}


四、不能被重载为类的成员运算符的是哪些运算符?

 1. 并不是所有的操作符都能被重载。除了. ,.* ,:: ,? : ,sizeof,typeid这几个运算符不能被重载,其他运算符都能被重载2.  重载不能改变该运算符用于内置类型时的函义,程序员不能改变运算符+用于两个int型时的含义。
3.  运算符函数的参数至少有一个必须是类的对象或者类的对象的引用。这种规定可以防止程序员运用运算符改变内置类型的函义。
8.4 重载不能改变运算符的优先级。
8.5 重载不能改变运算符的结合律。
8.6 重载不能改变运算符操作数的个数。比如+需要两个操作数,则重载的+也必须要有两个操作数。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux-redhat替换yum网络源为centos网络源

2019独角兽企业重金招聘Python工程师标准>>> 1.为什么要替换 redhat系统使用yum命令安装软件时会出现This system is not registered with RHN. RHN support will be disabled. 原因是redhat的yum安装软件需要注册&#xff0c;是收费的。而centos的yum源是免费的。这…

计算机如何打开无线网络适配器,win7系统下网络适配器打不开怎么解决

通常情况下我们的电脑中都会有一个网络适配器&#xff0c;这是计算机联网的设备&#xff0c;不过最近有深度技术win7旗舰版系统用户却遇到了网络适配器打不开的情况&#xff0c;该怎么办呢&#xff0c;接下来系统城小编就给大家分享一下win7系统下网络适配器打不开的具体解决方…

cf13C Sequence(DP)

题意&#xff1a; N个数。a1...aN。 对于每个数而言&#xff0c;每一步只能加一或减一。 问最少总共需要多少步使得新序列是非递减序列。 N (1 ≤ N ≤ 5000) 思路&#xff1a; *一个还不知道怎么证明的结论&#xff08;待证&#xff09;&#xff1a;最后的新序列b1...bN中…

【华为OD机试真题2023CD卷 JAVAJS】求幸存数之和

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 求幸存数之和 知识点数组 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给一个正整数列 nums,一个跳数 jump,及幸存数量 left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为J+…

JavaScript编码规范

1. 变量命名规范 变量名包括全局变量&#xff0c;局部变量&#xff0c;类变量&#xff0c;函数参数等等&#xff0c;他们都属于这一类。 基本规范 变量命名都以类型前缀有意义的单词组成&#xff0c;单词首字母都需要大写。例如&#xff1a;sUserName&#xff0c;nCount。 前缀…

大数据相加(转载)

转载&#xff1a;http://www.du52.com/text.php?id411 在这个大数据的年代里&#xff0c;我们不可避免会遇到两个超越正常数据类型&#xff08;如int,long,long long&#xff09;的整数相加。显然两个大数据已经不能使用传统的加号直接相加&#xff0c;但是相加的原理仍然是不…

微型计算机中使用的光盘应属于什么媒体,计算机应用基础练习题

计算机应用基础一、判断题1、微型机中硬盘工作时&#xff0c;应特别注意避免强烈震动【是】2、在Windows中&#xff0c;文件夹或文件的换名只有一种方法【否】3、用户在连接网络时&#xff0c;只可以使用域名&#xff0c;不可以使用IP地址【否】4、在WORD2007中&#xff0c;您可…

七天学会SALTSTACK自动化运维 (3)

七天学会SALTSTACK自动化运维 (3) 导读SLSTOP.SLSMINION选择器SLS文件的编译总结参考链接导读 SLS SLS (aka SaLt State file) 是 salkstack 中非常基础和重要的一种配置文件. 重要程度仅次于minion和 master 的主配置文件(或者说是一种数据结构&#xff0c;使用yaml编写), 因…

qt-embedded-linux-opensource-src-4.5.3移植到s3c6410

首先要有配置好的环境&#xff0c;本文使用的编译环境如下&#xff1a; 主机系统&#xff1a;Ubuntu 9.10 主机编译器&#xff1a;gcc 版本 4.4.1 交叉编译器&#xff1a;arm-linux-gcc-4.0.1 软件资源&#xff1a;qt-embedded-linux-opensource-src-4.5.3.tar.gz qt-x11-opens…

C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

<p style"line-height: 19px; margin: 10px auto; color: rgb(75, 75, 75); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px;">有些成员变量的数据类型比较特别&#xff0c;它们的初始化方式也和普通数据类型的成员变量有所不同…

【Intellij Idea】设置JDK

1&#xff0c;File-->Project Structure 说明&#xff1a;可以设置整个工程的JDK&#xff0c;也设置每个modules的JDK,但是一般整个工程的JDK. 2&#xff0c;或者通过快捷键&#xff1a;ctrlaltshifts 转载于:https://www.cnblogs.com/august-shi/p/6655469.html

c#操作html dom元素,C#获取与修改HTML DOM元素信息

用C#和JavaScript交互首先要解决C#读取HTML DOM元素的问题。 在System.Windows.Browser命名空间下&#xff0c;有一个HtmlDocument、HtmlPage、HtmlElement等类&#xff0c;可以用来读取HTML DOM元素。其读取方法和JavaScript如出一辙。引用内容&#xff1a; //初始化一个docum…

Hibernate之工具类HibernateUtil

原创文章&#xff0c;转载请注明&#xff1a;Hibernate之工具类HibernateUtil By Lucio.Yang 1.最简单的工具类&#xff0c;实现SessionFactory的单例共享&#xff0c;session的管理 package com.cc.hibernate;import org.hibernate.Session; import org.hibernate.SessionFac…

c++读取文件–结束条件的判断

转载&#xff1a;http://blog.sina.com.cn/s/blog_623e3c050100neei.html 在使用C/C读文件的时候&#xff0c;一定都使用过eof&#xff08;&#xff09;这个函数来判断文件是否为空或者是否读到文件结尾了&#xff0c;也会在使用这个函数的过程中遇到一些问题&#xff0c;如不…

绘图用计算机配置要求,绘图笔记本电脑基本配置要求 绘图笔记本推荐

现在很多工业图、工程图都需要用电脑来话&#xff0c;比如CAD、PS、三维画图这些软件对电脑的配置要求还是比较高的&#xff0c;还有一些对色彩要求高的动画软件&#xff0c;那就更加需要配置了&#xff0c;下面小编就来简单说说绘图笔记本电脑最基本的配置要求以及绘图笔记本推…

关于dllimport的使用

最近做一个动态加载插件的项目&#xff0c;插件中的dll 主要是各厂商各型号的读卡器的通用类库&#xff0c;stdapi.dll&#xff0c;WltRS.dll&#xff0c;有的还有进一步封装的dll&#xff0c;主要是为了简化通用类库的操作。 这些类库都是用C语言&#xff0c;或者C来编写的&am…

如何在MVCsheet表单页面的后台取到页面自定义字段的值?

问题&#xff1a;<asp:HiddenField id"test" runat"server"/> 在前台加了这样一个隐藏元素&#xff0c;mvcsheet表单页面&#xff0c;如何在后台获取到值&#xff0c;直接使用 test.value一直是空的。 前台经过一系列判断处理写入该值&#xff0c;需…

BigDecimal.setScale 处理java小数点

BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数&#xff0c;默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位&#xff0c;如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位处理&#xff0c;2.35变成2.4 setScale(1,B…

C++的字符串分割函数

转载&#xff1a;http://blog.csdn.net/shanzhizi/article/details/17189267 C的字符串没有分割函数&#xff0c;因此需要自己写方便使用。而受到开发工具的影响&#xff0c;有很多用起来比较麻烦啦&#xff0c;下面这个比较不错奥。 用STL进行字符串的分割 涉及到string类的…

计算机无法正常更新,无法完成更新正在撤销更改请不要关闭你的计算机如何修复...

我们电脑开机的时候可能会遇到各种问题&#xff0c;比如就有用户发现电脑开机的时候&#xff0c;一直提示无法完成更新正在撤销更改请不要关闭你的计算机&#xff0c;等待了很长时间也进不去系统&#xff0c;遇到这样的问题该怎么办呢&#xff1f;不用担心小编给大家支招&#…