当前课程知识点:C语言程序设计(上) >  数组(一) >  5.1 同类有序数据处理问题 >  5.1.0 数组开篇

返回《C语言程序设计(上)》慕课在线视频课程列表

5.1.0 数组开篇在线视频

5.1.0 数组开篇

下一节:5.1.1 同类有序数据存储问题

返回《C语言程序设计(上)》慕课在线视频列表

5.1.0 数组开篇课程教案、知识点、字幕

大家好

我们经过了前六周的学习

大家

基本上

结束了一个

程序设计的基础的学习的过程

怎么讲是基础呢

是因为我们前边

既涉及到了算法的基本概念

也了解了

计算机语言的规则

也学习了

在c里边

程序流程控制的

语句

也就是说

属于计算机语言的

规则

一些基本的语句

我们

该见的

都见到了

而后边涉及到的

基本的语法的东西

语句的东西

就比较少了

所以呢

它属于

c的基础

其实

也是计算机语言的基础

也是程序设计的基础

那我们从

这么强调基础

从这一章

我们学习的是什么东西呢

我们看到了

数组

如果说强调前面是基础

那数组

应该说是

c里边的

也是程序设计语言里边的

共同都有的

一部分的内容

它属于

计算机语言里边的

精彩的部分

怎么这么讲呢

也就是说我们在前边

也讲到过神奇的

if else

说它能解决所有的

选择结构的

一个流程控制

我们也

曾说过

循环的功能是强大的

因为它能构建

所有的解决

重复

重用

程序段的重用的问题

但是呢

我们说一个例子

如果离了数组的支持

循环

都不能解决最简单的排序问题

怎么这么讲呢

我们

看一个

很小的例子

我们这一块

给大家一个最常见的

但是

对我们这个课程来说

是一个新问题

排序

那么排序对我们来说

大家感觉到

你说是新问题

有点

忽悠的意思

实际上呢

排序我们在前面就见过

这种三个数排序

还给了

这么长的一个流程

简化了以后

我们考虑

也有

三个选择

但是呢

我们现在要考虑的问题的排序

排序不是三个数排

排来排去

倒来倒去这样子

我们是

n多个数的排序

比如说

我们的课程里边

本周咱们做了一个

简单的测试

测试的成绩要不要排序呢

我们在线学习讨论区里边

数千个人

我们的

讨论的参与度

要不要排序呢

我们学生期末的综合排名

要不要做呢

比如说

我们生活里边经常会遇到

预约挂号的优先级排序

等等这一类的问题

不是

都是三个数的排序

它是n多个数的排序

那么这样的排序怎么做呢

比如说

我们也不说

成百上千个

我们就说十个数的排序

大家看一下

假如我画的这种

小形状

是人的身高的话

我们且不管

人的胖瘦

那么就身高

我们用数字标识了一下

这是最矮的

矮胖子

最矮的人

那么这是一个最高的人

我们用数字来

1到10来表达了他们的高矮

那我们

如果现在要的结果是这样

说把他们

由高到低排出来的话

我们看

按照我们前面说的

变量的描述

是这样子

最矮的这个人

我们在

给他一个变量名字

x7

那我们最高的这个人的

变量的名字是

x8

那我们十个

变量的名字

表达了十个

人的编号

那么这个编号

没有序

它仅仅是

这个序是它的位置号

是它的

比如说我们的学号

我们的职工号

是一个

序号

那么

此刻我们要的序是什么呢

按身高排序

如果我们按胖瘦排序呢

序又不一样了

我们现在要的是

按身高排序

那么怎么做这件事情呢

那大家觉得

这个事情并不难啊

我们在前边很早的时候就

涉及到了说

从n多个数里找一个大数出来

找一个满足我条件的那个数出来

这件事情并不难

但是目前呢

我们难的是什么呢

我们难的不是找一个数

我们是找

n个大数

因为我们是要排序

我们找了

排名1号的最高个

我们还要排名2号的次高个

我们一直到排名最后的

最低个

这样的

所以我们

如果对n个人排序的话

我们一定要找

多少个呢

n-1个

最后那一个肯定就是最后一名了

不用找了

对不对

我们说

对十个数排序的话

我们一定要找出来九个大数

加上最后那一个数

就不用找了

找九个大数就不是找一个数了

那我们听起来这个

特别像我们前边说

打图形

找一个数如果是内循环

打一行的话

那我们找n-1个

那就是

把那个内循环再循环n-1次

那这内循环里边

做什么呢

是找一个最大数

这个很简单

我们先定义一个

之前我们做这件事情的时候说

定义一个

max

最大数

这个变量里是最大数

