【C++】步步为营之综合应用

简介: <pre><span style="white-space:pre"> </span><span style="font-family:KaiTi_GB2312; font-size:18px">在开学初,开始进入C++的做题阶段。听已经考过一次C++的同学说,要通过考试,就是需要做题;而且直接从三道大题入手,最后一个综合应用题也不能放弃。 <span style="white-spac
	在开学初,开始进入C++的做题阶段。听已经考过一次C++的同学说,要通过考试,就是需要做题;而且直接从三道大题入手,最后一个综合应用题也不能放弃。
	做了几套大题下来,发现前两种类型(改错题、基本操作题)做多了慢慢就越来越有感觉了,而且每次出题的立意也就是来回的几个换。这篇博客是从最后一题入手,总结一些类型的题目,给自己积累一些知识,大家也可做个参考。
	在别人告诉自己最后一题不能放弃之后,我就勇敢地去面对了几套题,下面就一类一类的总结一下:
	一.字符交换位置
	这一类题其实就是实现将一段字符串中的第一个字符与最后一个字符交换位置,第二个字符与倒数第二个字符交换位置,以此类推。
	a.如果题目中已经定义好字符串的长度,下面只需要做的是通过一个循环和一个中间变量进行位置交换。	

int i,j  '定义两个整数,分别表示相互对应的两个位置
'编写循环条件,for语句
for(int i=0,j=length-1;i<j;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 < j; 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++,还是个问题啊。
	



目录
相关文章
|
7月前
ifdef和#ifndef的综合应用
【6月更文挑战第22天】和#ifndef的综合应用。
33 4
|
3月前
#ifdef和#ifndef的综合应用
#ifdef和#ifndef的综合应用。
35 2
|
8月前
|
搜索推荐 程序员 测试技术
研究思考|关于软件复杂度的困局
本文重点围绕软件复杂度进行剖析,希望能够帮助读者对软件复杂度成因和度量方式有所了解。
|
8月前
#if #ifdef和#ifndef的综合应用。
#if #ifdef和#ifndef的综合应用。
63 2
|
8月前
#if #ifdef和#ifndef的综合应用
#if #ifdef和#ifndef的综合应用。
42 1
|
搜索推荐 程序员 测试技术
研究思考丨关于软件复杂度的困局
研究思考丨关于软件复杂度的困局
1312 9
研究思考丨关于软件复杂度的困局
洞见:如何看透事物本质,拥有彪悍的人生!
洞见:如何看透事物本质,拥有彪悍的人生!
187 0
洞见:如何看透事物本质,拥有彪悍的人生!
|
搜索推荐 物联网 新制造
打破智能家居4大魔咒, 全场景定制化智慧成套方案成绝密武器
2018AWE期间,东方卫视专题,直播了海尔的全场景定制化智慧成套方案,这引起了我的兴趣。专题片以“智慧定制美好生活”为题,介绍了海尔为智能家居领域所做的探索与努力,也由此引出海尔在物联网时代平台品牌战略成果:创成智慧家庭第一平台品牌。
166 0
打破智能家居4大魔咒, 全场景定制化智慧成套方案成绝密武器
|
数据安全/隐私保护
《伟大的小细节:互联网产品设计中的微创新思维》——3.6 基于当前场景的前因后果推演
本节书摘来自华章计算机《伟大的小细节:互联网产品设计中的微创新思维》一书中的第3章,第3.6节,作者:文哲著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1155 0