一维数组应用.doc

上传人:博****1 文档编号:557621453 上传时间:2022-10-02 格式:DOC 页数:15 大小:63.51KB
返回 下载 相关 举报
一维数组应用.doc_第1页
第1页 / 共15页
一维数组应用.doc_第2页
第2页 / 共15页
一维数组应用.doc_第3页
第3页 / 共15页
一维数组应用.doc_第4页
第4页 / 共15页
一维数组应用.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《一维数组应用.doc》由会员分享,可在线阅读,更多相关《一维数组应用.doc(15页珍藏版)》请在金锄头文库上搜索。

1、一维数组的应用一维数组的相关应用1数组的定义:定义格式: 数据类型 数组名数组的长度其中:数据类型 就是前面讲到的 int、float、long、double、char等基本类型,当然也可以是我们后面还要介绍的其他类型(此处暂不考虑)。数组名 与普通变量的起名规则是一样的。但不能与同一函数中的其他任何变量起一样的名字。数组的长度 定义是数组的长度只能是常量或常量表达式,否则就会出现编译错误。例如 :我们要定义一个整型数组,它里面能够存放10个元素,则应该定义成如下形式:int a10;其他类型的数组与此类似,如:float f15, f210;long long110, long250;cha

2、r ch130, ch210;也可以采用常量表达式来定义:如#define N 100main() float numN; /定义了具有N个浮点型数据元素的数组,其中N为常量以下列举一些关于数组的应用,记住一点,数组的操作跟循环是息息相关的。一维数组对应单重循环,后面要讲的二维数组对应的是二重循环。2给一维数组元素赋值:程序如下#include main()myfunc( );myfunc( ) int a10, i;printf(“input ten int number:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf

3、(“%d”, &ai);3一维数组元素的输出:程序如下#include main()myfunc( );myfunc( )int a10, i;printf(“input ten int number:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf(“%d”, &ai);/*下面的代码,将已经赋值的数组各元素输出到屏幕上*/for (i=0; i10; i+)printf(“%d “, ai);4对一维数组元素进行相应处理后再输出。例如:将一个数组中的元素逆序存储后,再输出到屏幕上。程序如下:#include main(

4、)myfunc( );myfunc( )int a10, i;printf(“input ten int number:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf(“%d”, &ai);/*下面循环用来输出处理以前的数组的各个元素*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);/*下面的循环用来将数组的元素逆序存储*/*逆序存储的方法:将第0个元素与第9个元素交换;再将第1个元素与第8个元素交换;依此类推,直到第4个元素与第5个元素交换后结束。*/for (i=0;

5、 i5; i+)t = ai; ai = a9-i;a9-i =t;/*下面的代码,将已经处理过的数组各元素输出到屏幕上*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);小结:通过上面这个程序,我们知道,对于数组的处理,通常按顺序分为4步:第一步:给数组的各个元素赋值;(上面程序中的蓝色部分代码)第二步:输出处理以前的数组;(上面程序中的紫黑色部分代码)第三步:对数组的各个元素按题目要求进行相应处理;(上面程序中的浅绿色部分代码)第四步:对处理结果进行输出,与处理之前的输出相比较;(上面程序中红色部分代码)5数组元素的排序(1) 冒泡排序(将数

6、组元素按照从小到大的顺序排序)程序如下:#include main()myfunc( );myfunc( )int a10, i;printf(“input ten int number:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf(“%d”, &ai);/*下面循环用来输出处理以前的数组的各个元素*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);/*下面的循环用来将数组的元素按从小到大的顺序进行排序*/*冒泡排序法原理:对N个数(这里N为10)进行排序。采用两两比较交

7、换的方法,不断将大数交换到数组的后端。第一轮将10个数中最大的数交换到a9中(需要通过9次比较),第二轮将剩余的9个数中最大的数交换到a8中(需要通过8次比较),第9轮将剩余的两个数中的最大数交换到a1中,也就意味着剩下的那个数就是最小的数,并且放在了a0中。至此,已经将10个数排好序了。总结一下规律:外循环表示轮次:最大的轮次应为 N-1 (N是数组中数的个数)内循环表示每轮比较交换的次数: 最大交换次数应为 N-当前的轮次*/for (i=1; i=9; i+) /*这个9即是N-1得来的(本题中N=10)*/for (bj=0; bj abj+1) t = ai; ai = a9-i;a

8、9-i =t;/*下面的代码,将排好序的数组各元素输出到屏幕上*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);(2) 选择法排序(将数组元素按照从小到大的顺序排序)#include main()myfunc( );myfunc( )int i, j, k, temp, a10;printf(“input ten int number:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf(“%d”, &ai);/*下面循环用来输出处理以前的数组的各个元素*/for (i=0;

9、i10; i+)printf(“%d “, ai);printf(“n”);/*下面的循环用来将数组的元素按从小到大的顺序进行排序*/*选择排序法原理:从10个元素中选择出最小的一个与第0个元素对调,再从剩下的9个元素中选择最小的数与第1个元素对调,再从剩下的8个元素中选择最小的数与第2个元素对调,直到从最后的2个元素中选择最小数与第8个元素对调,则第9个元素自然就是最大的数了。(注意:数组是从0开始计算元素个数的。)*/for (i=0; i9; i+)k=i;for(j=k+1; jaj) k=j; /这个for循环在剩下的k个数中找出一个最小数所在的位置/下面三条语句将剩下元素中的最小数

10、与第i个元素进行对调temp=ai; ai=ak; ak=temp;/*下面循环用来输出处理以后的数组的各个元素*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);6数组的插入操作例如:已知有一个已经按从小到大的顺序排好序的整型数组(假设为10个元素),现在从键盘上输入一个新的整数,将其插入到数组中,并且要保持该数组仍是有序的。程序如下:#include main()myfunc( );myfunc( )int a11, i, j, x; /*数组本来有10个元素,因要多插入一个元素,故定义为11*/printf(“input ten int n

11、umber:n”);/*下面的for循环将给数组a的每个元素赋值(从键盘上输入的)*/for (i=0; i10; i+)scanf(“%d”, &ai);/*下面循环用来输出处理以前的数组的各个元素*/for (i=0; i10; i+)printf(“%d “, ai);printf(“n”);printf(“input a new int number for insert:”); scanf(“%d”, &x);/*下面的循环将一个新的整数插入到这个排好序的数组中*/*插入操作的原理:假定新输入的数为x,用x依次去和数组中的每个元素进行比较,直到找到第一个比x大的元素为止,此时说明已经

12、找到了x应该插入的位置了。然后从数组的末尾开始到找到的位置处止的这一段数据元素依次向后移一个位置,以腾出空位来插入x的值。*/for (i=0; i x) break; /*从数组末尾开始,移动数组的元素*/for (j=9; ji; j-)aj+1 = aj;ai = x; /*将x插入到数组中*/*下面的代码,将插入x后的数组各元素输出到屏幕上*/for (i=0; i11; i+)printf(“%d “, ai);printf(“n”);7数组元素的删除操作例如:已知有一个已经按从小到大的顺序排好序的整型数组(假设为10个元素),现在从键盘上输入一个新的整数,将数组中的该数删除,如果数组中不存在此数,则提示相应的错误信息。程序如下:#include main()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号