猎豹移动(金山网络)2015校园招聘(c++project师)
1.已知类MyString的原型为:
class MyString{
public: MyString(const char *str=NULL);//普通构造函数
MyString(const MyString);//拷贝构造函数
~MyString(void);//析构函数
MyString&operator=(const MyString);//赋值构造函数
private:char *m_c_data;//用于保存字符串
};请编写MyString的上述4个函数。
程序猿面试宝典p112
class MyString
{
public:
MyString(const char *str=NULL);//普通构造函数
MyString(const MyString &other);//拷贝构造函数
~MyString(void);//析构函数
MyString&operator=(const MyString &other);//赋值构造函数
private:
char *m_data;//用于保存字符串
};
MyString::MyString(const char *str)//构造函数
{
if(str==NULL)
{
m_data=new char[1];
*m_data='\0';
}
else
{
int length=strlen(str);
m_data=new char[length+1];
strcpy(m_data,str);
}
}
MyString::~MyString(void)//析构函数
{
delete [] m_data;//因为m_data是内部数据类型,也能够写出delete m_data;
}
MyString::MyString(const MyString &other)//拷贝构造函数
{
int length=strlen(other.m_data);
m_data=new char[length+1];
strcpy(m_data,other.m_data);
}
MyString&MyString::operator=(const MyString &other)//赋值函数
{
if(this==&other)//检查自赋值
return *this;
delete [] m_data;//释放原有的内存资源
int length=strlen(other.m_data);//分配新的内存资源,并复制内容
m_data=new char[length+1];
strcpy(m_data,other.m_data);
return *this;//返回本对象的引用
}2.请将两个数据序列合并成一个有序并无同样元素的数据。 如s1[5]={23,14,62,57,24},s2[5]={14,19,10,14,25}
运行后输出10,14,19,23,24,25,57,62
注:不能够使用库函数
#include<iostream>
using namespace std;
int main()
{
int s1[5]={23,14,62,57,24},s2[5]={14,19,10,14,25};
int s3[10],i,j,k,t;int flag;
s3[0]=s1[0];
k=1;
for(i=1;i<5;i++)
{
flag=1;
for(j=0;j<k;j++)
{
if(s1[i]==s3[j])
{
flag=0;break;
}
}
if(flag==1)
s3[k++]=s1[i];
}
for(i=0;i<5;i++)
{
flag=1;
for(j=0;j<k;j++)
{
if(s2[i]==s3[j])
{
flag=0;break;
}
}
if(flag==1)
s3[k++]=s2[i];
}
for(i=0;i<k-1;i++)
{
for(j=0;j<k-1-i;j++)
{
if(s3[j]>s3[j+1])
{
t=s3[j];s3[j]=s3[j+1];s3[j+1]=t;
}
}
}
for(i=0;i<k;i++)
{
cout<<s3[i]<<" ";
}
return 0;
}
3.打印一个N*N的方阵。N为每边字符的个数(3<N<20),要求最外层为“A”,第二层为“B”。从第三层起每层依次打印数字0,1,2,3,……样例:当N=5。打印出以下的图形
AAAAA
ABBBA
AB0BA
ABBBA
AAAAA
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int N;
int i,j,k,m;char a[20][20];
cin>>N;
for(i=0;i<(N+1)/2;i++)
{
if(i==0)
{
for(j=0;j<N;j++)
a[j][i]=a[i][j]=a[j][N-i-1]=a[N-i-1][j]='A';
}
else if(i==1)
{
for(j=1;j<N-i;j++)
a[j][i]=a[i][j]=a[N-i-1][j]=a[j][N-i-1]='B';
}
else
{
for(j=i;j<N-i;j++)
a[j][i]=a[i][j]=a[N-i-1][j]=a[j][N-i-1]=i-2+'0';
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}纸上敲代码。都没写对~有的时候真是快崩溃,找不到工作的忧伤~谁能懂

浙公网安备 33010602011771号