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

下载本文档

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

文档简介

1、? 一个班学生的学习成绩? 一行文字? 一个矩阵这些数据的特点是:1. 具有相同的数据类型2. 使用过程中需要保留原始数据C 语言为这些数据,提供了一种构造数据类型:数组。所谓数组 就是一组具有相同数据类型的数据的有序集合。一维数组及其应用例 1:一维数组元素赋值及输出练习.main()int i,a10;/* 定义数组整型数组a,它含有十个元素。*/for(i=0;i<=9;i+)ai=i;/*通过 for 循环依次为数组a 中的每个元素赋值。 */for(i=9;i>=0;i-)/*通过 for 循环依次输出数组a 中的每个元欢迎下载2素的值。 */printf("%

2、3d ",ai);/*请注意输出元素的顺序*/运行结果:9876543210总结:程序使a0到 a 9的值为 09,然后按逆序输出。例 2:用数组来处理求 Fibonacci(菲波那契)数列问题,求出前40 个数并以每行4 个数输出。Fibonacci数列 :F1 = 1n 1欢迎下载3F2= 1n 2Fn = Fn-1 + Fn-2n 3即: 11235813。#include <stdio.h>main ( )int i;longf 40= 1, 1;/*定义长整型数组f 存放 40 个 Fibonacci数,对第一个和第二个元素先赋初值1 */for( i = 2;

3、 i < 40; i+)/*从 第三个元素 起分别利用前两个元素求和得到其值 */欢迎下载4f i = f i-2 + f i-1;for ( i = 0; i < 40; i+)/* 利用循环依次输出40 个数*/if ( i % 4 = 0) printf ("n");/* 每输出 4 个数输出一个换行符*/printf("%16ld",f i);/* 要注意长整型数据的输出格式控制符的写法*/运行结果:欢迎下载5例 3:找一批数中的最大值main()int i,max,a10;printf("input10 numbers:n

4、");/输入提示信息 “请输入10 个数 ”欢迎下载6for (i=0;i<10;i+)scanf("%d",&ai) ;/输入 10 个数到数组中max =a0;for (i=1;i<10;i+)if(ai>max)max=ai;/ 从数组中找最大的数赋值给maxprintf("maxmum=%dn",max);/输出 max 的值运行结果:input 10 numbers:欢迎下载78294563716maxmum=9例 4:冒泡法排序(从小到大排序)思路:将相邻两个数进行比较,将小的调到前头。若n 个数比较,要比

5、较 n-1 趟,用 j 表示趟数,则第j 趟要比较 n-j 次。main()int a11;inti,j,t;printf( “input 10 numbers : n”);欢迎下载8for (i=1;i<11;i+)scanf( “%d ”,&ai);printf( “n ”);for(j=1;j<=9;j+)for(i=1;i<=10-j;i+)if (ai>ai+1)t=ai;ai=ai+1;ai+1=t;Printf( “the sorted numbers :n”);for(i=1;i<11;i)printf( %d ,a i );欢迎下载9pr

6、intf( n );/* 程序结束 */运行结果:Input10 numbers :1 0 48 12 65 -76 100-45 123The sorted numbers :-76-4501481281265100123本程序中,第一个for 循环,是表示要循环的趟数,第二个for 循环,是表示每一趟里面循环的次数。例 5:有一个已经排好序的数组,今输入一个整数,要求按原来排序欢迎下载10的规律将它插入数组中。为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。假设排序是从大到小进行的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i 时

7、,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i 即可。如果被插入数比所有的元素值都小则插入最后位置。main()int i,j,p,q,s,n,a11=320,260,258,154,68,57,45,16,8,2;欢迎下载11for(i=0;i<=10;i+)printf("%d ",ai); /* 先输出原始排好序的数据序列 */ printf("n Input a number:n");scanf("%d",&n);/* 输入一个数插入到序列中*/if (

8、n<a9)a10=n;elsefor(i=0;i<10;i+)if(n>ai) for(s=9;s>=i;s-) as+1=as;欢迎下载12break;ai=n ;printf("n result:n");for(i=0;i<=10;i+) /* 输出结果 */ printf("%d ",ai);printf("n");运行结果:欢迎下载13本程序首先输入要插入的整数n 。再用一个for 语句把 n 和数组元素逐个比较,如果发现有n>ai 时,则由一个内循环把i 以后各元素值顺次后移一个单元。后移

9、应按照从后向前依次进行(从 a9 开始到ai 为止 )。 后移结束跳出外循环。插入点为i,把 n 赋予 ai 即可。如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10 ,结果是把n 赋于 a10 。最后一个循环输出插入数据后的数组各元素欢迎下载14值。二维数组及其应用例 6:将一个二维数组行和列元素互换,存到另一个二维数组中。例array a:array b:如: 123144562536欢迎下载15程序如下:#include <stdio.h>void main()int a 2 3 =1 , 2,3 ,4 ,5, 6;int b 3 2, i ,j;printf(a

10、rray a:n );for (i=0;i<=1;i+)欢迎下载16for (j=0;j<=2;j+)printf(%5d,ai j );bj i =ai j ;printf(n);printf(array b:n);运行结果如下:array a:123456array b:1 42 536欢迎下载17for (i=0;i<=2;i+)for(j=0;j<=1;j+)printf("%5d, bi j );printf( n); /*程序结束 */例 7:有一个 3×4的矩阵,要求编程序求出其中值最大的那个元素的欢迎下载18值,以及所在的行号和列号。

11、程序:main ( ) int i,j, row=0, colum=0, max;staticint a34=1,2,3,4,9,8,7,6, 10,10, 5,2max=a00;for (i=0;i<=2; i+)for (j=0; j<=3; j+)欢迎下载19if (aij>max) max=aij;row=i;colum=j ;printf( "max=%d,row=%d, colum=%dn ", max, row, colum);输出结果为:max=10, row=2, colum=1欢迎下载20例 8:打印出以下的杨辉三角形(要求打印出10

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

13、;N;i+)欢迎下载23ai1=1;aii=1;for(i=3;i<N;i+)for(j=2;j<=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;i<N;i+)欢迎下载24for(j=1;j<=i;j+)printf("%6d ",aij);printf("n");printf("n");字符数组及其应用例 9:输出一个字符串 main()欢迎下载25char x = I , , a, m, , a , , b , o, y ;int i;for(i=0;i<10;i+)printf(

14、“%c”ci);printf(“%n”);运行结果: I am a boy例 10:输出一个钻石图形#include <stdio.h>void main()欢迎下载26 char diamond 5= , , * , , * , , * , *, , , , * , , * , , * , , , *;int i,j;for (i=0;i<5;i+) for (j=0;j<5;j+)printf(%c, diamond i j );printf( n );运行结果* * *欢迎下载27例 11:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。程序如下:#in

15、clude <stdio.h>void main()char string81;/* 定义一个字符型数组*/int i,num=0,word=0;/* 定义几个整型常量,i 用来控制循环次数, num表示单词个数, word 相当于一个标志 */欢迎下载28char c;/* 定义一个字符型变量*/gets(string);/* 获取用户输入的一句话,在这句话的末尾系统会自动添加一个结束标志'0'*/for (i=0;(c=string i )!= 0;i+)/* 从 string0开始判断,只要它不是结束标志,就执行下面的语句*/if(c= ) word=0;/*

16、 判断当前字符是不是空格,比如I ama boy ,第一个 I 不是空格,所以就不执行 word=0,而执行下一句*/else if(word=0)/* 判断 word 是不是等于0(word=0 表示把 0赋给 word,word=0 表示判断 word 等不等于 0),显然是的,因为开始时赋给 word 的值是 0*/欢迎下载29 word=1;/* 所以执行语句:“把1 赋给 word;num+”,此时 num为 1。 */num+;printf(There are %d words in theline. n, num);运行情况如下:I am a boy.There are 4 words in the line.总结:可以看出word 的目的就是防止num重复相加。欢迎下载30例 12 :有 3 个字符串 , 要求找出其中最大者.程序如下 :#include<stdio.h>#include<string.h>void main ( )char string20 ;char str3 20;int i;欢迎下载31fo

温馨提示

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

评论

0/150

提交评论