维数组冒泡排序

上传人:san****019 文档编号:70210698 上传时间:2019-01-16 格式:PPT 页数:36 大小:508.51KB
返回 下载 相关 举报
维数组冒泡排序_第1页
第1页 / 共36页
维数组冒泡排序_第2页
第2页 / 共36页
维数组冒泡排序_第3页
第3页 / 共36页
维数组冒泡排序_第4页
第4页 / 共36页
维数组冒泡排序_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《维数组冒泡排序》由会员分享,可在线阅读,更多相关《维数组冒泡排序(36页珍藏版)》请在金锄头文库上搜索。

1、项目3:学生总评成绩的统计与排序 涉及到的知识点如下:,单元一:while语句的流程以及应用 单元二:do-while语句的流程以及应用 单元三:for语句的流程以及应用 单元四:break、continue语句的应用 单元五:循环结构的嵌套练习 单元六:分支、循环结构的综合应用 单元七:一维数组的定义及应用 单元八:二维数组的定义及应用 单元九:学生总评成绩统计与排序的实现,单元七:一维数组的定义及应用,第一个问题是:输入100个学生的“C 程序设计”课程的成绩,将这100个分数从 小到大输出。 第二个问题是输入100个学生的“C程 序设计”课程的期中和期末成绩,算出总评 成绩,总评成绩为“

2、30%期中成绩 +70%期末成绩”,计算总评成绩的分数 段情况。,什么构造类型? 所谓构造类型是指由基本类型数据按一定的规则组成的,是用户自己按规则定义的,数组是构造类型之一。 什么是数组? 在数学中我们学过数列、矩阵的概念, 数列通常表示为:a1 、a2 、a3、.、an 矩阵通常表示为:,在C语言中表示数列和矩阵的方法是: 数组:a0、a1、a2、a3、a4、a5 b0、b1 、 b2、b3、b4 c00 、c01 、c10 、c11 d111 、f2234 其中 a,b,c,d,f :称为数组名。 方括号中的数:称为下标 下标是一个数时,也就是数列,称为一维数组。 下标是两个数时,也就是

3、矩阵,称为二维数组。还有三维数组、四维数组等。,例如:有五名学生的一组学号: 12、13、14、15、16,int num5; num0= 12; num1= 13;num2= 14; num3= 15; num4= 16;,int a,b,c,d,e; a= 12; b= 13;c= 14; d= 15; e= 16;,单元七:一维数组的定义及应用,7.1 一维数组的定义 数组是具有相同数据类型的变量集,并拥 有共同的名字。 从概念上来说,数组是一组变量,这组变量 应该满足下列条件: (1) 具有有相同的名字 (2) 具有相同的数据类型 (3) 在存储器中连续存放,每个数组在使用之前都需要定

4、义。 定义数组的语法是: 数据类型说明符 数组名数组长度; 注意:数组长度只能是常量。,定义数组中元素的取值类型,定义数组中元素的个数,数组中的每个成员称为数组的一个“数组单元”,保存在其中的数据值称为“数组元素”,数组对象的整体有一个名称,这个名称表示整个数组。,例如: int data5; 说明整型数组data,有5个元素。 float b10,c20; 说明单精度浮点型数组b,有10个元素;单 精度浮点型数组c,有20个元素。 char string20; 说明字符型数组string,有20个元素。,一维数组在内存的存储形式:,一组变量,int num5; num0= 12; num1=

5、 13;num2= 14; num3= 15; num4= 16;,注意: (1) 数组的数据类型定义的是每个数组元素的取值类型。对于一个数组来说,所有数组元素的数据类型应该都是相同的。 (2) 数组名要符合用户定义字的书写规则,也就是与普通变量一样。 (3) 在C语言的一个函数中,数组名不能与本函数的其它变量名同名。 (4)数组长度不能是变量,也不能是或包含变 量的表达式,可以是常量或常量表达式。并且 常量表达式应是整型数,不能是小数 。,程序段一: #define Size 5 main() int aSize,bSize+10; /*正确 */ 程序段二: main() int n=5;

