C++面向对象程序设计50道编程题(第29题)

摘要:C++程序设计实习是为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析问题和解决问题的能力,提高学生运用所学知识解决实际问题的能力。
  本专辑为编程入门者、高校计算机软件专业学习或复习提供C++程序设计题库。
  读者请先独立思考哦,再与参考程序进行比对检查。

一、问题描述

C++面向对象程序设计50道编程题(第29题)

二、考察内容

  基本面向对象概念,如何创建类、对象,对类私有数据成员和公有成员函数的理解,简单的字符串处理。

三、难度等级

难度等级:★★☆☆☆

四、参考程序

#include <iostream.h>
#include <string.h>
class Str{
	char *str,*s;
	int maxlen;
public:
	Str(char *p=0);
	~Str(){ delete []str;delete []s;}
	void print();
	void process();
};
Str::Str(char *p)
{
	str=new char[strlen(p)+1];
	s=new char[strlen(p)+1];
	strcpy(str,p);
	strcpy(s,p);
	maxlen=0;
}
void Str::print()
{
	cout<<str<<'\n';
	cout<<s<<'\n';
	cout<<maxlen<<endl;
}
void Str::process()
{
	char p[100]="";
	strcpy(p,str);
	char q[10]="";  //设置存放字符的中间字符数组
	char p1[10]="";    //设置存放最长相同元素的子序列
	int j=0,a,i;
	while(p[j]!='\0')
	{
		a=1;i=0;
		while(p[j]==p[j+1])  //查找相同元素的子序列
		{
			a++;
			q[i++]=p[j];j++;
		}
		q[i]=p[j];j++;
		if(a>maxlen)          //判断是否是最长相同元素的子序列
		{
			maxlen=a;         //保存最长相同元素的子序列的个数
			strcpy(p1,q);   //保存最长相同元素的子序列
		}
	}
	strcpy(s,p1);      //查找完整个字符串后把最长相同元素的子序列保存到P数组中
			
}

void main()
{
	char *t="jkkkaabbbbbaaa";
	Str test(t);
	test.print();
	test.process();
	test.print();
}

五、心得感受

可以在评论处写下思考和编程此题的感受

相关文章:

  • 2022-01-04
  • 2021-11-17
  • 2021-10-20
  • 2022-12-23
  • 2021-05-27
  • 2021-11-02
  • 2021-11-29
  • 2022-12-23
猜你喜欢
  • 2022-01-10
  • 2021-09-02
  • 2021-11-29
  • 2021-05-23
  • 2021-11-03
  • 2021-08-27
  • 2021-10-06
相关资源
相似解决方案