资源描述:
《7-第七章 数组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七章数组7.1数据结构与数组的概念影响程序设计的因素除算法外还有数据结构。■数据结构概念编写一个程序除了重视算法的设计外,还需重视数据类型的选择,即选择合适的数据类型来存放要处理的数据。在程序设计中,数据类型就称为数据结构,选择合适的数据类型实际上就是进行数据结构的设计。在程序设计中有格言:数据结构+算法=程序说明数据结构与算法同等重要,算法依赖于数据结构,对于同一个问题的求解,可以采用不同的数据结构和不同的算法,对不同的数据结构有不同的算法,其复杂程度也会不同,选择合适的数据结构,可以降低算法的复杂程度。因此,在程序设计中应重视数据结构
2、的设计。例:求任意100个数中的最大值。voidmain(){inti,a,max;max=-32768for(i=1;i<=100;i++){scanf(“%d”,&a);if(a>max)max=a;}printf(“max=%d”,max);}用一个简单变量作为数据结构,合理,算法简单对于三个数的排序:voidmain(){inta,b,c,t;scanf(“%d,%d,%d”,&a,&b,&c);if(a
3、tf(“%d,%d,%d”,a,b,c);}对于很多个数的排序用变量会很复杂而用数组会使算法很简单。仍可用变量作为数据结构■数组的概念inta[10]a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]一组具有同样类型的数据的集合统一用一个名字代表---数组名(代表一组数)数组元素下标数组名数组中的各成员称数组元素,由数组名加下标唯一地确定。将一组数用一个名字代表,便于管理。只有一个下标的数组称为一维数组;可有二维数组、三维数组、…、七维数组。7.2一维数组的定义和引用■定义一般形式:类型符数组名[常量表达式
4、];inta[10];floatb[10];类型符数组名长度作用:分配一组连续的内存单元说明:●数组必须先定义后使用。●数组名的命名规则与变量相同。●常量表达式表示元素的个数(长度),下标从0开始。●常量表达式不能包含变量,即不允许作动态定义。■引用逐个引用其元素,不能进行整体引用。引用的一般形式:数组名[下标]如:a[0]=50;a[1]=100;a[2]=a[0]+a[1];与a2=a0+a1有根本性的区别:下标可变。例:从键盘输入10个数。用变量:(不方便)scanf(“%d%d%d%d%d%d%d%d%d%d”,&a0,&a1,&a
5、2,&a3,&a4,&a5,&a6,&a7,&a8,&a9);用数组:(灵活方便)for(i=0;i<10;i++)scanf(“%d”,&a[i]);用循环控制输入个数和下标的变化。注意下标的变化范围。■初始化在定义数组的同时给数组赋初值。inta[10]={0,1,2,3,4,5,6,7,8,9};inta[10]={0,1,2,3,4};inta[]={0,1,2,3,4};■应用举例(1)对100个学生的分数统计最高分、最低分和平均分。两种方法:用变量作为存放初始数据的数据结构用数组作为存放初始数据的数据结构voidmain(){i
6、nti,a,max,min;floataver=0;max=0;min=100;for(i=0;i<100;i++){scanf(“%d”,&a);if(a>max)max=a;if(a7、++){if(a[i]>max)max=a[i];if(a[i]a[max])max=i;if(a[i]8、or(i=0;i<100;i++){scanf(“%d”,&a);if(a>aver)n++;}printf(“%d”,n);}用变量数据结构不合理voidmain(){in