• 猎豹移动(金山网络)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='';
    	}
    	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;
    }


    纸上敲代码。都没写对~有的时候真是快崩溃,找不到工作的忧伤~谁能懂

  • 相关阅读:
    对《软件工程》这门课的总结
    结对编程项目---四则运算
    PSP记录个人项目耗时情况
    代码复审
    是否需要有代码规范
    四则运算的实现(C++)重做
    四则运算器的实现
    学习进度总结
    通过阅读教材,所得的不懂的问题
    自我介绍
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5112717.html
Copyright © 2020-2023  润新知