C语言程序设计第四版ppt课件.ppt
《C语言程序设计第四版ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第四版ppt课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章章 数组数组课程内容课程内容lCh1 创建一个创建一个C语言程序语言程序lCh2 算法的重要性及表达算法的重要性及表达lCh3-5 基本程序结构基本程序结构, 数据及运算数据及运算lCh6 数组数组成批数据如何处理?成批数据如何处理?lCh7 函数函数大型的程序如何划分?大型的程序如何划分?lCh8 指针指针变量在内存的存储与访问变量在内存的存储与访问lCh9 结构体结构体较为复杂的数据结构较为复杂的数据结构lCh10 文件文件持久保存数据持久保存数据l补充补充 位运算位运算习题习题5.4 统计一串英文字符中的统计一串英文字符中的大写字母、小写字母、数字、空大写字母、小写字母、数字
2、、空格、其他字符的个数。格、其他字符的个数。l问题扩展:问题扩展:输入输入一句英文,统计并一句英文,统计并输出每个字母使用的频数和频率输出每个字母使用的频数和频率例例5.8 Fibonacci数列数列l问题:如何使用数学中的下标变量问题:如何使用数学中的下标变量x1,x2,xn,形式表示一组相关的数形式表示一组相关的数据据例例5.8 Fibonacci数列用数组解决数列用数组解决 int i,fibo40;fibo0=fibo1=1;for (i=2;i40;i+)fiboi=fiboi-1+fiboi-2;for (i=0;i40;i+)printf(%10d,fiboi);if (i+1)
3、%5=0) printf(n);数组的概念数组的概念l有序数据的集合有序数据的集合l用同一名称表示一组相同类型的相用同一名称表示一组相同类型的相关数据关数据l用下标区分各个元素用下标区分各个元素l相当于数学中的下标变量,如相当于数学中的下标变量,如 x1 , x2 , . a11 , a12 , . , a21 , .一维数组的定义一维数组的定义定义:定义: 类型说明类型说明 数组名数组名常量常量 定义一个数组的名称、类型、元素定义一个数组的名称、类型、元素个数个数一维数组的定义一维数组的定义short int a3;说明:不能动态定义数组,说明:不能动态定义数组,见见P.143说明说明(3)
4、存储地址存储地址数组元素数组元素存储单元存储单元0000000000000110a2=6;一维数组元素的引用一维数组元素的引用 定义后的数组可分别引用各个元素定义后的数组可分别引用各个元素 数组名数组名下标下标 下标是整型常量或表达式下标是整型常量或表达式注意:引用的是数组中的元素,而不注意:引用的是数组中的元素,而不是整个数组;是整个数组;C编译系统对下标越界编译系统对下标越界的引用不给出错误提示的引用不给出错误提示一维数组的定义和引用一维数组的定义和引用-阅读程序阅读程序int a5,i;for (i=0;i=3;i+) ai=2*i;a4=100;for (i=0;i=4;i+) pri
5、ntf(a%d=%dn,i,ai);ai=20;printf(a%d=%dn,i,ai);一维数组的定义和初始化一维数组的定义和初始化 int a10=2,5,3,1,8,6,9,4,7,1;定义整型数组定义整型数组a并给并给a0-a9赋初值赋初值一维数组的定义和初始化一维数组的定义和初始化 int a10=2,5,3,1,8,6;定义整型数组定义整型数组a并给并给a0-a5赋初值,赋初值,其余元素值为其余元素值为0一维数组的定义和初始化一维数组的定义和初始化int a5,i;for(i=0;i5;i+) printf(%dn,ai);一维数组的定义、初始化和引用一维数组的定义、初始化和引用例
6、:显示例:显示Fibonacci数列前数列前40项。项。 int i, fibo40=1,1;for (i=2;i40;i+)fiboi=fiboi-1+fiboi-2;for (i=0;i40;i+)printf(%10d,fiboi);if (i+1)%5=0) printf(n);一维数组的定义和引用一维数组的定义和引用例:求一维数组最大值及下标例:求一维数组最大值及下标int a10=23,41,56,21,15,67,32,44,16,31;int i, max;max=a0;for (i=0;imax) max=ai;printf(最大值: %dn,max);一维数组的定义和初始化
7、一维数组的定义和初始化 int a =2,5,3,1,8,6;定义整型数组定义整型数组a并赋初值,该数组包含并赋初值,该数组包含6个元素个元素a0-a5一维数组的定义和引用一维数组的定义和引用例:在一维数组中查找给定数据及下标例:在一维数组中查找给定数据及下标int a10=23,41,56,21,15,67,32,44,16,31;int i, key, index=-1;printf(输入要查找的值输入要查找的值: );scanf(%d,&key);for (i=0;i10;i+)if (key=ai)index=i;break;if (index=-1) printf(找不到找不到n);
8、else printf(找到,下标是找到,下标是: %dn,index);这是顺序查找法。还有一种常用的折半查找法,数据量大且有序时使用,效率更高。折半查找折半查找 int a11=5,13,19,21,37,56,64,75,80,88,92; int index=-1,key,low,high,middle; scanf(%d,&key); low=0;high=10; while(lowamiddle) low=middle+1; else high=middle-1; if (index!=-1) printf(Index: %d,index); else printf(Not fou
9、nd !);一维数组的定义和引用一维数组的定义和引用例:排序算法例:排序算法算法演示算法演示冒泡排序冒泡排序选择排序选择排序插入排序插入排序快速排序快速排序 基本思路:依次将数组中相邻两元基本思路:依次将数组中相邻两元素比较,并按要求的顺序交换,从而素比较,并按要求的顺序交换,从而将最大将最大/最小的数推至最前或最后;对最小的数推至最前或最后;对余下的数重复上述步骤,最终获得所余下的数重复上述步骤,最终获得所需的顺序需的顺序冒泡排序冒泡排序对数组元素对数组元素a0-a5升序排序升序排序比较比较a5和和a4,若顺序不符则交换;,若顺序不符则交换;比较比较a4和和a3,若顺序不符则交换;,若顺序不
10、符则交换;比较比较a3和和a2,若顺序不符则交换;,若顺序不符则交换;比较比较a2和和a1,若顺序不符则交换;,若顺序不符则交换;比较比较a1和和a0,若顺序不符则交换。,若顺序不符则交换。冒泡排序冒泡排序=结果:最小的数被换到了结果:最小的数被换到了a0中。中。=对对a1-a5重复上述步骤,将其中最重复上述步骤,将其中最小的数换到小的数换到a1中。中。=重复上述步骤直至完成排序。重复上述步骤直至完成排序。冒泡排序冒泡排序冒泡排序冒泡排序 int a6,i,j,t; for (i=0;i6;i+) scanf(%d,&ai); printf(n); for (i=1;i=i;j-) if (a
11、j=aj-1) t=aj; aj=aj-1; aj-1=t; for (i=0;i6;i+) printf(%dn,ai); 基本思路:在一列数中找到最小基本思路:在一列数中找到最小/最最大值,与指定位置的数交换;对余下大值,与指定位置的数交换;对余下的数重复上述步骤,最终获得所需的的数重复上述步骤,最终获得所需的顺序。顺序。选择排序选择排序对数组元素对数组元素a0-a5升序排序升序排序找找a0至至a5的最小值,与的最小值,与a0交换其值交换其值找找a1至至a5的最小值,与的最小值,与a1交换其值交换其值找找a2至至a5的最小值,与的最小值,与a2交换其值交换其值找找a3至至a5的最小值,与的
12、最小值,与a3交换其值交换其值找找a4至至a5的最小值,与的最小值,与a4交换其值交换其值选择排序选择排序for (i=0;i5;i+) imin=i;min=ai; /*求求ai之后元素的最小值之后元素的最小值*/ for (j=i+1;j=5;j+) if (ajmin) min=aj; /*变量变量min记录最小值记录最小值 */ imin=j; /*变量变量imin记录最小值的下标记录最小值的下标 */ temp = ai; ai = aimin; aimin = temp; /*最小值与最小值与ai交换交换*/ 选择排序选择排序选择排序选择排序for (i=0;i5;i+) imin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第四 ppt 课件
限制150内