第五单元 数组知识总结

一、前段时间所学知识总结

前一段时间,我们学习了C++语言中的顺序、分支和顺序结构。随着学习时间的不断增加,学习内容的不断深入,我们所学的知识不断增加,我们也学会了更多的手段和方法来解决很多复杂的问题。同时我们也学到解决程序问题的好些十分有效的方法:最基本的我们要明确问题,提出方案并用程序的语言来描述方案,最后就是调输运行程序。之后是一些小小的知识点,比如如何取出一串数字的最大数,如何求两个数的最大公因式,给定一个n如何求n!等等。知识点积少成多,积小成大。到后来老师教着我们如何解决一个比较繁琐复杂的问题:先抓住整个问题的大框架,是累加和还是计数,是输出一个特殊形状的矩阵还是输出一个拥有数学逻辑的数字矩阵。然后将这个复杂的大的问题转化为我们所能解决的简单的小的问题。在这个解决的过程中这些小的知识点的重要性就极其的凸显出来了。这个就是我们以后解决程序问题最最基本也是最重要的想法。老师说学完了循环结构理论上我们就可以解决所有的程序问题了,并不是说后面的真的就不重要了,我们就可以放松警惕了,反而相反的之前学的都是基础,没有之前的基础后面的拔高根本无法再进行下去,后面要学习的内容也是非常非常重要的,现实生活中的问题往往不尽人意那么容易就能就解决。最后我想向老师说声对不起,“老师这次的作业我没能保质保量的完成,我真的很想要好好学C++但是我是真的觉得时间有些不够,可我也不敢拍着胸脯说我把所有的时间利用到位了,我就是觉得对不起您,最近两晚上老睡不好很有愧疚感。对不起老师,这次的作业我会找时间补回来,我要好好努力要有始有终!”(好了,以下回归正题)

二、单元知识总览

(Ⅰ)一维数组

(Ⅱ)二维数组

1、(Ⅰ)一维数组

①数组概念:数组是一组相同类型的变量进行了顺序排列。

注意  定义a[4]的话只能使用a[0]、a[1]、a[2]、a[3]不能使用a[4],如果使用的话在程序运行时会产生越界的错误但是程序不能检查出错误,也就是说,如果发生了错误将很难发现,所以在开始接触时我们就得好好关注这个细节。

引用数组时,不能一次引用整个数组,只能逐个引用数组的单个元素。

②数组定义方式及输入输出:

EX
int a[10];
数据类型 数组名[常量表达式];//一般常量表达式为一个常数

定义的方法:
int a[50];
int a[5*10];
#define N 50     int b[N];  //三种方式实际上是等价的,当然可以定义不同的类型

数组的储存:
a[0]从内存首地址开始存起,如果a[i]为int类型,首地址为1000,那么1000-1003存a[0],1004-1007存a[1],以此类推。

一维数组的输入和输出:
(1)键盘读入:int h[100];  for(i=0;i<100;i++)  cin>>h[i];
(2)直接赋值:int h[100],a[20];
            for(i=0;i<100;i++)  h[i]=0;
            for(i=0;i<20;i++)  a[i]=i*2+1;
还可以“整体”赋值:
(1)memset函数:“按字节”赋值,要包含头文件“#include<cstring>”,如“memset(h,0,sizeof(h));”将h数组所有元素均赋值为0。
(2)fill函数:“按元素”进行赋值,要包含头文件“#include<algorithm>”,如“fill(a,a+10,5);”将a数组的前10个元素赋值为5。

注意:最好在函数外定义数组,这样定义的数组是全局变量,储存的量多,但是运行速度会慢些。

            在处理数组的问题时,可以进行预处理,把满足条件式子先找出来再存到数组里再进行操作输出,这样可以大大提高运算的效率。

            在定义变量时赋初值,全局统计赋初值在循环之外,局部统计赋初值在循环之内,在具体统计之前赋初值。

在排序时可以采用选择排序、冒泡排序和插入排序,当数据很多但数据范围较小时,往往采用桶排序;在选素数时可以采用筛选法。

2、(Ⅱ)二维数组

①二维数组概念:一维数组的每一个元素又是一个一维数组,则称这种数组为“二维数组”。

②二维数组定义及输入输出:二维数组的定义及输入输出和一维数组极为相似,不过就是脚标多了一个,表示了一个行列数据的形式。

③二维数组的应用:二维数组一种常见的运用形式就是与数学的规律结合来刻画一个数字方阵;此外二维数组对解决字符的程序问题极其方便,尤其是刻画一大串字符时作用特别凸显。

三、近段时间学习感悟及所遇见的困难

最近我们学习了一个新的概念---数组。其实这个概念在高等代数中早就提出来了,只不过在程序中是第一次见面而已,所以对于我个人而言这个概念理解起来也没有那么吃力。数组的提出方便了我们定义一连串连续的变量,例如你要定义一连串近100个连续的变量时,如果不用数组来进行定义仅用之前的知识那么程序将会变得多么复杂,要记得我们使用计算机是为了方便计算,是用来解放人类的,计算机是工具,如果用计算机比不用计算机还麻烦的话,那又有啥必要使用呢。所以这个很体现出数组的重要性,它在很大程度上方便了程序的输入和运算。当然在近段学习的过程中,我发现一个错误就是当你一个程序既定义了变量a又定义了数组a[i]时这个时候就算整个程序其他所有地方都没有问题也不可以运行!还有在“年龄与疾病”那道题中要注意每一组变量最终的值要先乘以100.0再除以总数n,如果颠倒顺序结果会一直为零,因为每组变量的值一定会小于总量n所以你先除以n再乘的话只能得到零乘以100.0结果一定是0。最近也不知时间都从哪溜走了,没能按时完成老师布置的作业,老师对不起,真的最近几晚老是想着这件事,有一种深深的愧疚感。我会用尽所有课余时间把这次落下的好好补回来,学习要有始有终,加油,下次一定要比这次做得更好,一定要比之前的我做得更好!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值