当前课程知识点:C语言程序设计(上) > 数组(一) > 5.1 同类有序数据处理问题 > 5.1.1 同类有序数据存储问题
大家好
我们说
数组
主要描述的是数据的问题
我们首先
考虑
数组的特性
它是要讨论什么问题呢
如何表达
批量的数据
比如说
我们这是
一个内存块
内存块里
x1
x7 x2
怎么这样别扭的存放呢
事实上
我们这是简单变量
简单变量在内存里存放
理论上
它是随机的
有时候
你的机器刚开的时候
你定义了三个
abc三个变量
这三个变量很可能是
挨在一起存放的
但是
如果你这机器被用过
很长时间
很多应用都用过了
或者你同时做了好几件事
又听音乐又画图
又编程序
那这时候内存里
出现了很多
碎片
那你这些变量
有可能被
离散在了
不同的位置
这是非常正常的
那我们现在说
数组的方式
它的思路是什么呢
这个思路是
我这一组数
不用离散存放
连续存放在一起
那么
怎么样才能连续存放在一起呢
我用这种
带下标的变量
那么这里边
我有一个名字
这个数组里边
数组的名字
不是
abc
这样叫
比如说我们这里边的
x1 x2 x7
其实是和
abc是一样的
而这个m
对这个数组来说
它都是叫m
这是数组的名字
而后边呢
拖着一个下标
用中括号括起来
其实我们非常习惯看
圆括号括起来的
但是在c里边
圆括号被man用掉了
被所有的函数用掉了
所以呢
我们这只能用
中括号括起来
后边是下标
这很像数学里边
x1
x2
那个1和2
是一个下标
那么用这个下标
它的特点是什么呢
它的特点是
我们看
可以变的
它是可以变化的
这个变化不要紧
就使得
我们这个变量
这些
变量
变成了可控
我可以用
m i
我让这个i
再一个循环体里边
它从0变到9
那岂不是我就可以访问成
下标可控
就变成了
我这个变量名字可控
解决了一个问题
变量名字成了
可变的
这就是我们
所说的
数组
但是这个数组里边的规则
不仅如此
非常重要的一点是什么呢
数组是由这些元素
就这里边每一个变量
叫做
这数组里边的一个元素
那么这些元素
它具有什么样的特征呢
最重要的一个特征是
类型相同
这些元素
必须是
类型相同的
为什么要这样规定呢
我们前面这两个词
都可以理解
很好
它能使变量名字
变成了
可以再循环体里边
可以控制
它不是一个固定的变量
使得
我们用内存的时候
这一片
都是同一个数组
那类型
为什么要相同呢
难不成我这里边
这样放东西不行吗
大家看
如果我放一个学号 姓名
成绩
这是
我描述一个人的
我的学号
我的姓名 我的成绩
这样放不更好吗
可以肯定地说
在数组的规则里
它是不行的
为什么呢
因为
姓名和成绩
必然不是一个数据类型
比如说成绩和学号
也不是一个数据类型
成绩可以有点几
而学号
没有点几
它即便是数字也没有点几
我们现在说
类型相同它是一种约束
还是一种优势呢
我们看
类型相同
是
要做什么呢
最主要的是
我们要实现的是
用数组的方式
是想实现的什么问题呢
说你数组元素里边的每一个
数组里的每一个元素
我是随机的可以访问到的
m1
m9
我是
随机的可以访问到
我不一定要连续的访问
那么
随机访问是需要确定
你在数组里边的位置的
而这个位置
是要计算的
这个计算
是要靠下标去计算的
如果说
大家大大小小格子都不一样大
存储单元都不一样大
这个计算就没法进行了
所以呢
这个类型必须一致
每一个
元素
如果是整型
这里边的所有元素都是整型
如果是实型
大家都是实型
所以
这一块
我们说
它不是优势
而是一种约束
约束
使得
我们对
各个元素的访问
下标的定位
能够
非常方便的计算
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html