当前课程知识点:C语言程序设计(上) >  数组(二) >  5.9 数组综合应用 >  5.9.1 应用1——学生成绩统计

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

5.9.1 应用1——学生成绩统计在线视频

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

下一节:统计成绩.c

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

5.9.1 应用1——学生成绩统计课程教案、知识点、字幕

大家好

我们

接下来看一下数组的应用

这边我们给一个例子

一个期中考试的成绩的统计

我们就给了三门课

数学 英语和物理

那么要统计什么东西呢

其相当于说

最终我们要求的是

输出这么一个表

这个表里边有学号

我们的三门课的成绩

数学 英语

和物理的三门课的成绩

然后还要什么呢

要总分

每个人的总分

还要平均分

还要一个什么东西呢

这三门课

如果哪个同学

三门课都在90分以上

我们给这后边就打一个Y

否则呢打No

比如说

2号同学

92分 91分 90分

三门课都在

90分以上

不是说总分高

一定是三门课都在90分以上

打Yes

否则打No

就这么件事情

大家看看

是说

这看上去就是一个二维表

那么我们数据首先应该放进去

然后去做它的总分的统计

平均分的统计

然后判断

是打Yes呢还是打No

是这么一件事情

怎么做呢

我们看一下

先考虑一下这个算法

我们在考虑这件事情上

它的计算很简单

只是我们要考虑什么呢

这些数据

在内存里

怎么存放

比如说学号

和这些课程的成绩

要存放在一起吗

比如说我们统计出来的

这个结果

总分 平均分

要存放吗

还是说

算出来就输出就行了

不用存放

所有这些东西的安排的不同

我们的程序

设计出来的程序

它的面貌就会不同

比如说我们这样考虑

假如说是

我这样考虑

学号

和成绩

我都放在一起

那么这就给了一个约束

是什么呢

我们的成绩

因为学号不可能有点几

不可能有小数点

那我们成绩也就取整数

我们大家都用整数

如果我们想保留

成绩里边的点5

点几分的话

和学号放在一个数组里

那就受了数组的约束

数组必须是同类型的

还有

那么我们不这样考虑

是不是可以这样考虑

我把三门课

放在一个二维数组里

我把这个学号单独放在一个

一维数组里

这样是不是可以呢

当然也可以

比如说我这学号

有的还有字符的

我可以是字符型的

也可以是

整型的

无符号整型的

而我这个

分数呢

就可以是实型的了

那还有一种考虑

我们可不可以把

所有这些

就是不仅仅是原始的数据

我把统计出来的

总分和平均分

有都一起

放在一个二维数组里

那这个二维数组就成了

我们这是6列

6个列

那我们说30人

就是30乘以6列的

这么大的一个数组

愿意选取哪一种

数据结构

来考虑我们的问题呢

选取的不同

我们的程序

就会不同

比如说这是两个数组

数组的大小也不一样

这个是一个数组

那么对数据的约束就不一样

所以呢

这个数据结构

就是到底我们选取什么样的

数据存放形式

基本上是决定了

我们程序的一个

整个呈现出来的面貌

我们在这选取

我们看一下程序

我们选取了一个

什么样的形式呢

4列

把学号和三门课都放在里边

我在这块呢

我们选取了这样的一个形式

然后呢

在这里边做什么呢

在最内循环里边

先把

从0

到小于等于3

也就是说

先输一个人的学号

再输他的三门课的成绩

把所有的这个数组里的

原始数据都放进去

这在哪里做呢

内循环的红颜色的for

外循环的蓝颜色的for

这是

给数组里存数据

存完了以后我们要做什么呢

先打印了一个表头

再打印了一行横线

然后再看

下边我们的程序

这个程序里边

依次对

从0到小于等于n

n在这里边是什么呢

是人数啊

小于等于n

然后每一次做什么呢

输出

第i行

第0列

这是什么呢

学号

这是

我们说的

从0

到小于n的

在每一次我先输出

第0列上的

这是学号

然后在下边呢

单独用一个循环来做什么呢

用一个循环

做里边的三个数的求和

三个数的

就三门课的数据的求和

在出了这个循环

我们求

什么呢

做两件事情

一件事情是说

三门课都大于90分吗

如果是的话

我们给c里边赋值Y

否则c里边赋值的是N

那求平均分

这件事情在哪里做呢

我们看一下

求平均分这件事情

我们在直接输出的时候做

输出

我们算的这个总分在这呢

s里边

s除以3

就是我们要的

平均分

s里边是总分

这是平均分

这是什么呢

这是我们送的

c里边的那个Yes还是No

把它输出

我们看一下这个程序

大家看这是我们刚才看到的

这个a数组

n乘4列的a数组

然后呢

读这个数组

然后

再去计算

最后输出

在这输出

我们运行一下它看一下

运行的时候我们要小心

这个n给了

两行

两个人的

那么就四个数据

第一个数据是学号

后边的那个数据是三门课的成绩

那我们给第一个人

1号同学

给他的成绩是

但是有一门呢

这是1号同学

2号同学呢给一个

我们看

1号同学

总分呢

是这么多

平均分

然后呢

没有达到说每门课都大于90分

而2号同学是

每门课都大于90分

这是我们要的这个结果

那么

同学们试着想一下

你如果不这样定义数组

像我们刚才说的

学号放在一个一维数组里

其它的放在

三门课放在

一个二维数组里

然后呢

你编出来的程序

会跟这个有什么不同呢

大家可以下去试一下

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.9.1 应用1——学生成绩统计笔记与讨论

也许你还感兴趣的课程:

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