1. 程式人生 > >C++面向物件程式設計50道程式設計題(第04題)

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();	
}

五、心得感受

可以在評論處寫下思考和程式設計此題的感受