6、 int datan; /*错误 */ ,7.2 一维数组的引用 引用数组单元的一般形式为: 数组名下标 数组下标从0开始,可以是整型变量或整型表达式,但不能是浮点型的变量或浮点型表达式;并且下标不能大于数组长度-1,因为超过部分没有被定义过,是不能正确使用的。 例如:data4、datai+j、datai+都是合法的引用方式。,数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 其中:下标可以是常量、变量或表达式,但最终值必须是整型数。,例 int a10; scanf(“%d”,a) ; (),必须 int a10; for(j=0;j10;j+) scanf(“%d”,

7、,数组的定义与引用中下标用法的区别,在数组的定义中:数组长度必须是整型常量,例如 int a100; 也就是说在定义数组的个数的时候必须给定元素的个数。下面的定义不正确: int n=5; int an; () n不是常量,是变量。 下面的写法也是正确的: #define size 5 main( ) int asize,bsize+5; (),在数组的引用中: 下标可以是常量,可以是变量,对于上面的例子,有: a0a99都可以用,还可以像如下这种方式用:i=2; ai=34; ai+; ai-; a+i; a-i;,7.3 一维数组元素值的输入与输出 例如 : main() int i ,

8、a10; for(i=0 ; i10 ; i+) scanf(“%d” , ,例 :用数组方式读入5个整数,并求和。 #include “stdio.h“ main() int i,data5,sum=0; printf(“nPlease enter 5 integer:“); for (i=0;i5;i+) scanf(“%d“, ,在语言中只能逐个地使用每个数组单元 进行操作,而不能一次引用整个数组。 例如,不能用printf(“%d”,data);来代替下 面的语句: for(i=0; i=4; i+) printf(“%d“,datai); 因为,C语言规定数组名本身代表数组的首 地址

9、。printf(“%u”,data);语句输出的是数组的 首地址,而不是数组单元的内容。,7.4 一维数组的初始化 初始化是指在数组定义时给数组元素赋予 初值。 一维数组初始化的一般形式是: 数据类型说明符 数组名数组长度=数值,数 值,. 数值;,int data5=1,2,3,4,5; 注意: (1) 允许初始化一部分元素,而不是全部。 int data5=1,2; (2) 初始化数组时,允许省略数组的长度。 int data=1,2,3,4,5; 与int data5=1,2,3,4,5;是完全等价的。 (3) 初始化数组时,不能对整个数组初始化。 例如,int data5=1;,数组的

10、初始化和赋值的区别,数组的初始化:是指在定义数组的时候进行的,例如: int a 3=1,2,3; /* 初始化 */ 数组元素的赋值: int a3; /* 定义整型数组 */ a1=1; a2=2; /* 数组元素赋值 */ a3=3,例【1】学校举行知识竞赛,有10个学生参 赛,请协助老师编写一个程序把成绩打印出 来。 解题步骤: 1、定义一个一维数组存放成绩 2、输出成绩。,7.4程序举例,代码实现 #include”stdio.h” main() int i; int student10=90,78,67,98,34,56,75,80,50,92; for(i=0;i10;i+) p

11、rintf(“%d”, studenti); ,例【2】将例【1】中的10个学生的竞赛成绩从键盘输入,计算出平均分,将平均分输出到屏幕上。 #include”stdio.h” #define SIZE 10 main() int i,studentSIZE,sum=0,AVG; for(i=0;iSIZE;i+) scanf(“%d”, ,例 3读10个整数存入数组,找出其中最大值和最小值,步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x0 (b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi 3. 输出:max和min,#in

12、clude #define SIZE 10 main() int xSIZE,i,max,min; printf(“Enter 10 integers:n“); for(i=0;ixi) min=xi; printf(“Maximum value is %dn“,max); printf(“Minimum value is %dn“,min); ,例4用数组方式解决Fibonacci数列问题,求出 Fibonacci数列的前20项存储在数组中,并将数 组内容输出。,分析:定义一个含有20个元素的数组f ,即 int f20 ; 其中 f0=1,f1=1, fn=fn-1+fn-2 (n2) 用

13、一个循环结构:让循环变量n从 2到 20 ,循环体为 fn=fn-1+fn-2,#include “stdio.h“ void main() int i,fib20=1,1; /*初始化 */ printf(“n“); for (i=2;i20;i+) fibi=fibi-1+fibi-2; for (i=1;i=20;i+) printf(“%10d“,fibi-1); if (i%5=0) printf(“n“); /*换行,每行输出5个 */ ,例 5用冒泡法对 8 个数从小到大排序,排序过程:首先把8个数放到数组a8 中。 a0 =38;a1=49;a2=65;a3=76;a4=13;

14、a5=27;a6=30;a7=97 ;,排序过程:首先把8个数放到数组a8 中。 a8=38,49,65,76,13,27,30,97,13 27 30 38 49 65 76 97,38 13 27 30 49 65 76 97,38 49 13 27 30 65 76 97,38 49 65 13 27 30 76 97,38 49 65 76 13 27 30 97,49 38 65 97 76 13 27 30,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,n=1,n=2,n=3,n=4,n=5,n=6,13 27 30 38 49 65 76 97,n=7,30,27,下标到N-1,下标到N-2,下标到N-3,下标到N-4,下标到N-5,下标到N-6,下标到N-7,冒泡排序法规律总结,1、假如有N个数,则需要

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号