数组

数组概论(Ver 2)

战友们晚上好!今晚因为电脑的原因本来写好的稿子不能提前交上了,抱歉。
今天大体讲一下关于数组的内容,看完就可以使用来做题了。

目录请见群里发送的图片

1.数组基本用法

1.1 数组的初始化

我们知道,要使用一个变量,我们需要先“声明”才能够使用,
数组也是这样的,但作为一个数据容器,它还有大小这个参数。
大体格式是这样的。

1
2
<数据类型> <标识符>[长度];
//也可以在长度后面加上={},但是数组不确定的时候,没必要。

这里的数据类型就是我们常用的int,double,char等等,
表示数组内元素的数据类型

标识符是数组的名称,命名时也符合变量的命名规范
比如这样

不能以数字、标点符号(很多标点符号如,或者括号都是运算符)开头,
不能使用关键字(会语法高亮的字比如int)
最好使用这种形式 数据类型的首字母加上名称,如iArray1

长度是可以省略的,但只在数组完全确定的时候。
但是我们在做题的过程中一般不使用确定的数组
(数组可以预先指定好元素的值,如下例)
一般是题目告诉我们最多的时候数据有多少个,
我们一般取很大的数,如1000、10000等。
像iArray0这样。

1
2
3
4
int iArray0[1000]; //相信我,这会是你们用的频率最多的那种。
int iArray1[5] = {1,2,3,4,5}; //确定数组
int iArray2[5] = {1,2,3} //int与double类型都是空位补零。
int iArray3[] = {1,2,3,4,5} //省略长度,相当于iArray1

其中,对于iArray3,规定了长度,但是没有确定完5个元素,
其他的元素对于int类型数组用0填上
但对于char类型的数组,用的是一个字符\0,以后学字符串的时候会接触到
这个字符提前,那么输出的时候就会提前结束。

1.2 数组的数据储存输出

已经声明完了,那么接下来就是往容器里加入数据
方式依旧是我们惯用的scanf函数。
但是这里就要到一个很容易错的点了:下标
先看下面的演示,我们这样来写入数据

1
2
3
4
5
6
//这也是一种惯用模式吧,像今天下午老师总结的那个
for(int i = 0;i <= n;i++)
{
scanf("%d",&iArray0[i])
}
// 这里拿iArray来举例子,长度为n,n的定义与赋值这里省略掉

相信聪明的你已经看到了,我们的i是从0开始取的
那么iArray0[0]也就表示在iArray0数组里的第一项,所以最后的一项的下标是n - 1。
这个特性一定要记好,要好好练习啊!
(不然以后写for循环的时候用了0-n,错在哪都不知道,找谁哭去?)

那么也像储存一样,我们也是用printf函数加上for循环来输出的
(这比起某种语言真的太麻烦啦!差评)

所以这就是数组使用的几乎全部,其他都是一些形式上的改变,已经可以开始上手了。

2.多维数组

也是简单一说,在平常做题的时候这种数组不会很频繁地用到。
如果一维数组只有一个长度参数的话,二维就有两个,相当于平面直角坐标系。
就像下面这样
0 1 2
0
1
2
二维数组用两个参数确定一个值,
也就是说在scanf输入、声明、printf输出的时候也需要两个括号。
几维数组就是几个括号,其他的表示方式其实与一维数组差不多。

1.空位自动补上对应的数值
2.在数组确定的时候是可以省略长度参数的
3.确定的时候稍有不同,可以有两种确定方式,如下。

1
2
3
int iArray4[1000][1000];  //最常用的,等待输入
int iArray5[2][5] = {{1,2,3,4,5},{2,3,4,5,6}};
//或者int iArray5[2][5] = {1,2,3,4,5,2,3,4,5,6};

3.数组的应用场景

从这几次周赛的题目来看,我们使用数组的目的是储存数据
也就是当我们需要不止一次地遍历数据,而且数据很多的时候,我们就可以使用数组。
(不多的时候,两三个直接用变量存就好了)
这里拿出两种题,
一种是n个数求和,我们定义一个sum变量,
直接输入一个加一次就可以,每一个数据加完就不再用了,不需要用数组。
但是,这次周赛的群友发言计数器那道题就需要对于ID统计出现次数,
这就需要遍历数组了,需要在输入之后再次使用所有数据。

所以这就是数组我了解的大致内容,如果有不懂的地方欢迎交流提问。
我的分享到此结束!谢谢大家的时间!

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2024 大学生暮暖
  • 访问人数: | 浏览次数:

请我喝杯奶茶吧~

支付宝
微信