一维数组及其应用.ppt
关于一维数组及其应用现在学习的是第1页,共10页一为什么要使用数组 两个数中得到最大值?三个数中得到最大值?四个数中得到最大值?max=a;If (max=b) max=b ;If (max=c) max=c max=a;If (max=b) max=b ;If (max=c) max=c ;If (max=b) max=a; else max=b; 现在学习的是第2页,共10页第五章 数组构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定5.1 一维数组一维数组的定义v定义方式: 数据类型 数组名常量表达式; 合法标识符表示元素个数下标从0开始 :数组运算符单目运算符优先级(1)左结合不能用( )例 int a6;a00145a1a2a3a4a523a编译时分配连续内存内存字节数=数组维数* sizeof(元素数据类型)数组名表示内存首地址,是地址常量现在学习的是第3页,共10页一维数组的引用v数组必须先定义,后使用v使用printf, scanf时,只能逐个引用数组元素,不能一次引用整个数组v数组元素表示形式: 数组名下标其中:下标可以是常量或整型表达式例 int i=15; int datai; (不能用变量定义数组维数)例 int a10; printf(“%d”,a); ()必须 for(j=0;j10;j+) printf(“%dt”,aj); for (j=0;j10;j+) scanf(“%d”, &aj); ()例 int data5; data5=10; /C语言对数组不作越界检查,使用时要 注意现在学习的是第4页,共10页一维数组的初始化v初始化方式 在定义数组时,为数组元素赋初值(在编译阶段使之得到初值) int a5=1,2,3,4,5;等价于:a0=1; a1=2; a2=3; a3=4; a4=5;v说明:l数组不初始化,其元素值为随机数l当全部数组元素赋初值时,可不指定数组长度如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0;如 int a3=6,2,3,5,1; ()static int a5;等价于:a0=0; a1=0; a2=0; a3=0; a4=0;l只给部分数组元素赋初值 int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数现在学习的是第5页,共10页程序举例例 读10个整数存入数组,找出其中最大值和最小值步骤:1. 输入:for循环输入10个整数2. 处理:(a) 先令max=min=x0(b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi3. 输出:max和min #include #define SIZE 10main() int xSIZE,i,max,min; printf(Enter 10 integers:n); for(i=0;iSIZE;i+) printf(%d:,i+1);scanf(%d,&xi); max=min=x0; for(i=1;iSIZE;i+) if(maxxi) min=xi; printf(Maximum value is %dn,max); printf(Minimum value is %dn,min);现在学习的是第6页,共10页例 用数组求Fibonacci数列前20个数)3()2(12) 1(1121nFFFnFnFnnnf0f1f2f3f4f5f19.11f1901452319235#include main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;ia1,则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束现在学习的是第8页,共10页例38 49 65 76 13 27 30 97第一趟38 49 65 13 27 30 76 97第二趟49 38 65 97 76 13 27 30n=83849659776971397279730764997386513767630972713 27 30 38 49 65 76 97第七趟 76继续循环现在学习的是第9页,共10页感谢大家观看感谢大家观看现在学习的是第10页,共10页