【C++】步步为营之综合应用
2023-09-14 08:56:49 时间
在开学初,开始进入C++的做题阶段。听已经考过一次C++的同学说,要通过考试,就是需要做题;而且直接从三道大题入手,最后一个综合应用题也不能放弃。 做了几套大题下来,发现前两种类型(改错题、基本操作题)做多了慢慢就越来越有感觉了,而且每次出题的立意也就是来回的几个换。这篇博客是从最后一题入手,总结一些类型的题目,给自己积累一些知识,大家也可做个参考。 在别人告诉自己最后一题不能放弃之后,我就勇敢地去面对了几套题,下面就一类一类的总结一下: 一.字符交换位置 这一类题其实就是实现将一段字符串中的第一个字符与最后一个字符交换位置,第二个字符与倒数第二个字符交换位置,以此类推。 a.如果题目中已经定义好字符串的长度,下面只需要做的是通过一个循环和一个中间变量进行位置交换。
int i,j 定义两个整数,分别表示相互对应的两个位置 编写循环条件,for语句 for(int i=0,j=length-1;i i++,j--) 数组的下标从零开始,所以最后应该为总个数-1 两个值交换位置,添加一个中间变量,以便赋值 char temp=str[i]; 将j位置上的字符与i位置上的字符交换 str[i]=str[j]; str[j]=temp; }
b.如果题目中没有定义字符串长度,那么开始就应该先定义一个变量去获取字符串的长度。
int length = strlen(str); 字符串的长度 for (int i = 0, j = length -1; i i++, j--) char temp = str[i]; str[i] = str[j]; str[j] = temp; }
二.按从小到大的顺序排序(冒泡排序法) 这一类题就是排序,而冒泡排序是一种比较简单的方法。如果理解了,其实也没有很难下手的。 在编写代码之前,先简单回顾一下冒泡排序实现的思想是怎样的。比如现在我要对以下数据进行排序: 10 3 8 0 6 9 2 当使用冒泡排序进行升序排序时,排序的步骤是这样的: 3 10 8 0 6 9 2 // 10和3进行对比,10 3,交换位置 3 8 10 0 6 9 2 // 10再和8进行对比,10 8,交换位置 3 8 0 10 6 9 2 // 10再和0进行对比,10 0,交换位置 3 8 0 6 9 2 10 // 这个时候,10到达了最右边,是最大的数字,此时,我们在从头开始进行对比 3 8 0 6 9 2 10 // 3小于8,所以不用交换位置 3 0 8 6 9 2 10 // 8大于0,所以交换位置 0 2 3 6 8 9 10 很简单,就是让大数沉入下面,小数慢慢上浮起来。 下面是具体实现的核心代码:
for(int i=0;i length;++i) for(int j=i;j length;++j) if (d[i] d[j]) char temp=d[i]; d[i]=d[j]; d[j]=temp; }
三.运算符重载 我认为这一类题的核心就在于两个值,如何表示需要进行运算符重载操作的两个值。其中的一个肯定来自于构造函数下初始化的值,而另一个值,我们可以通过题目给我们写好的函数名获取,比如下面以重载+为类的函数,进行复数计算: 运算符重载首先要理解被重载的运算符的含义,其次就是类的定义。 下面一张图是题目完整的代码,中间空缺的地方就是需要我们编写的地方:
从已有的代码我们可以获取的信息有: 1.类名:MiniComplex; 2.属性名:realPart;imagPart; 3.重载类名:otherComplex 所以,表示两个值也就清楚简单了许多,具体代码如下:
MiniComplex MiniComplex::operator+ (const MiniComplex otherComplex) const //********333******** MiniComplex sum; sum.imagPart = this- imagPart + otherComplex.imagPart; sum.realPart = this- realPart + otherComplex.realPart; return sum; //********666******** }
四.一般函数 这一类题目是根据题目要求,编写空缺的代码,以实现获取初识值、进行求面积、求和等计算。 学习心得: 对于这么长时间以来的C++学习,不论是做题还是看书的角度去看,发现了自己对代码的亲和力还是不够的,刚开始几乎所有的操作题都是无从下手的。而在自己做过几套过后,才有了一些些改变。不过每次遇到新题,还是不会写代码,我想这可能也与C++是一门完全面向对象的编程语言有一定关系,之前一直都是面向过程的编程。C++,还是个问题啊。
从架构理解价值-我的软件世界观(转载) 程序员的迷茫-找寻不到价值 在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫。我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧。技术市场就像这喜怒不定的老天爷,今天下个大数据雨,明天挂个人工智能风,面对琳琅满目的技术浪潮的冲击,程序员难免深感无力,深怕错过了技术潮流从而失去了职场竞争力。
相关文章
- QT 5.0 正式版发布,支持 C++11
- 谈谈C++中vector的删除
- vc++创建多线程应用
- 【C/C++学院】(4)c++开篇/类和对象/命名空间/类型增强/三目运算符/const专题/引用专题/函数增强
- 鸡啄米:C++编程之十四学习之构造函数和析构函数
- 关于C/C++一些面试/笔试题的反思(超基础的知识点)
- About Cast in C++(C++中的类型转换)
- C/C++基础讲解(八十六)之游戏篇(解救人质游戏)
- C++:C++编程语言学习之函数的定义/调用/嵌套/回归的简介、案例应用之详细攻略
- C++ //Black Jack 21点游戏
- Qt5.9/C++架构实例(一个简单的MCV架构应用实例)
- C++抽象工厂
- opencv3/C++ 机器学习-SVM应用实例:药品(胶囊)识别与分类
- [C++基金会]位计算 游戏开发中的应用
- 编程基础——C/C++,Java,ObjC讨论回调模式
- C++ thread 基本用法
- Linux C/C++开发
- C++ - opencv应用实例之文本图像增强
- C++ - Opencv应用实例之相位相关法实现图像拼接
- C/C++编程日常踩到的那些坑。。。
- 【C++】算法集锦(12):高楼扔鸡蛋
- 【强力推荐】基于Nvidia-Docker-Linux(Ubuntu18.04)平台:新版OpenCV5.x(C++)联合CUDA11.1(GPU)完美配置视觉算法开发环境
- VC++中视频采集系统(摄像头的制作,串口通信的应用)