C++面向对象程序设计50道编程题(第04题)
C++面向对象程序设计50道编程题(第04题)
摘要:C++程序设计实习是为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析问题和解决问题的能力,提高学生运用所学知识解决实际问题的能力。
本专辑为编程入门者、高校计算机软件专业学习或复习提供C++程序设计题库。
读者请先独立思考哦,再与参考程序进行比对检查。
一、问题描述
二、考察内容
基本面向对象概念,如何创建类、对象,对类数据成员和成员函数的理解,简单的排序算法。
三、难度等级
难度等级:★☆☆☆☆
四、参考程序
#include <iostream.h>
#include <string.h>
class String{
char * str1,* str2;
char *str;
public:
String(char*ptr1,char*ptr2);
void dele( );
void sort( );
void show( );
~String(){delete[]str1;delete[]str2;delete[]str;}
};
String::String(char*ptr1,char*ptr2) {
str1=new char[strlen(ptr1)+1];
strcpy(str1,ptr1);//对内存空间赋值
str2=new char[strlen(ptr2)+1];
strcpy(str2,ptr2);
str=new char[strlen(ptr1)+strlen(ptr2)+1];
strcpy(str,ptr1);strcat(str,ptr2);
}
void String::dele( ){
char*ptr1=str,*ptr2=str;
while(*ptr1){
if(*ptr1!=' ')*ptr2++=*ptr1;
ptr1++;
}
*ptr2='\0';
}
void String::sort( ){
char*ptr1=str,*ptr2,temp; //注14 ptr1 和ptr2保证成员指针不移动
while(*ptr1)
{
for(ptr2=ptr1;*ptr2;ptr2++)
if(*ptr1>*ptr2){
temp=*ptr1;*ptr1=*ptr2;*ptr2=temp;
}
ptr1++;
}
}
void String::show( ){
cout<<"str1="<<str1<<endl;
cout<<"str2="<<str2<<endl;
cout<<"str="<<str<<endl;
}
void main( ){
String str("da b","4 1");
str.show();
str.dele();
str.sort();
str.show();
}
五、心得感受
可以在评论处写下思考和编程此题的感受