数组程序举例

上传人:日度 文档编号:146135221 上传时间:2020-09-26 格式:DOC 页数:28 大小:59KB
返回 下载 相关 举报
数组程序举例_第1页
第1页 / 共28页
数组程序举例_第2页
第2页 / 共28页
数组程序举例_第3页
第3页 / 共28页
数组程序举例_第4页
第4页 / 共28页
数组程序举例_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《数组程序举例》由会员分享,可在线阅读,更多相关《数组程序举例(28页珍藏版)》请在金锄头文库上搜索。

1、一个班学生的学习成绩一行文字一个矩阵这些数据的特点是:1.具有相同的数据类型2.使用过程中需要保留原始数据C语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集合。一维数组及其应用例1:一维数组元素赋值及输出练习.main() int i,a10; /* 定义数组整型数组a,它含有十个元素。*/ for(i=0;i=0;i-) /*通过for循环依次输出数组a中的每个元素的值。*/ printf(%3d ,ai); /*请注意输出元素的顺序 */ 运行结果:9 8 7 6 5 4 3 2 1 0总结:程序使a0到a9的值为09,然后按逆序输出。例2:用数

2、组来处理 求 Fibonacci(菲波那契) 数列问题,求出前40个数并以每行4个数输出。Fibonacci 数列: F1 = 1 n 1 F2 = 1 n 2 Fn = Fn-1 + Fn-2 n 3即:11235813。#include main ( )int i;long f 40 = 1, 1; /*定义长整型数组f存放40个Fibonacci 数,对第一个和第二个元素先赋初值1 */for ( i = 2; i 40; i+) /*从第三个元素起分别利用前两个元素求和得到其值*/f i = f i-2 + f i-1;for ( i = 0; i 40; i+) /* 利用循环依次输

3、出40个数 */if ( i % 4 = 0) printf (n); /* 每输出4个数输出一个换行符 */ printf (%16ld, f i ); /* 要注意长整型数据的输出格式控制符的写法 */运行结果:例3:找一批数中的最大值main() int i,max,a10; printf(input 10 numbers:n); /输入提示信息“请输入10个数” for (i=0;i10;i+) scanf(%d,&ai); /输入10个数到数组中 max =a0; for (i=1;imax) max=ai; /从数组中找最大的数赋值给max printf(maxmum=%dn,ma

4、x); /输出max的值运行结果:input 10 numbers:8 2 9 4 5 6 3 7 1 6 maxmum=9例4:冒泡法排序(从小到大排序)思路:将相邻两个数进行比较,将小的调到前头。若n个数比较,要比较n-1趟,用j表示趟数,则第j趟要比较n-j次。main() int a11; int i,j,t; printf(“input 10 numbers : n”); for (i=1;i11;i+) scanf(“%d”,&ai); printf(“n”); for(j=1;j=9;j+) for(i=1;iai+1) t=ai;ai=ai+1;ai+1=t; Printf(“

5、the sorted numbers :n”); for(i=1;i11;i)printf(%d ,ai); printf(n);/*程序结束*/运行结果:Input 10 numbers :1 0 4 8 12 65 -76 100 -45 123The sorted numbers :-76 -45 0 1 4 8 12 8 12 65 100 123 本程序中,第一个for循环,是表示要循环的趟数,第二个for循环,是表示每一趟里面循环的次数。例5:有一个已经排好序的数组,今输入一个整数,要求按原来排序的规律将它插入数组中。为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小

6、还是从小到大进行的。假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。main() int i,j,p,q,s,n,a11=320,260,258,154,68,57,45,16,8,2; for(i=0;i=10;i+) printf(%d ,ai); /* 先输出原始排好序的数据序列*/printf(n Input a number:n); scanf(%d,&n); /* 输入一个数插入

7、到序列中 */if (na9)a10=n;elsefor(i=0;iai) for(s=9;s=i;s-) as+1=as; break; ai=n; printf(n result:n);for(i=0;iai时,则由一个内循环把i以后各元素值顺次后移一个单元。后移应按照从后向前依次进行(从a9开始到ai为止)。 后移结束跳出外循环。插入点为i,把n赋予ai即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a10。最后一个循环输出插入数据后的数组各元素值。二维数组及其应用array a: 1 2 3 4 5 6array b: 1 4 2 5 3 6 例6

8、:将一个二维数组行和列元素互换,存到另一个二维数组中。例如:程序如下:#include void main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij);运行结果如下:array a: 1 2 3 4 5 6array b: 1 4 2 5 3 6 bji=aij; printf(n); printf(array b:n);for (i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); print

9、f(n); /*程序结束*/例7:有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。程序:main ( ) int i,j, row=0, colum=0, max; static int a34=1,2,3,4,9,8,7,6, 10,10, 5, 2 max=a00; for (i=0;i=2; i+) for (j=0; jmax) max=aij; row=i; colum=j; printf( max=%d,row=%d, colum=%dn , max, row, colum);输出结果为:max=10, row=2, colum=1例8:打印出以下的

10、杨辉三角形(要求打印出10行)11 1 1 2 11 3 3 11 4 6 4 11 5 10 10 1。杨辉三角是(a+b)的n次幂的展开式系数,如:(a+b)0展开后的系数是1(a+b)1展开后的系统数是1 1(a+b)2展开后的系数是 1 2 1(a+b)3展开后的系数是 1 3 3 1从而我们得到杨辉三解的系数规律(指数为n):1、各行第一个数都是12、各行最后一个数都是13、若用二维数组存放系数,每行存放一组,则从第二行开始除最后一个数与第一个数外,每个数都是其所在行的上一行同一列与前一列之和。可以这样表示: # define N 11main()int i,j,aNN;for(i=

11、1;iN;i+) ai1=1; aii=1;for(i=3;iN;i+) for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j;for(i=1;iN;i+) for(j=1;j=i;j+) printf(%6d ,aij); printf(n); printf(n);字符数组及其应用例9:输出一个字符串main()char x =I, , a, m, , a, , b, o, y ;int i;for(i=0;i10;i+) printf(“%c”ci);printf(“%n”);运行结果:I am a boy 例10:输出一个钻石图形#include void main() char diamond

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

当前位置:首页 > 大杂烩/其它

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