计算机程序设计A.ppt
《计算机程序设计A.ppt》由会员分享,可在线阅读,更多相关《计算机程序设计A.ppt(50页珍藏版)》请在优知文库上搜索。
1、第五章 数组本章目的n熟练掌握一维数组的定义和引用;熟练掌握一维数组的定义和引用;n掌握二维数组的定义和引用;掌握二维数组的定义和引用;n利用数组编写程序利用数组编写程序( 求最大最小值求最大最小值, 平均值平均值, 选选择排序择排序, 冒泡排序冒泡排序, 字符串的处理字符串的处理, 矩阵运算矩阵运算)为什么要使用数组n只用前面所讲的基本数据类型只用前面所讲的基本数据类型(int , long , float , double , char ), 解决复杂的问题有困解决复杂的问题有困难难.n例:排序问题例:排序问题两个数排序?两个数排序?if ( a b ) t = a; a = b; b =
2、 t; 三个数排序?三个数排序?if ( a b ) t = a; a = b; b = t; if ( a c ) t = a; a = c; c = t; if ( b c ) t = b; b = c; c = t; 四个数排序?if ( a b ) t = a; a = b; b = t; if ( a c ) t = a; a = c; c = t; if ( a d ) t = a; a = d; d = t; if ( b c ) t = b; b = c; c = t; if ( b d ) t = b; b = d; d = t; if ( c 1)#include void
3、 main ( ) int i;long f 40 = 1, 1;for ( i = 2; i 40; i+)f i = f i-2 + f i-1;for ( i = 0; i 40; i+) if ( i % 4 = 0) printf (n); printf (%16ld, f i );5-1 一维数组n应用举例应用举例n例例 2 :输入一个班级学生的一门课成绩:输入一个班级学生的一门课成绩( 人数人数=50) , 计算计算平均成绩平均成绩, 并并统计高于平均成绩统计高于平均成绩的学的学生人数生人数.n解解:必须用数组完成必须用数组完成。算法框图:。算法框图:5-1 一维数组n对对n 个
4、数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(1) 选择法排序:找出最小的放在最前面。选择法排序:找出最小的放在最前面。5-1 一维数组n对对n 个数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(1) 选择法排序:找出最小的放在最前面。每一选择法排序:找出最小的放在最前面。每一轮找出一个最小的,共轮找出一个最小的,共n1轮。轮。#include void main( )float a 100 , t ; int i, j, k, n; scanf(“%d”, &n) ; for( i=0 ; in ; i+) scanf(“%f”, &ai) ;for
5、( i=0; in-1; i+) k=i ;for( j=i+1 ; jaj ) k=j ;t=ai; ai=ak; ak=t; for( i=0 ; in ; i+) printf(“%.2f ”, ai );5-1 一维数组n对对n 个数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(2)冒泡法排序:将相邻两个数比较,将小的调)冒泡法排序:将相邻两个数比较,将小的调到前头,大的调到后面。到前头,大的调到后面。98542098542089 59 49 29 099985420958 48 28 0888420589552045894402458922结果开始024589共循
6、环多少次?共循环多少次?每次循环进行了多少次比较?什么时候结束?每次循环进行了多少次比较?什么时候结束?如果序列为如果序列为5、8、9、4、2、0,先排在最后的还是,先排在最后的还是 9 吗?吗?如果要求先将最小的数排在最前面,该如何操作?如果要求先将最小的数排在最前面,该如何操作?5-1 一维数组n对对n 个数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(2)冒泡法排序)冒泡法排序数据结构数据结构: 变量变量n: 这一组数的个数这一组数的个数,从键盘输入从键盘输入. 一维数组一维数组a: 存放这存放这n 个数个数(a0,an-1) 循环变量循环变量i表示轮次,初值表示轮次
7、,初值=0 循环变量循环变量j表示每轮中,比较时元素的下标值。表示每轮中,比较时元素的下标值。 j每轮都从每轮都从0开始,以开始,以aj 和和 aj+1 比较比较 每轮比较次数不断减每轮比较次数不断减1。5-1 一维数组n对对n 个数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(2)冒泡法排序)冒泡法排序#include void main( ) int a 100 , n , i , j , t ; scanf(“%d”, &n) ; for( i=0 ; in ; i+) scanf(“%d”, &ai) ; for( i=0; in-1; i+) for( j=0 ;
8、 jaj+1 ) t=aj; aj=aj+1; aj+1=t; for( i=0 ; in ; i+) printf(“%d ”, ai );5-1 一维数组n对对n 个数排序问题个数排序问题( 以从小到大排序为例以从小到大排序为例)n(2)冒泡法排序:改进的冒泡排序:如果在某轮)冒泡法排序:改进的冒泡排序:如果在某轮外循环中外循环中,一次交换也没有发生一次交换也没有发生, 则说明已排好序则说明已排好序, 外循环可以不再进行外循环可以不再进行.n可以用一个标记变量来表示是否交换过。可以用一个标记变量来表示是否交换过。5-1 一维数组n在在n个数中查找某一个数。个数中查找某一个数。n顺序查找法:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计
