c语言(第六章)数组-谭.ppt
第六章第六章 数组数组本章目标本章目标1.了解数组的数据结构了解数组的数据结构2.理解一维和多维数组的定义和关系理解一维和多维数组的定义和关系3.了解数组元素在内存的存放规则了解数组元素在内存的存放规则4.了解数组元素和数组名的作用了解数组元素和数组名的作用5.掌握数组的使用方法掌握数组的使用方法6.掌握基本的排序算法掌握基本的排序算法一、数组具有的特征一、数组具有的特征数组名数组名数组元素的个数数组元素的个数数组元素的类型。数组元素的类型。6 6.1 1 引引言言二、数组的作用二、数组的作用 数组元素的作用相当于简单变量数组元素的作用相当于简单变量 数组名代表的是数组在内存中的首地址数组名代表的是数组在内存中的首地址 同一个数组中的元素在内存中是按顺序同一个数组中的元素在内存中是按顺序连续存放的连续存放的6.2 6.2 一维数组一维数组一、一维数组的定义一、一维数组的定义形式形式:类型说明符类型说明符 数组名数组名常量表达式常量表达式;例例:inta20;floatx100;代表数组元素的个数其中a和x都是数组名。1.数组名的确定方法同变量名。数组名的确定方法同变量名。2.C语言用方括号语言用方括号 表示数组元数个数。表示数组元数个数。对于inta5;表示有表示有5个元素个元素,元素的下标从元素的下标从0开始开始.数组a的元素分别为:a0,a1,a2,a3,a4数组数组 a 在内存中的存放顺序:在内存中的存放顺序:a0的值a1的值a2的值a3的值a4的值:注意:注意:在没有给数组元素赋值以前,没有确定的值。二、一维数组的引用二、一维数组的引用 2.引用数组元素的方式引用数组元素的方式:数组名数组名下标下标 1.必须象使用变量那样必须象使用变量那样,先定义先定义,后使用后使用则a05+a16为正确的算术表达式例:例:inta5;a0=1;a1=2;:例例:一维数组的输入与输出。一维数组的输入与输出。main()main()int i,a10;int i,a10;for(i=0;i10;i+)for(i=0;i10;i+)ai=i;ai=i;for(i=0;i=9;i+)for(i=0;i=9;i+)printf(“%4d”,ai);printf(“%4d”,ai);问题?问题?将输入数据按逆序输出将输入数据按逆序输出.例例:一维数组的输入与输出。一维数组的输入与输出。main()main()int i,a10;int i,a10;for(i=0;i10;i+)for(i=0;i10;i+)ai=i;ai=i;for(i=0;i=9;i+)for(i=0;i0;i-)for(i=9;i0;i-)printf(“%d”,ai);printf(“%d”,ai);三、数组元素赋初值三、数组元素赋初值 对全部元素赋初值。对全部元素赋初值。如:如:inta10=10,11,12,13,14,15,16,17,18,19表示数组元素的值为:a0=10;a1=11;:a9=19;对部分元素赋初值对部分元素赋初值(前面的连续元素前面的连续元素)。如:在此,只有前5个元素初值确定。intb10=0,1,2,3,4;表示数组元素的值为:b0=0;b1=1;b2=2;b3=3;b4=4;注意:注意:不能只对不连续部分元素或后面的连续元素赋初值。语句语句:inta10=,1,2,3,4,5;inta10=1,3,5,7,9,;是错误的。如对数组元素赋同一初值如对数组元素赋同一初值,必须一一写出必须一一写出:staticinta10=2,2,2,2,2,2,2,2,2,2;不可写成任何其他形式。若赋全部元素的初值若赋全部元素的初值,可省略常量表达式可省略常量表达式 inta=0,1,2,3;表示a4,即只有4个元素。一、采用循环方式对数组元素赋初值一、采用循环方式对数组元素赋初值6 6.3 3 数数组组应应用用实实例例二、内存与数组的关系二、内存与数组的关系前面已讲过:数组元素在内存中是按顺前面已讲过:数组元素在内存中是按顺序连续存放的;序连续存放的;重要特性:重要特性:系统对超出数组元素的使用系统对超出数组元素的使用不查错。不查错。例:例:#includemain()inta5=0,1,2,3,4,i;charch5=a,b,c,d,e;for(i=0;i10;i+)printf(a%d=%d,ch%d=%cn,i,ai,i,chi);printf(%s,ch);a0=0,ch0=aa1=1,ch1=ba2=2,ch2=ca3=3,ch3=da4=4,ch4=ea5=25185,ch5=a6=25699,ch6=a7=23909,ch7=a8=22,ch8=a9=285,ch9=Abcde三、一维数组的应用三、一维数组的应用求Fibonacci数列的前20项。定义数组定义数组,并赋初值并赋初值staticintf20=1,1;/*定义数组的前两个元素*/注:注:c c规定只有静态数组规定只有静态数组staticstatic和外部存储数组和外部存储数组externextern才能才能进行初始化!(对于构造数据类型如数组、结构体进行进行初始化!(对于构造数据类型如数组、结构体进行初始化通常定义为静态存储类别)初始化通常定义为静态存储类别)fi=fi-1+fi-2,且f1=f2=1。用循环用循环for求数列的后求数列的后18项项:注意注意:下标越界问题:i=2且i20for(i=2;i20;i+)fi=fi1+fi2;#includemain()inti;staticintf20=1,1;for(i=2;i20;i+)fi=fi1+fi2;for(i=0;i20;i+)if(i%5=0)printf(n);printf(%12d,fi);程序如下:程序如下:程序如下:程序如下:18899875556106765113144159722113315843343774181例例:歌手比赛,歌手比赛,1010位评委打分,去掉最高分,最低位评委打分,去掉最高分,最低分,得成绩。分,得成绩。main()main()int score10,i,max=-1,min=101,sum=0;int score10,i,max=-1,min=101,sum=0;float mark;float mark;for(i=0;i10;i+)for(i=0;i10;i+)printf(“please enter the score%d:”,printf(“please enter the score%d:”,i+1i+1););scanf(“%dn”,scanf(“%dn”,&scorei&scorei););sum=sum+scorei;sum=sum+scorei;for(i=0;i10;i+)for(i=0;imax)max=scorei;if(scoreimax)max=scorei;if(scoreimin)min=scorei;if(scoreia1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束例例 用冒泡法对用冒泡法对10个数排序个数排序985420例例:用冒泡法对用冒泡法对1010个数进行排序个数进行排序(冒泡排序法冒泡排序法)算法算法:(:(从小到大从小到大)将两个相邻的数进行比较将两个相邻的数进行比较,将小的将小的数调换到前头数调换到前头.895420859420854920854290854209第一趟结结果果第第5次次第第4次次第第3次次第第2次次第第1次次5842054820542805420885420第二趟结结果果第第4次次第第3次次第第2次次第第1次次main()main()int a11,i,j,t;int a11,i,j,t;printf(“input 10 number:n”);printf(“input 10 number:n”);for(i=1;i11;i+)for(i=1;i11;i+)scanf(“%d”,&ai);scanf(“%d”,&ai);printf(“n”);printf(“n”);for(j=1;j=9;j+)for(j=1;j=9;j+)for(i=1;i=10-j;i+)for(i=1;iai+1)if(aiai+1)t=ai;ai=ai+1;t=ai;ai=ai+1;ai+1=t;ai+1=t;printf(“the sorted printf(“the sorted numbers:n”);numbers:n”);for(i=1;i11;i+)for(i=1;iai+1ftaiai+1输出a1an排序过程:(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换第一趟选择排序,结果最小的数被安置在第一个元素位置上(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序(3)重复上述过程,共经过n-1趟排序后,排序结束例例 用简单选择法对用简单选择法对10个数排序个数排序例例:用选择法对用选择法对1010个数进行排序。(记录下标)个数进行排序。(记录下标)main()main()int a10,i,j,t,k;int a10,i,j,t,k;for(i=0;i10;i+)scanf(“%d”,&ai);for(i=0;i10;i+)scanf(“%d”,&ai);printf(“n”);printf(“n”);for(i=0;i9;i+)for(i=0;ik*/k=i;/*min=k*/for(j=i+1;j10;j+)for(j=i+1;j10;j+)if(ajak)k=j;if(ajak)k=j;t=ak;ak=ai;ai=t;t=ak;ak=ai;ai=t;printf(“the sorted numbers:n”);printf(“the sorted numbers:n”);for(i=0;i10;i+)for(i=0;i10;i+)printf(“%4d”,ai);printf(“%4d”,ai);printf(“n”);printf(“n”);6.4 6.4 二维数组二维数组一、二维数组的定义一、二维数组的定义形式:形式:例例:inta410;floatx820;类型说明符类型说明符 数组名数组名常量表达式常量表达式1 常量表达式常量表达式22.可将二维数组的元素看成为若干个特殊可将二维数组的元素看成为若干个特殊的一维数组。的一维数组。可看成:可看成:有三个特殊的一维数组b0,b1,b2,每一个又有四个元素:1.不可将定义写为不可将定义写为int a4,10。注意:注意:b00,b01,b02,b03,b10,b11,b12,b13,b20,b21,b22,b23,如如:intb34;3.二维数组的存放方式为二维数组的存放方式为:按行优先按行优先。由此。由此可推广可推广 至三维、至三维、n维数组的定义和存放。维数组的定义和存放。4.初始化初始化:即即:最右边的下标变化最快。按行给二维数组赋初值按行给二维数组赋初值:staticinta34=1,2,3,4,5,6,7,8,9,10,11,12;或:或:staticinta34=1,2,3,4,5,6,7,8,9,10,11,12;可以对部分元素赋初值可以对部分元素赋初值,但需表达清楚。但需表达清楚。则相当于若:若:staticinta34=1,2,3,8则相当于如如:staticinta34=1,2,3,8。可通过赋初值决定数组大小。如为二维可通过赋初值决定数组大小。如为二维,则只可省略第一维的大小。则只可省略第一维的大小。staticinta4=1,2,3,12;二、二维数组元素的引用二、二维数组元素的引用形式形式:其中的下标为整型表达式其中的下标为整型表达式,但不得越界。但不得越界。与一维数组元素一样与一维数组元素一样,二维数组元素相当于同类二维数组元素相当于同类型的简单变量。型的简单变量。注意下标值应在已定义的数组大小范围内;注意下标值应在已定义的数组大小范围内;如:如:int a23;int a23;则则a23=3a23=3的引用是的引用是不合法不合法的。的。请区分定义数组请区分定义数组a23a23和引用元素和引用元素a23a23的不同。的不同。数组名数组名下标下标1下标下标2三、三、程序举例程序举例a=123456b=142536例例:将一个二维数组行和列元素互换,存到另一个二维数组中。例如:例如:例例:将一个二维数组的行列互换存放到另一个数组中将一个二维数组的行列互换存放到另一个数组中.即即:1 21 23 3 4 54 56 6main()main()static int a23=1,2,3,4,5,6;static int a23=1,2,3,4,5,6;static int b32,i,j;static int b32,i,j;printf(“array a:n”);printf(“array a:n”);for(i=0;i=1;i+)for(i=0;i=1;i+)for(j=0;j=2;j+)for(j=0;j=2;j+)printf(“%5d”,aij);printf(“%5d”,aij);bji=aijbji=aij;printf(“n”);printf(“n”);printf(“array b:n”);printf(“array b:n”);for(i=0;i=2;i+)for(i=0;i=2;i+)for(j=0;j=1;j+)for(j=0;jmaxftmax=aijrow=icolum=j输出max,row,colum#include#include main()main()int i,j,row=0,colum=0,max;int i,j,row=0,colum=0,max;static int a34=1,2,3,4,static int a34=1,2,3,4,9,8,7,6,-10,-10,-5,2;9,8,7,6,-10,-10,-5,2;max=a00;max=a00;for(i=0;i=2;i+)for(i=0;i=2;i+)for(j=0;j=3;j+)for(j=0;jmax)if(aijmax)max=aij;row=i;colum=j;max=aij;row=i;colum=j;printf(“max=%d,row=%d,colum=%dn”,max,row,columprintf(“max=%d,row=%d,colum=%dn”,max,row,colum););注意:注意:数组元素数据的输入必须以循环方式数组元素数据的输入必须以循环方式进行或者定义时置初值。进行或者定义时置初值。二维数组一般用二重循环对每个元素二维数组一般用二重循环对每个元素赋值。赋值。二维数组与一维数组的对应关系:二维数组与一维数组的对应关系:6A00A01A02A03A10A11A12A13A20A21A22A2349 13 138734122A0A1A2A3A4A5A6A7A8A9A10A11字符数组的定义字符数组的定义字符数组的初始化与赋值字符数组的初始化与赋值字符数组的输入与输出字符数组的输入与输出字符串处理函数字符串处理函数字符数组的应用举例字符数组的应用举例字符数组字符数组1 1、字符数组的定义方法与前面其他类型的数组的定义相同、字符数组的定义方法与前面其他类型的数组的定义相同.数组类型数组类型 数组名数组名 元素个数元素个数 例如例如:(1 1)char string5=“ABCD”;char string5=“ABCD”;(2 2)char c10;char c10;c0=I;c1=;c2=a;c3=m;c0=I;c1=;c2=a;c3=m;c4=;c5=h;c6=a;c7=p;c4=;c5=h;c6=a;c7=p;c8=p;c9=y;c8=p;c9=y;c0 c1 c2 c3 c4 c5 c6 c7 c8 c9c0 c1 c2 c3 c4 c5 c6 c7 c8 c92 2、要点:、要点:数组类型:必须是数组类型:必须是charchar型。型。元素个数:为实际字符个数元素个数:为实际字符个数+1,+1,放结束标志放结束标志字符数组的定义字符数组的定义ABCD0字符串的结束标志字符串的结束标志“0”1 1、字符串的结束标志:字符串的结束标志:“0”“0”:ASCIIASCII码值为码值为0 0的字符。的字符。在程序中判断字符串是否结束不再是依据字符数组的长在程序中判断字符串是否结束不再是依据字符数组的长度而是查找字符串的结束标志度而是查找字符串的结束标志“0”.“0”.2 2、例:、例:char string=“abcdef”char string=“abcdef”char char string=a,b,c,d,e,fstring=a,b,c,d,e,f字符数组的初始化字符数组的初始化1 1、将字符逐一送入字符数组中、将字符逐一送入字符数组中,例如例如:static char c10=I,static char c10=I,a,m,h,a,p,p,y;,a,m,h,a,p,p,y;要点:要点:在给字符数组赋初值时初值的个数不能超过字符数的长度在给字符数组赋初值时初值的个数不能超过字符数的长度,若初值字符的个数小于数组的长度时若初值字符的个数小于数组的长度时,字符与数组前面的元字符与数组前面的元素对应素对应,其余的元素自动赋值其余的元素自动赋值00(空字符)。(空字符)。字符数组的大小也可以省略。如字符数组的大小也可以省略。如:static char c=b,o,o,k;static char c=b,o,o,k;请区别字符数组与字符串的不同请区别字符数组与字符串的不同2 2、对一批字符的描述对一批字符的描述3 3、字符数组的赋值字符数组的赋值4 4、例例对一批字符的描述对一批字符的描述1 1、方法:采用二维数组来描述,数组的第一维为字、方法:采用二维数组来描述,数组的第一维为字符串的个数,第二维的元素个数为字符串符串的个数,第二维的元素个数为字符串中最长字符个数中最长字符个数+1+1。2 2、例:、例:char menu320+1=“1-Openfile”,char menu320+1=“1-Openfile”,“2-Closefile”,“2-Closefile”,“3-Exit to DOS”“3-Exit to DOS”static char diamond55=static char diamond55=“*”,“*”,”*”,”*”,”*”,”*”,”*”,”*”,”*”*”字符数组的赋值字符数组的赋值1 1、在、在c c语言中对字符串赋初值可以写成语言中对字符串赋初值可以写成:static char c=“I am happy”;static char c=“I am happy”;或或static char c=“I am happy”static char c=“I am happy”;这里字符数组的长度不是这里字符数组的长度不是10,10,而是而是1111。2 2、将一个字符串赋值给一个字符数组、将一个字符串赋值给一个字符数组,只能用在赋只能用在赋初值的情况下初值的情况下,不能用在赋值语句中不能用在赋值语句中.例如例如:char str11;char str11;str=“I am happy”;str=“I am happy”;是是错误错误的的.v字符串及其结束标志l无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串l字符串结束标志字符串结束标志:0例“hello”共5个字符,在内存占6个字节字符串长度5h e l l o 0104 101 108 108 111 0内存存放字符ASCII码字符串字符串例例:字符数组元素的引用。字符数组元素的引用。main()main()static char static char c10=I,a,m,h,a,p,c10=I,a,m,h,a,p,p,y;p,y;int i;int i;for(i=0;i10;i+)for(i=0;i10;i+)printf(“%c”,ci);printf(“%c”,ci);printf(“n”);printf(“n”);运行结果:运行结果:I am happyI am happy试试 char c10=“I am happy”char c10=“I am happy”例例:输出一个钻石图形。输出一个钻石图形。main()main()static char diamond55static char diamond55 =,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*;,*;int i,j;int i,j;for(i=0;i5;i+)for(i=0;i5;i+)for(j=0;j5;j+)for(j=0;j5;j+)printf(“%c”,diamondij);printf(“n”);printf(“%c”,diamondij);printf(“n”);运行结果:运行结果:*字符串的输入与输出字符串的输入与输出一、逐个字符的输入与输出一、逐个字符的输入与输出用格式符用格式符“%c”“%c”输入或输出一个字符。输入或输出一个字符。二、将整个字符串一次输入或输出,用二、将整个字符串一次输入或输出,用“%s”“%s”。如:如:static char c=“china”static char c=“china”;printf(“%s”,c)printf(“%s”,c);三、要点:三、要点:输出字符不包括结束符输出字符不包括结束符“0”.“0”.用用“%“%s”s”时,时,printfprintf中输出项是字符数组名,而不是元素名。中输出项是字符数组名,而不是元素名。printfprintf(“%s”,c0)(“%s”,c0)错错若数组长度大于字符串实际长度,也只输出到若数组长度大于字符串实际长度,也只输出到00结束。结束。char c10=“China”;char c10=“China”;printfprintf(“%s”,c);(“%s”,c);结果:结果:ChinaChina若一个字符数组中包含一个以上的若一个字符数组中包含一个以上的00,则遇到第一个,则遇到第一个00时时就结束输出。就结束输出。字符串的输入与输出字符串的输入与输出1.1.用用“%c”“%c”格式输出单个字符格式输出单个字符.例如例如:static char str=“book”;static char str=“book”;for(i=0;i4;i+)for(i=0;istr2.(2)str1str2.函数值为正数函数值为正数(3)str1str2.(3)str1str2.函数值为负数函数值为负数6.strlen(str)6.strlen(str)功能功能:测量字符数组的长度测量字符数组的长度,不包括不包括“0”.“0”.7.strwr(str)7.strwr(str)功能功能:将大写字母转换为小写字母将大写字母转换为小写字母.8.strupr(str)8.strupr(str)功能功能:将小写字母转换为大写字母将小写字母转换为大写字母.例:当执行下面的程序且输入例:当执行下面的程序且输入ABCABC时时,输出结果为输出结果为:#include#include main()main()char ss10=“12345”;char ss10=“12345”;strcat(ss,”6789”);strcat(ss,”6789”);运行结果:运行结果:ABC ABC gets(ss);gets(ss);printf(“%s”,ss);printf(“%s”,ss);例gets函数和strcmp函数的应用。#includemain()charpass_str80;/*定义字符数组passstr*/inti=0;/*检验密码*/while(1)clrscr();printf(请输入密码n);gets(pass_str);/*输入密码*/if(strcmp(pass_str,“password”)!=0)/*口令错*/printf(口令错误,按任意键继续);elsebreak;/*输入正确的密码,中止循环*/getch();i+;if(i=3)exit(0);/*输入三次错误的密码,退出程序*/*输入正确密码所进入的程序段*/例例:程序程序main()main()char ch10;char ch10;scanf(“%s”,ch);scanf(“%s”,ch);printf(“%s”,ch);printf(“%s”,ch);执行时执行时,若从键盘输入若从键盘输入Good Morning,Good Morning,则输出为则输出为:A.Good Morning B.Good A.Good Morning B.Good C.Good Morni C.Good Morni D.Good Morn D.Good Morn b bHow0are0you?0#includemain()chara15,b5,c5;scanf(%s%s%s,a,b,c);printf(a=%snb=%snc=%sn,a,b,c);scanf(%s,a);printf(a=%sn,a);运行情况:输入:Howareyou?输出:a=Howb=arec=you?输入:Howareyou?输出:a=Howscanf中%s输入时,遇空格或回车结束运行情况:输入:Howareyou?例例 字符串输入举例字符串输入举例例例:程序程序main()main()char ch10;char ch10;gets(ch);gets(ch);printf(“%s”,ch);printf(“%s”,ch);执行时执行时,若从键盘输入若从键盘输入Good Morning,Good Morning,则输出为则输出为:A.Good Morning B.Good A.Good Morning B.Good C.Good Morni C.Good Morni D.Good Morn D.Good Morn a amain()inti;chara5;scanf(%s,a);for(i=0;i5;i+)printf(%d,ai);运行情况:(1)若输入hel,正常(2)若输入hell,正常(3)若输入hello,用%s输出时,会出现问题hel0hell0hello输入字符串长度数组维数例子包含在头文件string.hu字符串输出函数puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以0结束u字符串输入函数gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加0说明:输入串长度应小于字符数组维数常用的字符串处理函数常用的字符串处理函数包含在头文件string.h例#includemain()charstring80;printf(“Inputastring:”);gets(string);puts(string);输入:Howareyou?输出:Howareyou?常用的字符串处理函数常用的字符串处理函数u字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大连接前,两串均以0结束;连接后,串1的0取消,新串最后加0u字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大拷贝时0一同拷贝不能使用赋值语句为一个字符数组赋值例charstr120,str220;str1=“Hello!”;()str2=str1;()常用的字符串处理函数常用的字符串处理函数(1)u字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或0为止返值:返回int型整数,a.若字符串1字符串2,返回正整数c.若字符串1=字符串2,返回零说明:字符串比较不能用“=”,必须用strcmpu字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括0在内例对于以下字符串,strlen(s)的值为:(1)char s10=A,0,B,C,0,D;(2)char s=“tv0willn”;(3)char s=“x69082n”;答案:131常用的字符串处理函数(常用的字符串处理函数(2)#include#include main()char str1=”Hello!,str2=”How are you?”,str20;int len1,len2,len3;len1=strlen(str1);len2=strlen(str2);if(strcmp(str1,str2)0)strcpy(str,str1);strcat(str,str2);else if(strcmp(str1,str2)0)strcpy(str,str2);strcat(str,str1);else strcpy(str,str1);len3=strlen(str);puts(str);printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);Howareyou?Hello!Len1=6,Len2=12,Len3=18例strcmp与strlen举例例题例例:有一个一维数组,内放有一个一维数组,内放1010个学生成绩,写一个函数,求出平均个学生成绩,写一个函数,求出平均分、最高分和最低分。分、最高分和最低分。float max=0,min=0;main()float max=0,min=0;main()float average(array,n)float ave,score10;float average(array,n)float ave,score10;float array;int n;int i;float array;int n;int i;int i;for(i=0;i10;i+)int i;for(i=0;i10;i+)float aver,sum=array0;scanf(“%f”,&scorei);float aver,sum=array0;scanf(“%f”,&scorei);max=min=array0;ave=average(score,10);max=min=array0;ave=average(score,10);for(i=0;in;i+)for(i=0;imax)max=arrayi;max,min,ave);if(arrayimax)max=arrayi;max,min,ave);else if(arrayimin)min=arrayi;else if(arrayimin)min=arrayi;sum=sum+arrayi;sum=sum+arrayi;aver=sum/n;aver=sum/n;return(aver);return(aver);二维数组应用举例【例例】给矩阵a赋值,并输出该矩阵的值。main()inta33=1,2,3,4,5,6,7,8,9,i,j;for(i=0;i3;i+)for(j=0;j3;j+)printf(%5d,aij);printf(n);该程序的运行结果如下:123456789字符串应用举例【例例】下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。#include#includemain()chara=”clanguage”,t;inti,j,k;k=strlen(a);for(i=0;i=k-2;i+=2)for(j=i+2;jaj)t=ai;ai=aj;aj=t;puts(a);printf(“n”);运行结果为:alancuegg。作业:例:汽车固定速度前进,里程表为一对称数95859,两小时后里程表又为一新对称数。求车速及新对称数main()intt,j,a5;longinti,temp,k;for(i=95859+1;i+)temp=i;k=10000;for(t=0;t5;t+)at=temp/k;temp=temp%k;k=k/10;if(a0=a4)&(a1=a3)for(j=0;j5;j+)printf(“%d”,aj);printf(“NewVelocityis:%dn”,(i-95859)/2);break;作业:有4个学生,每人3门课。已知各课成绩,求每门课的平均成绩和每个学生的平均成绩。Cour1cour2cour3stud1788692stud2627365stud3909395stud4827385作业:将一个数组中的值按逆序重新存放。例:原序:8,6,5,4,1改为:1,4,5,6,8Main()inti,j;floatsum,stud_ave4,cour_ave3;staticfloatscore43=78,86,92,62,73,65,90,93,95,82,73,86;for(i=0;i=3;i+)sum=0.0;for(j=0;j=2;j+)sum=sum+scoreij;stud_avei=sum/3;printf(“average%dis:%6.2fn”,i+1,stud_avei);for(j=0;j=2;j+)sum=0.0;for(i=0;i=3;i+)sum=sum+scoreij;cour_avej=sum/4;printf(“aceragecourse%dis:%6.2fn”,j+1,cour_avej);作业:有4个学生,每人3门课。已知各课成绩,求每门课的平均成绩和每个学生的平均成绩。作业:将一个数组中的值按逆序重新存放。例:原序:8,6,5,4,1改为:1,4,5,6,8main()intn=5,I,temp;staticinta5=8,6,5,4,1for(i=0;in/2;i+)temp=ai;ai=an-i-1;an-i-1=temp;for(I=0;in;i+)printf(“%4d”,ai);例例:分析下面的程序分析下面的程序,写出结果写出结果.main()main()int n33,i,j;int n33,i,j;for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j3;j+)for(j=0;j3;j+)nij=i+j;nij=i+j;for(i=0;i2;i+)for(i=0;i2;i+)for(j=0;j2;j+)for(j=0;j2;j+)ni+1j+1+=nij;ni+1j+1+=nij;printf(“%dn”,nij);printf(“%dn”,nij);运行结果为:运行结果为:6 6例例:分析下面的程序分析下面的程序,写出结果写出结果.main()main()int i=0;int i=0;char s110=“abc”,s210=“efg”;char s110=“abc”,s210=“efg”;strcat(s1,s2);strcat(s1,s2);while(s1i+!=0)while(s1i+!=0)s2i=s1i;s2i=s1i;puts(s2);puts(s2);运行结果为:运行结果为:作业:由键盘输入三个英文单词,将其按从小到大的顺序排列输出。#include“string.h”#include “stdio.h”void main()char s320,t20;int i,j;for(j=0;j3;j+)gets(sj);for(i=0;i2;i+)for(j=0;j0)strcpy(t,sj);str