重学C++程序设计(四):今天还是巩固指针与面向对象程序设计!
2021/6/8 20:27:54
本文主要是介绍重学C++程序设计(四):今天还是巩固指针与面向对象程序设计!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第七题:这个题不来自c++面向对象程序设计,是我自己量身打造了的一道题:
要求实现的功能:
第一:要实现字符串的除去多余空格!注意,是除去多余空格,要求要指针实现!比如:
输入: I like program (首尾可能也有空格)
输出:I like program
第二:要求做到字符串部分反转,意思是:保留单词内部原有的顺序,但是单词与单词之间的次序反转了,比如:
输入:I like program
输出:program like I
程序设计的要求:
私有成员:
一个字符指针,作为字符串的内部属性,后面的操作都在这个指针上进行!
公有成员:
一个构造函数,传参是传一个字符串首地址
一个析构函数,析构开辟的动态空间
至于上述的两个功能,如何实现,如何分配函数块,自由发挥!
ps:怎样,这题还是不难吧!我主要是自己想练习面向对象和指针操作,所以我提供的解决方案都是基于指针的
解决方案:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring> using namespace std; class String { private: char* s; public: String(char* str); void PorReverse(); void RidBlock(); void Show(); ~String() { delete[] s; } }; String::String(char* str) { int len = strlen(str); s = new char[len + 1]; strcpy(s, str); } void String::PorReverse() { char* p1 = s, *p2 = s; while (*p1 && *p2) { p2 = p1 + 1; while (*p2 && ' ' != *p2) p2++; char* ptr1 = p1, * ptr2 = p2 - 1; while (ptr1 < ptr2) { char Temp = *ptr2; *ptr2 = *ptr1; *ptr1 = Temp; ptr1++, ptr2--; } p2++; p1 = p2; } char* pp1 = s, * pp2 = s; while (*pp2) pp2++; pp2--; while (pp1 < pp2) { char Temp = *pp2; *pp2 = *pp1; *pp1 = Temp; pp1++, pp2--; } } void String::RidBlock() { char* ptr1 = s, * ptr2 = s; while (*ptr1 && ' ' == *ptr1) ptr1++; while (*ptr1) { *ptr2 = *ptr1; ptr2++, ptr1++; } *ptr2 = NULL; ptr1 = s, ptr2 = s; while (*ptr1) { if (' ' != *ptr1 || (' ' == *ptr1 && ' ' != *(ptr1 + 1) && NULL != *(ptr1 + 1))) { *ptr2 = *ptr1; ptr2++; } ptr1++; } *ptr2 = NULL; } void String::Show() { cout << "当前的 s = " << s << endl; } int main() { char str[85] = { '\0' }; cin.getline(str, 80); String Test = String(str); Test.RidBlock(); Test.Show(); Test.PorReverse(); Test.Show(); return 0; }
这篇关于重学C++程序设计(四):今天还是巩固指针与面向对象程序设计!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门