数组程序举例_第1页
数组程序举例_第2页
数组程序举例_第3页
数组程序举例_第4页
数组程序举例_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,m

4、ax); /输出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 例

8、6:将一个二维数组行和列元素互换,存到另一个二维数组中。例如:程序如下:#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); prin

9、tf(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(

12、) char diamond5= , ,*,*, ,*,*, , , ,*, ,*, ,*, , ,*;运行结果 * * * * * * * int i,j; for (i=0;i5;i+) for (j=0;j5;j+) printf(%c,diamondij); printf(n); 例11:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。程序如下:#include void main() char string81; /*定义一个字符型数组*/ int i,num=0,word=0; /*定义几个整型常量,i用来控制循环次数,num表示单词个数,word相当于一个标志*/ ch

13、ar c; /*定义一个字符型变量*/ gets(string); /*获取用户输入的一句话,在这句话的末尾系统会自动添加一个结束标志0*/ for (i=0;(c=stringi)!=0;i+) /*从string0开始判断,只要它不是结束标志,就执行下面的语句*/if(c= ) word=0; /*判断当前字符是不是空格,比如I am a boy,第一个I不是空格,所以 就不执行word=0,而执行下一句*/ else if(word=0) /*判断word是不是等于0(word=0表示把0赋给word,word=0表示判断word等不等于0),显然是的,因为开始时赋给word的值是0*/ word=1; /*所以执行语句:“把1赋给word;num+”,此时num为1。*/ num+; printf(There are %d words in the line.n,num); 运行情况如下:I am a boy.There are 4 words in the line. 总结:可以看出word的目的就是防止num重复相加。例12:有3个字符串,要求找出其中最大者. 程序如下:#include#includevoid main ( ) char string20; char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论