一、本节目标

本节我们将要讲述数组。本节目标:

  • 一维数组
  • 二维数组
  • 字符数组

二、一维数组

我们通过一个案例来简单的理解数组。班主任要计算班级里面50个同学数学成绩的平均成绩,道理上讲这是一个比较简单的问题,只需要把每个人的成绩加起来除以50就可以了。但是如何表示50个人的成绩呢?按照我们之前的学习定义50个变量,s1,s2,s3...s50,但是你有没有发现这样存在的问题?第一,这是50个学生,假如是5000个呢?这样定义很繁琐。第二,这样的定义没有反应出他们之间内在的联系,他们都是一个班级的,都是统计的数学成绩,这样的问题如何解决呢? 首先我们可以用同一个名字表示他们(如S),而在名字的右下角加一个数字来表示这是第几名学生的成绩,例如,可以用S1,S2,S3代表学生1、学生2、学生3......学生50等50个学生的成绩。这个右下角的数字常称为下标。一批具有相同名字和相同性质的数据就组成一个数组(array),就是数组名。我们首先从一维数组来理解和学习。

定义一维数组

定义一维数组一般有两种方式:

方式1:

数组名:array[下标1..下标2] of 元素数据类型;

例如定义以下数组:

var student:array[..] of integer;
 

方式2:

第一步:先定义一个新的数据类型:

type 数据类型名=array[下标1..下标2] of 元素数据类型;

如:

type arr=array[..] of integer;

第二步:定义一个该数据类型的变量:

变量名:数据类型;

如:

var student:arr;

注意:

(1)数组名的命名规则和变量名相同,遵循标识符命名规则。

(2)在定义数组时,需要指定数组中元素的个数,方括号中的下标1表示数组中元素是从0开始的最后是以下标2结束的。例如,student[1..10],表示a数组有10个元素。注意,下标是从0开始的,这10个元素分别是student[0]...student[9]。一定要注意这里面不会有student[10].

(3)常量表达式中可以包括常量和符号变量,如“int a[4*2]”是合法的。但是不能包括变量,如下面的就是不合法的:

int n;
scanf("%d",&n);
int b[n];

经过上面的定义,在内存中划出一片存储空间(空间大小:4*10=40字节),存放一个含有10个整形元素的数组。

一维数组的初始化

为了让程序简洁,我们常常在定义数组的同时,给各数组元素赋值,这就是数组的初始化。 (1)在定义数组时对全部数组元素赋予初值。例如:

[pascal入门]数组的更多相关文章

  1. Numpy入门 - 数组切片操作

    本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...

  2. Numpy入门 - 数组基本运算

    本节主要讲解numpy数组的基本运算,包括两数组相加.相减.相乘和相除. 一.两数组相加add import numpy as np arr1 = np.array([[1, 2, 3], [4, 5 ...

  3. Scala编程入门---数组操作之数组转换

    使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield e ...

  4. Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组

    在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数 ...

  5. Golang 入门 : 数组

    数组是指一系列同一类型数据的集合.数组中包含的每个数据被称为数组元素(element),这种类型可以是任意的原始类型,比如 int.string 等,也可以是用户自定义的类型.一个数组包含的元素个数被 ...

  6. (四)Lua脚本语言入门(数组遍历)

    这篇文章就当成铺垫型的文章,写着写着发现有好多想写的,,关于C#与Java,当然作为铺垫肯定与Lua的下部分介绍有关..... 对于"泛型",先看C#中"泛型" ...

  7. (三)Lua脚本语言入门(数组)

    又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的“艰苦忍耐”式的奋斗,那这是一种很不足的心理状态.毅力是一种习惯,毅 ...

  8. ES入门——数组的扩展

    1.Array.from() 该方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象,包括ES6新增的数据结构Set和Map.下面是 ...

  9. Go语言入门——数组、切片和映射

    按照以往开一些专题的风格,第一篇一般都是“从HelloWorld开始” 但是对于Go,思来想去,感觉真的从“HelloWorld”说起,压根撑不住一篇的篇幅,因为Go的HelloWorld太简单了. ...

随机推荐

  1. vue-cli3详细config配置

    const path = require('path') module.exports = { publicPath: './', // vueConf.baseUrl, // 根域上下文目录 // ...

  2. linux 相关命令记录

    NetworkManager关闭及禁用 关闭:systemctl stop NetworkManager 禁用:systemctl disable NetworkManager 查看日志:journa ...

  3. ARM设备树

    学习目标:学习设备树相关内容: 一.概念 在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,在kernel中存在大 ...

  4. python七类之集合

    集合 一.关键字 : set 定义是 s = {}    #当里面没有元素的时候​​表现为字典数据类型 s = {} #空的{}代表空的字典,而不是集合 print(type(s)) 集合是不可哈希的 ...

  5. Linux了解一下

    VMware与CentOS系统安装 1, 下载CentOS系统ISO镜像: 国内镜像源 https://opsx.alibaba.com/mirror#阿里云官方镜像站 iso下载地址(此DVD映像包 ...

  6. python迭代器生成器

    1.生成器和迭代器.含有yield的特殊函数为生成器.可以被for循环的称之为可以迭代的.而可以通过_next()_调用,并且可以不断返回值的称之为迭代器 2.yield简单的生成器 #迭代器简单的使 ...

  7. BurpSuite—-Scanner模块(漏洞扫描)

    一.简介 Burp Scanner 是一个进行自动发现 web 应用程序的安全漏洞的工具.它是为渗透测试人员设计的,并且它和你现有的手动执行进行的 web 应用程序半自动渗透测试的技术方法很相似. 使 ...

  8. C++ —— 类中static和const关键字声明变量的初始化方式总结

    在类中声明变量/常量时,经常会用到static.const关键字.对于该变/常量的初始化问题,网上有许多相关文章,但是大多不够完善,或者存在错误.经过实际验证,总结如下: (注明:测试编译平台为VS2 ...

  9. 修改并编译golang源码

    最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动.特将操作过程整理如下,以供参考: golang的源码安装其实比较简单,只需运行源码包中的脚本src/all.ba ...

  10. 准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure )----转

    原文:http://blog.csdn.net/t710smgtwoshima/article/details/8215037   Recall(召回率);Precision(准确率);F1-Meat ...