C语言程序设计第四版PPT谭浩强.ppt
《C语言程序设计第四版PPT谭浩强.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第四版PPT谭浩强.ppt(56页珍藏版)》请在三一文库上搜索。
1、第6章 数组,课程内容,Ch1 创建一个C语言程序 Ch2 算法的重要性及表达 Ch3-5 基本程序结构, 数据及运算 Ch6 数组成批数据如何处理? Ch7 函数大型的程序如何划分? Ch8 指针变量在内存的存储与访问 Ch9 结构体较为复杂的数据结构 Ch10 文件持久保存数据 补充 位运算,习题5.4 统计一串英文字符中的大写字母、小写字母、数字、空格、其他字符的个数。,问题扩展:输入一句英文,统计并输出每个字母使用的频数和频率,例5.8 Fibonacci数列,问题:如何使用数学中的下标变量x1,x2,xn,形式表示一组相关的数据,例5.8 Fibonacci数列用数组解决,int i
2、,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)%5=0) printf(“n“); ,数组的概念,有序数据的集合 用同一名称表示一组相同类型的相关数据 用下标区分各个元素 相当于数学中的下标变量,如 x1 , x2 , . a11 , a12 , . , a21 , .,一维数组的定义,定义: 类型说明 数组名常量 定义一个数组的名称、类型、元素个数,一维数组的定义,short int a3;,说明:不能动态定义数组,见
3、P.143说明(3),存储地址,数组元素,存储单元,0000000000000110,a2=6;,一维数组元素的引用,定义后的数组可分别引用各个元素 数组名下标 下标是整型常量或表达式 注意:引用的是数组中的元素,而不是整个数组;C编译系统对下标越界的引用不给出错误提示,一维数组的定义和引用-阅读程序,int a5,i; for (i=0;i=3;i+) ai=2*i; a4=100; for (i=0;i=4;i+) printf(“a%d=%dn“,i,ai); ai=20; printf(“a%d=%dn“,i,ai);,一维数组的定义和初始化,int a10=2,5,3,1,8,6,9
4、,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);,一维数组的定义、初始化和引用,例:显示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“);
5、 ,一维数组的定义和引用,例:求一维数组最大值及下标,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);,一维数组的定义和初始化,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(“输入要查找的值: “
6、); scanf(“%d“,这是顺序查找法。 还有一种常用的折半查找法,数据量大且有序时使用,效率更高。,折半查找,int a11=5,13,19,21,37,56,64,75,80,88,92; int index=-1,key,low,high,middle; scanf(“%d“,一维数组的定义和引用,例:排序算法,算法演示 冒泡排序 选择排序 插入排序 快速排序,基本思路:依次将数组中相邻两元素比较,并按要求的顺序交换,从而将最大/最小的数推至最前或最后;对余下的数重复上述步骤,最终获得所需的顺序,冒泡排序,对数组元素a0-a5升序排序 比较a5和a4,若顺序不符则交换; 比较a4和a
7、3,若顺序不符则交换; 比较a3和a2,若顺序不符则交换; 比较a2和a1,若顺序不符则交换; 比较a1和a0,若顺序不符则交换。,冒泡排序,=结果:最小的数被换到了a0中。 =对a1-a5重复上述步骤,将其中最小的数换到a1中。 =重复上述步骤直至完成排序。,冒泡排序,冒泡排序,int a6,i,j,t; for (i=0;i=i;j-) if (aj=aj-1) t=aj; aj=aj-1; aj-1=t; for (i=0;i6;i+) printf(“%dn“,ai);,基本思路:在一列数中找到最小/最大值,与指定位置的数交换;对余下的数重复上述步骤,最终获得所需的顺序。,选择排序,对
8、数组元素a0-a5升序排序 找a0至a5的最小值,与a0交换其值 找a1至a5的最小值,与a1交换其值 找a2至a5的最小值,与a2交换其值 找a3至a5的最小值,与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交换*/ ,选择排序,选
9、择排序,for (i=0;i5;i+) imin=i; for (j=i+1;j=5;j+) if (ajaimin) imin=j; /*只记录最小值的下标imin,最小值就是aimin */ if (imin!=i) t=ai; ai=aimin; aimax=t; /* 当imin=i时无需交换 */ ,对选择排序法进行改进,二维数组的定义,类型说明 数组名常量常量 功能:定义一个二维数组的名称、类型、元素个数,二维数组的定义和存放,说明:二维数组在内存中按行连续存放 例如定义 short int a23;,二维数组的定义和逻辑结构,二维数组可视为一维数组的集合 例如 int a23;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第四 PPT 谭浩强
链接地址:https://www.31doc.com/p-2143050.html