那我们进入循环很简单

我就

0到我们要的

n次

去找

每一次读进了一个x的时候

我们就比较一下

你读进来的这个数

比我们假定的那个数还大吗

如果还大

那你就是我要的那个数

把它送进去

那么

如此循环

把这个循环进行完

max里边

一定是

我们要找的那个大数

这个流程

我们非常清楚

现在的问题是什么呢

问题是

第一个问题

是说

当我们

每一个循环里

读进了一个新的x的时候

上一个x还在吗

当我们读进了

第n个x的时候

前边的n-1个x

还在吗

必然是不在了

前边的n-1个x都被覆盖掉了

这有什么关系呢

这个关系是

当我们找

下一个大数的时候

我们还要

用那些被盖掉的x

你愿意把它们重新再输一遍吗

比如说

我们对1000个数在排序

我们才找了第一个大数

我们已经把

999个盖掉了

当我们再找第二个大数的时候

你愿意把这999个数再输一遍吗

你肯定不愿意了

因为

我们读的这个

x

是在我们循环体里边做

这是我们遇到的第一个问题

是什么问题呢

你的数据在

做第一次循环的过程中

那些数据已经被扔掉了

因为我们只考虑了

找一个大数

那我们的第二个问题是什么呢

第二个问题是

就跟我们前边说的打图形一样

如果这个图形

是打一行

那我们希望在

外边这块

还建立一个什么呢

外循环

是要来做什么呢

我要做

找到了一个大数

这是做了一个内循环

我们要找

下一个大数

这把内循环再做了一次

再下一个大数

我们整个把这个过程

循环了多少次呢

n-1次

到这

最后剩下

就是这个矮胖子

那我们是希望什么呢

希望这个内循环

被重用

被重用

什么样的

意思呢

也就是说

我们希望

在这块

再能加进来一个for

是我们的外循环

这个外循环里边

能重用这个过程

可是

现在这个过程里边

怎么就不能重用了呢

是我们这里边用的是

x

而我们现在这里边有十个变量

我们十个变量

不能同时都叫x啊

所以我们这里边分开了

叫x1 x2

是这样叫的

那我们这里边

如果写成x1

那我下一次比较的不是x1呀

我下一次比较的是

另一个x了

所以呢

我们是这样的一个过程

假如说我现在找的是第一个大数

x1

那它需要跟谁比较呢

它需要跟它的下一个数比较

这样比较

比较完了

它俩里边确定一个大的

我在跟下一个比较

再和下一个比较

一直

比较到

最终结束

这个过程你才找出了一个大数

那如果我每一个大数

都是这样一个过程

比如说

我们现在找

第五号位置上的这个大数

那它是跟谁比呢

跟下一个数

它的再下一个数

x6 x7 x8 x9

一直到x10

进行比较

也就是说

它每一次比较的

不是一个固定的数

x呢

也在变

找第一个大数的时候这是x1

找第五个大数的时候

这个

x呢

x5

而它要比较的数

我们刚才应该是这样

max

max我们要找的大数

那么此刻

找第一个大数的时候

max是x1

找第五个大数的时候

max是x5

而每一次要比较的这个x

在作第一个数的时候

它是x2 x3

一直到x10

那也就是说

这段代码

我们是没有办法让它重用的

那这样的问题

怎么解决呢

什么问题

怎么样共享

这个程序段

让外边那个循环

怎么样共享这个内循环的程序段

那我们说的就属于

这类问题

这是排序里边的

问题

我们拿它做了个例子

其实呢

除过这类问题之外

用数组

要支持的

还有

比如说

学生

n多学生的

n多门课程的

成绩

还有

一行文字

一页文字

怎么处理

还有

矩阵的存储

运算

到底怎么做

这些实际上

经常用到的

都是用数组来解决的问题

那么c语言

为这一类的应用

提供了什么呢

构造数据类型的

这样的支持

那数组

是一种

构造数据类型

当然

我们下个学期

要学的

c语言的后半段里边

也有

专门的

构造类型的

数据

比如说

像结构体

也属于

构造

数据的类型

那我们

这一章呢

也是有比较多的节

九节

我们

计划用

两周的时间

来完成

这块内容的学习

通过这一章我们希望大家

知道什么呢

首先我们是说

数组要解决的

是什么问题呢

有序数

什么是有序数

这些有序数

怎么样存储

那么

存储在内存里的这样的数据

我们

怎么样才能

更方便的使用它

还有

这一类的应用

最典型的一个应用

字符型数据的处理

那么我们如何

用数组的方式处理

字符型的数据

也是

我们这一章

要学习的一个重点

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

5.1.0 数组开篇笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。