《C语言程序设计》第4章数组.ppt

上传人:wuy****n92 文档编号:72953669 上传时间:2023-02-14 格式:PPT 页数:78 大小:1.54MB
返回 下载 相关 举报
《C语言程序设计》第4章数组.ppt_第1页
第1页 / 共78页
《C语言程序设计》第4章数组.ppt_第2页
第2页 / 共78页
点击查看更多>>
资源描述

《《C语言程序设计》第4章数组.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计》第4章数组.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章第四章 数数 组组Chapter 4 Array第四章第四章 数数 组组 在实际的应用中,经常会遇到某些类型相同并相互具有联系的数据。该类数据,经常要作相关的处理。如,一个班30个人的一门课程的成绩,求平均成绩、最高或最低成绩。处理这类数据的最好办法是将其定义成为一个具有共同特征的集合,这种同类型相关数据的集合称为数组。Chapter 4 Array第四章第四章 数数 组组Chapter 4 Array4.1 数组的基本概念 C 语言可以根据用户需要,用基本数据类型定义特殊性质的数语言可以根据用户需要,用基本数据类型定义特殊性质的数据类型,称为构造类型。构造类型有:据类型,称为构造类型。

2、构造类型有:数组、数组、结构、联合。结构、联合。数组:数组:相同数据类型变量相同数据类型变量的的有序有序集合。有序表现在数组元素在集合。有序表现在数组元素在内存中连续存放。内存中连续存放。数组用一个名字作为标识。数组用一个名字作为标识。为区分各元素,每个元素有一个用为区分各元素,每个元素有一个用整型表示的序号,称之为下标。下标可以有多个,下标的个数称为整型表示的序号,称之为下标。下标可以有多个,下标的个数称为数组的维数。数组的维数。如:十个整型变量如:十个整型变量 k0,k1,k9一个下标。一个下标。数组名。数组名。三个学生三门课程的成绩三个学生三门课程的成绩97.5 80.5 94.5 76

3、.5 81.4 90.060.0 64.5 75.0 学学号号 0 1 20 1 2 课程课程 下标一:行下标一:行下标二:列下标二:列数组元素:数组元素:a11第四章第四章 数数 组组Chapter 4 Array/*example 4-1(b)计算平均成绩计算平均成绩*/#include void main(void)int i;float math,ave;ave=0.0;/*平均成绩初值为平均成绩初值为0*/for(i=0;i10;i+)/*循环循环10次次*/scanf(%f,&math);/*输入成绩输入成绩*/ave=ave+math;/*累加成绩累加成绩*/ave=ave/10

4、;/*求平均求平均*/printf(ave=%fn,ave);【例例4-1】学学生生分分数数的的处处理理问问题题。有有10个个学学生生参参加加数数学学考考试试,考考试成绩由键盘输入,计算平均成绩。试成绩由键盘输入,计算平均成绩。第四章第四章 数数 组组Chapter 4 Array /*example 4-1(b)计算平均成绩计算平均成绩*/#include void main(void)int i;float math,ave;ave=0.0;/*平均成绩初值为平均成绩初值为0*/for(i=0;i10;i+)/*循环循环10次次*/scanf(%f,&math);/*输入成绩输入成绩*/a

5、ve=ave+math;/*累加成绩累加成绩*/ave=ave/10;/*求平均求平均*/printf(ave=%fn,ave);for(i=0;i=ave)printf(%fn,math);/*大于平均成绩则打印大于平均成绩则打印*/【例【例4-1(b)】第四章第四章 数数 组组Chapter 4 Array/*example 4-1(c)计算平均成绩计算平均成绩*/#includevoid main(void)int i;float math10,ave;ave=0.0;/*平均成绩初值为平均成绩初值为0*/for(i=0;i10;i+)/*循环循环10次次*/scanf(%f,&math

6、i);/*输入成绩输入成绩*/ave=ave+mathi;/*累加成绩累加成绩*/ave=ave/10;/*求平均求平均*/printf(ave=%fn,ave);for(i=0;i=ave)printf(%fn,mathi);/*大于平均成绩则打印大于平均成绩则打印*/【例【例4-1(c)】第四章第四章 数数 组组Chapter 4 Array数组必须先说明后使用。说明的目的如下:数组必须先说明后使用。说明的目的如下:说明数组的名字(标识)。说明数组的名字(标识)。说明数组的类型。说明数组的类型。说明数组的维数。说明数组的维数。确定各维下标的变化范围。确定各维下标的变化范围。编译系统将根据说

7、明,开辟内存单元按特有的顺序和相应的类编译系统将根据说明,开辟内存单元按特有的顺序和相应的类型为各元素分配内存单元。型为各元素分配内存单元。第四章第四章 数数 组组Chapter 4 Array4.2 一维数组一维数组 一维数组的说明一维数组的说明说明方式:说明方式:type array1常量表达式常量表达式,arrayn常量表达式常量表达式;类型说明符,根据需要可加修饰说明。说明数组的类型。类型说明符,根据需要可加修饰说明。说明数组的类型。数组名,用标识符命名。数组名,用标识符命名。用用 包含的常量表达式。数组的下包含的常量表达式。数组的下标从标从0变化到常量达式的值减一。变化到常量达式的值

8、减一。int id5,iyear10;float fScore36;当说明数组后,编译时系统会根据定义的类型分配连续的一段当说明数组后,编译时系统会根据定义的类型分配连续的一段内存单元给数组的各元素。内存单元给数组的各元素。id0id1id2id3id4 系统为数组分配的连续内存单元,每个系统为数组分配的连续内存单元,每个单元占两个单元占两个BYTE。首地址用数组名。首地址用数组名id表示。表示。第四章第四章 数数 组组Chapter 4 Array2.一维数组的引用一维数组的引用 数组是一组数,它们公用一个数组名,这是它们公有的属数组是一组数,它们公用一个数组名,这是它们公有的属性,但它们在

9、数组中的位置不同,这是它们私有的属性,为性,但它们在数组中的位置不同,这是它们私有的属性,为表明数组中的一个元素,既要指出其来自于哪个数组,这就表明数组中的一个元素,既要指出其来自于哪个数组,这就需要数组名;又要声明其在这个数组中的位置,这就需要下需要数组名;又要声明其在这个数组中的位置,这就需要下标标。一维数组中元素引用的一般形式为:一维数组中元素引用的一般形式为:数组名数组名下标值下标值说明:说明:下标通常为整型,如果为实型,系统自动取整;下标通常为整型,如果为实型,系统自动取整;下标常常巧妙的和循环变量相结合,随着循环变量的变化而下标常常巧妙的和循环变量相结合,随着循环变量的变化而变化,

10、可以达到事半功倍的效果;变化,可以达到事半功倍的效果;C语言不做下标越界的检查,即语法上对越界的下标不报错。语言不做下标越界的检查,即语法上对越界的下标不报错。第四章第四章 数数 组组Chapter 4 Array3.一维数组的存储一维数组的存储 计算机系统中有着大量的存储单元,为区别各个存储单元,计算机系统中有着大量的存储单元,为区别各个存储单元,每一个存储单元都有一个唯一的代表这个存储单元的地址,每一个存储单元都有一个唯一的代表这个存储单元的地址,就好像我们每一个人都有一个唯一的代表自己的身份证号一就好像我们每一个人都有一个唯一的代表自己的身份证号一样。计算机系统中,存储单元的地址的编码规

11、则是线性的,样。计算机系统中,存储单元的地址的编码规则是线性的,以十六进制表示,并且从以十六进制表示,并且从0开始计数,因此存储单元的地址开始计数,因此存储单元的地址为:为:0、1、2、.9、A、B、C、D、E、F、10H、.如果说明的是一个数组,如:如果说明的是一个数组,如:int math10;计算机开辟计算机开辟20个地址连续的存储单元(个地址连续的存储单元(TC环境下整型占环境下整型占2个字节,共有个字节,共有10个数组元素),用于存放数组中的个数组元素),用于存放数组中的10个数组元素,且这个数组元素,且这20个个存储单元的首地址标记为:数组名存储单元的首地址标记为:数组名math或

12、或&math0,其它,其它的地址依次标记为:的地址依次标记为:&math1.&math9,10个数组元个数组元素在内存中依次存放,它们是邻居关系,它们的地址是连续素在内存中依次存放,它们是邻居关系,它们的地址是连续的。的。第四章第四章 数数 组组Chapter 4 Array4.4.一维数组的初始化一维数组的初始化 数组的元素可以在说明数组时初始化。数组的元素可以在说明数组时初始化。int a10=1,2,3,4,5,6,7,8,9,10;/*/*说明数组,同时初始化全部元素。说明数组,同时初始化全部元素。*/*/float fValue10=1.0,2.0,3.0;/*说明数组,给部分元素初

13、值,其余元素为说明数组,给部分元素初值,其余元素为0。*/unsigned a=0 x0000,0 x0001,0 x0002;/*当数组元素全部赋初值时,可以不指定长度当数组元素全部赋初值时,可以不指定长度*/第四章第四章 数数 组组Chapter 4 Array/*example 4-2 数组的初始化数组的初始化*/#includevoid main(void)int i;int a5=1,2,3,4,5;int b5=1,2;int c=1,2,3;for(i=0;i5;i+)/*循环循环5次次*/printf(a%d=%d ,i,ai);/*输出输出a数组元素数组元素*/printf(

14、n);/*换行换行*/for(i=0;i5;i+)/*循环循环5次次*/【例【例4-2】数组的初始化示例。编写代码】数组的初始化示例。编写代码4-2如下,其执行结果如如下,其执行结果如图图4-3所示。所示。第四章第四章 数数 组组Chapter 4 Array printf(b%d=%d ,i,bi);/*输出输出b数组元素数组元素*/printf(n);/*换行换行*/for(i=0;i5;i+)/*循环循环5次次*/printf(c%d=%d ,i,ci);/*输出输出c元素,注意有危险元素,注意有危险*/printf(n);/*换行换行*/第四章第四章 数数 组组Chapter 4 Ar

15、ray5.5.一维数组的应用一维数组的应用【例【例4-3】兔子繁殖问题。】兔子繁殖问题。/*example 4-3 Fibonacci数列数列*/#include void main(void)int month;int f13=1,1;for(month=2;month13;month+)/*循环递推循环递推*/fmonth=fmonth-1+fmonth-2;/*计算数列计算数列*/for(month=0;month13;month+)printf(%d ,fmonth);/*输出数列输出数列*/第四章第四章 数数 组组Chapter 4 Array【例【例4-4】由键盘输入】由键盘输入n

16、个学生(设人数不超过个学生(设人数不超过50人)的数学成人)的数学成绩,分别统计优、良、中、及格、不及格的人数。绩,分别统计优、良、中、及格、不及格的人数。/*example 4-4 分别统计成绩分别统计成绩*/#include void main(void)int i,n;int a=0,b=0,c=0,d=0,e=0;/*表示各段人数表示各段人数*/float math50;printf(“n=?”);/*输入人数输入人数*/scanf(“%d”,&n);for(i=0;in;i+)/*循环循环n次次*/scanf(“%f”,&mathi);for(i=0;i=90)a+;/*分别统计分别

17、统计*/else if(mathi=80)b+;else if(mathi=70)c+;else if(mathi=60)d+;else e+;printf(%dt%dt%dt%dt%dn,a,b,c,d,e);/*打印打印*/第四章第四章 数数 组组Chapter 4 Array例:例:求求10个学生一门课程的平均分,并输出低于平均成绩的分数。个学生一门课程的平均分,并输出低于平均成绩的分数。#include void main(void)float fScore10,aver=0;int i;for(i=0;i10;i+)scanf(“%f”,&fScorei);aver+=fScorei

18、;aver/=10;for(i=0;i 10;i+)if(fScore i aver)printf(“num=%d,score=%f”,i+1,fScore i);说明数组。循环输入各元素的值并累加。循环输入各元素的值并累加。循环判断条件,满足条件输出。循环判断条件,满足条件输出。第四章第四章 数数 组组Chapter 4 Array4.3 二二 维维 数数 组组 在实际应用中,经常会遇到一些用多维索引的数据。如:四个在实际应用中,经常会遇到一些用多维索引的数据。如:四个学生三门课的成绩。可以用下表表示:学生三门课的成绩。可以用下表表示:92.580.591.099.083.590.070.0

19、66.060.078.056.059.0 显然,该表的每一项需要有两个索引项。表现为数组的两个下显然,该表的每一项需要有两个索引项。表现为数组的两个下标。超过一个下标的数组称为多维数组。标。超过一个下标的数组称为多维数组。行:代表某个学生。行:代表某个学生。列:代表某门课程。列:代表某门课程。第四章第四章 数数 组组Chapter 4 Array二二维数组的说明维数组的说明说明方式:说明方式:type array常量表达式常量表达式1常量表达式常量表达式n,;n个整型常量表达式个整型常量表达式数组元素的个数数组元素的个数?int a23,b452;多维数组在内存中的顺序多维数组在内存中的顺序i

20、nt a33;二维结构:二维结构:a00 a01 a02a10 a11 a12a20 a21 a22 排列顺序:先行后列。排列顺序:先行后列。a00a01a02a10a11a12a20a21a22下下标标为为0的的行行 总原则:最后一个下标先变化,变化一个周总原则:最后一个下标先变化,变化一个周期后,倒数第二个开始变化,期后,倒数第二个开始变化,如此类推。如此类推。a为数组在内为数组在内存中的首地址。存中的首地址。int b234;内存中的排列?内存中的排列?第四章第四章 数数 组组Chapter 4 Array二二维数组的初始化维数组的初始化数组可以在说明时初始化。数组可以在说明时初始化。全

21、部赋初值全部赋初值int a23=1,2,3,4,5,6;下标为下标为0的一行的一行下标为下标为1的一行的一行int b23=1,2,3,4,5,6;按内存顺序赋初值。按内存顺序赋初值。部分赋初值部分赋初值int a23=1,2;0行的行的0列的元素赋初列的元素赋初值。值。0行其余值为行其余值为0。int a23=1,2;对全体数组元素赋初值,第一维下标可以省略。对全体数组元素赋初值,第一维下标可以省略。int a 3=1,2,3,4,5,6;第四章第四章 数数 组组Chapter 4 Array二维二维数组元素的引用数组元素的引用 数组定义后,具备数组定义后,具备简单变量的一切性质简单变量的

22、一切性质,可以作为表达式的运,可以作为表达式的运算对象,也可以被赋值。引用时,算对象,也可以被赋值。引用时,只能引用数组元素只能引用数组元素,方式如下:,方式如下:arrayexp1expnint a1010,y,i=2;ai+26=20;y=ai+26*100/30;a1011=34;对对4行行6列的元素赋值。列的元素赋值。参加表达式运算。参加表达式运算。C语言不作下标检查,语法正确,语言不作下标检查,语法正确,但使用危险,可能造成程序的错误!但使用危险,可能造成程序的错误!整型表达式。整型表达式。第四章第四章 数数 组组Chapter 4 Array5.二维数组的应用二维数组的应用【例【例

23、4-5】下三角矩阵。】下三角矩阵。/*example 4-5 下三角矩阵下三角矩阵*/#include void main(void)int i,j;int a44;for(i=0;i4;i+)/*外循环遍历行外循环遍历行*/for(j=0;j=j)aij=1;/*下三角下三角*/else aij=0;/*上三角上三角*/for(i=0;i4;i+)第四章第四章 数数 组组Chapter 4 Array for(j=0;j4;j+)printf(“%4d”,aij);/*输出数列输出数列*/printf(“n”);/*换行换行*/第四章第四章 数数 组组Chapter 4 Array【例【例4

24、-6(a)】二维数组的转置】二维数组的转置。/*example 4-6(a)二维数组的转置二维数组的转置*/#include void main(void)int i,j;int a33=1,2,3,4,5,6,7,8,9;/*定义原数组定义原数组*/int b33;/*定义新数组定义新数组*/for(i=0;i3;i+)/*外循环遍历行外循环遍历行*/for(j=0;j3;j+)/*内循环遍历列内循环遍历列*/bij=aji;/*计算新元素计算新元素*/for(i=0;i3;i+)for(j=0;j3;j+)printf(“%4d,aij);/*输出原数组输出原数组*/printf(“n”)

25、;/*换行换行*/第四章第四章 数数 组组Chapter 4 Array printf(“n”);/*换行换行*/for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,bij);/*输出新数组输出新数组*/printf(“n”);/*换行换行*/第四章第四章 数数 组组Chapter 4 Array/*example 4-6(b)二维数组的转置二维数组的转置*/#includevoid main(void)int i,j,t;int a33=1,2,3,4,5,6,7,8,9;/*定义原数组定义原数组*/for(i=0;i3;i+)for(j=0;j3;j+)print

26、f(%4d,aij);/*输出原数组输出原数组*/printf(n);/*换行换行*/for(i=0;i3;i+)/*外循环遍历行外循环遍历行*/for(j=0;ji;j+)/*注意内循环范围注意内循环范围*/t=aij;/*互换元素互换元素*/aij=aji;【例【例4-6(b)】第四章第四章 数数 组组Chapter 4 Array aji=t;for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,aij);/*输出新数组输出新数组*/printf(n);/*换行换行*/第四章第四章 数数 组组Chapter 4 Array4.4 字字 符符 数数 组组 C语言没有

27、字符串变量,可以定义字符数组,每个元素存放一语言没有字符串变量,可以定义字符数组,每个元素存放一个字符,从而达到存放字符串的目的。个字符,从而达到存放字符串的目的。字符数组的说明字符数组的说明char charrayconst exp1const expn,;char a10,b212;字符数组的初始化字符数组的初始化一维数组赋初值一维数组赋初值char str16=h,e,l,l,o,0;char str2=”hello ”;用单个字符对每一个元素赋值。用单个字符对每一个元素赋值。用字符串对数组赋初值。用字符串对数组赋初值。可以指定长度,也可不指定长度。可以指定长度,也可不指定长度。系统会在

28、字串的结尾加系统会在字串的结尾加0,表示字符串结束。,表示字符串结束。因此,说明数组因此,说明数组时,长度指定应至少比实际长度大时,长度指定应至少比实际长度大1,保证赋初值正确。,保证赋初值正确。0存储结构:存储结构:hello0第四章第四章 数数 组组Chapter 4 Array二维数组赋初值二维数组赋初值二维数组的每一行可以存放一个字符串。二维数组的每一行可以存放一个字符串。char str36=”wang”,”zhang”,”liu”;wang0zhang0liu0 str数组在内存中数组在内存中的首地址。的首地址。存存储储结结构构第四章第四章 数数 组组Chapter 4 Array

29、字符数组的输入输出字符数组的输入输出格式输入输出函数格式输入输出函数输出:输出:for(i=0;iSTRLEN;i+)printf(“%c”,str i);/*通过循环输出各元素通过循环输出各元素*/printf(”%s”,str);/*用字符串形式输出用字符串形式输出*/输入:输入:scanf(”%s”,str);/*用字符串输入整个数组用字符串输入整个数组*/用用scanf函数输入时函数输入时space作为作为输入的分隔符输入的分隔符,因此输入带空格,因此输入带空格的字符串,会造成输入不全。的字符串,会造成输入不全。char a20;scanf(”%s”,a);输入:输入:China An

30、hui Hefei 结果结果a数组的内容是:数组的内容是:China0为了解决这个问题,系统定义如下专用于字符数组的为了解决这个问题,系统定义如下专用于字符数组的i/o函数。函数。第四章第四章 数数 组组Chapter 4 Arraygets()字符串输入函数字符串输入函数用法:用法:char str 80;gets(str);作用作用:读入一个以换行符为终结符的字符串到读入一个以换行符为终结符的字符串到str中,用中,用0代替换行符。代替换行符。数组名作为函数的参数。puts()字符串输出函数字符串输出函数用法:用法:char string=”China”;puts(string);数组名作

31、为函数的参数。作用:作用:输出以输出以NULL 即即0结尾的字符串结尾的字符串string,自动加上,自动加上换行符换行符。第四章第四章 数数 组组Chapter 4 Array【例【例4-7】用格式符】用格式符%c逐个输入和输出示例。逐个输入和输出示例。/*example 4-7 用格式符用格式符c逐个输入和输出逐个输入和输出*/#include void main(void)int i;char a12;for(i=0;i12;i+)scanf(%c,&ai);/*输入输入a数组元素数组元素*/for(i=0;i12;i+)printf(“%c”,ai);/*输出输出a数组元素数组元素*/

32、printf(n);第四章第四章 数数 组组Chapter 4 Array【例【例4-8】用格式符】用格式符s整体输入和输出示例。整体输入和输出示例。/*example 4-8 用格式符用格式符s整体输入和输出整体输入和输出*/#include void main(void)char a12;scanf(%s,a);/*输入输入a数组元素数组元素*/printf(“%s”,a);/*输出输出a数组元素数组元素*/printf(n);第四章第四章 数数 组组Chapter 4 Array【例【例4-9】字符输入输出举例】字符输入输出举例#include void main(void)char s

33、tr80;int i;gets(str);for(i=0;str i!=0;i+)if(stri=a&stri=z)stri-=32;puts(str);判断字符串结束。判断字符串结束。第四章第四章 数数 组组Chapter 4 Array常用的字符处理函数常用的字符处理函数 C语言定义了一系列的字符处理函数用于字符串的处理,该类语言定义了一系列的字符处理函数用于字符串的处理,该类函数的原型定义在函数的原型定义在string.h中。因此,在使用该类函数时,应在程中。因此,在使用该类函数时,应在程序的开始处,加序的开始处,加#include 字符串拷贝函数字符串拷贝函数strcpy(str1,s

34、tr2)作用:将作用:将str2拷贝到拷贝到str1中。中。用法:用法:char str110,str2=”Computer”;strcpy(str1,str2);/*str1的内容是的内容是“Computer”*/strcpy(str2,”Program”);/*str2的内容是的内容是“Program”*/说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。第四章第四章 数数 组组Chapter 4 Array字符串连接函数字符串连接函数strcat(str1,str2)作用:将作用:

35、将str2连接到连接到str1后(去掉后(去掉str1的的0)。)。用法:用法:char str115=“Anhui ”,str2=”Hefei”;strcat(str1,str2);puts(str1);/*输出结果为输出结果为 Anhui Hefei */说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。测试字符串长度函数测试字符串长度函数strlen(str)作用:测试字符串的实际长度。函数运算得到整型值,该值是作用:测试字符串的实际长度。函数运算得到整型值,该值是字符串的长度!字

36、符串的长度!int iLenStr;char str=“China”;iLenStr=strlen(str);printf(“%d”,iLenStr);结果?第四章第四章 数数 组组Chapter 4 Array字符串的比较字符串的比较 strcmp(str1,str2)作用:作用:对对str1和和str2 进行逐位无符号字符(进行逐位无符号字符(ASCII码)比较,码)比较,直到对应位字符能够确定关系或到串尾为止。直到对应位字符能够确定关系或到串尾为止。返回整型比较结果返回整型比较结果。字符的数值关系也就是字符的字符的数值关系也就是字符的ASCII码值的数值关系。码值的数值关系。比较结果如下

37、:比较结果如下:比比较结果果strcmp的的值str1str2str20char str1=”abcd”;char str2=“abcd”;int iRe1,iRe2,iRe3;iRe1=strcmp(str1,”abdc”);iRe2=strcmp(str1,str2);iRe3=strcmp(”abcde”,str2);abcd abdccdc-d -1结果小于0。第四章第四章 数数 组组Chapter 4 Arraystrlwr(str)将将str中的大写字母转换成小写字母。中的大写字母转换成小写字母。strupr(str)将将str中的小写字母转换成大写字母中的小写字母转换成大写字母#

38、include#include void main(void)char str1=c programming!123,str2=Computer;strlwr(str2);strupr(str1);puts(str1);puts(str2);C PROGRAMMING!123computer第四章第四章 数数 组组Chapter 4 Array【例【例4-10】字符处理函数示例】字符处理函数示例1 /*example 4-10 字符处理函数字符处理函数*/#include#include void main(void)int k;char a20=Hello;char b20=world;ch

39、ar c20;k=strlen(a);/*测测a串长度串长度*/printf(k=%dn,k);printf(“%d n”,strcmp(a,b);/*比较比较a串和串和b串串*/strcat(a,b);/*连接连接b串到串到a串串*/strcpy(c,b);/*复制复制b串到串到c串串*/puts(a);/*输出输出a串串*/puts(b);/*输出输出b串串*/puts(c);/*输出输出c串串*/第四章第四章 数数 组组Chapter 4 Array【例【例4-11】从键盘任意输入从键盘任意输入5个学生的姓名,找出按个学生的姓名,找出按ASCII码的顺码的顺序排在最前面的学生姓名。序排在

40、最前面的学生姓名。/*example 4-11 找出排在最前面的学生姓名找出排在最前面的学生姓名*/#include#include void main(void)int i;char name20,minname20;printf(please enter 1 name:);gets(name);/*输入第输入第1个姓名个姓名*/strcpy(minname,name);/*设第设第1个姓名为最前面的姓名个姓名为最前面的姓名*/for(i=2;i=5;i+)printf(please enter%d name:,i);gets(name);/*输入第输入第i个姓名个姓名*/if(strcmp

41、(name,minname)0)/*比较第比较第i个姓名个姓名*/strcpy(minname,name);/*修正最前面的姓名修正最前面的姓名*/puts(minname);/*输出最前面的学生姓名输出最前面的学生姓名*/第四章第四章 数数 组组Chapter 4 Array例:统计一行文字中大写字母、小写字母及数字的个数。例:统计一行文字中大写字母、小写字母及数字的个数。#include#include void main(void)char str80;int i,iAnum=0,ianum=0,i0num=0;gets(str);for(i=0;i=A&stri=a&stri=0&st

42、ri=9)i0num+;printf(“%6d,%6d,%6d”,iAnum,ianum,i0num);第四章第四章 数数 组组Chapter 4 Array4.5 数组的应用举例数组的应用举例 数组是同类型数据的集合。便于整体处理数据,数组操作的主数组是同类型数据的集合。便于整体处理数据,数组操作的主要算法有:要算法有:求极值求极值排序排序查找查找4.4.倒序倒序第四章第四章 数数 组组Chapter 4 Array求极值及其位置求极值及其位置算法演示算法演示 一维数组的极值一维数组的极值#include void main(void)int a10=1,6,-2,5,4,32,47,-66

43、,13,14;int iMax,iPos,i;iPos=0;iMax=a0;for(i=1;iiMax)iMax=ai;iPos=i;printf(“Max=%5d Position=%5d”,iMax,iPos);假定最大值及其位置。假定最大值及其位置。循循环环比比较较 当前元素比最大值大,将其当前元素比最大值大,将其赋值为新的最大值并记录其位置。赋值为新的最大值并记录其位置。第四章第四章 数数 组组Chapter 4 Array二维数组求极值二维数组求极值#include void main(void)float a34=1.0,3.0,5.2,7.4,4.6,5.5,4.2,1.2,10

44、.5,0.23,1.3,0.5;int i,j,iRow=0,iCol=0;for(i=0;i3;i+)for(j=0;j4;j+)if(aijaiRowiCol)iRow=i;iCol=j;printf(”%f7.2,iRow%5d,iCol%5d”,aiRowiCol,iRow,iCol);假定最小值的位置。假定最小值的位置。二二重重循循环环遍遍历历所所有有元元素素比较求最小值,记录其位置。比较求最小值,记录其位置。第四章第四章 数数 组组Chapter 4 Array/*example 4-12 计算最高分计算最高分*/#includevoid main(void)int i,kmax;

45、float math10,maxmath;printf(please enter:);for(i=0;i10;i+)/*循环循环*/scanf(“%f”,&mathi);/*输入成绩输入成绩*/maxmath=math0;/*设最大数设最大数*/kmax=0;/*设最大数的位置设最大数的位置*/for(i=1;i maxmath)/*如果后面的数大于假设的最大如果后面的数大于假设的最大*/kmax=i;/*修改位置修改位置*/maxmath=mathi;/*修改最大修改最大*/printf(k=%d,max=%fn,kmax,maxmath);/*输出输出*/第四章第四章 数数 组组Chapt

46、er 4 Array【例【例4-13】已知】已知10个学生的数学成绩,由键盘输入,问最低分是个学生的数学成绩,由键盘输入,问最低分是多少?多少?解题分析:解决了最高分问题,不能发现,只要将比赛规则,稍解题分析:解决了最高分问题,不能发现,只要将比赛规则,稍加修改即可。找最高分是找分数高的,而找最低分是找分数低的,加修改即可。找最高分是找分数高的,而找最低分是找分数低的,将上述代码将上述代码4-12中的大于号改为小于号即可,当然表示最小数和中的大于号改为小于号即可,当然表示最小数和其位置的变量名也应作适当的修改其位置的变量名也应作适当的修改(如最小数用如最小数用minmath表示、表示、最小数位

47、置用最小数位置用kmin表示表示),在此不再叙述代码。,在此不再叙述代码。第四章第四章 数数 组组Chapter 4 Array/*example 4-14 计算最高分和最低分计算最高分和最低分*/#includevoid main(void)int i,kmax,kmin;float math10,maxmath,minmath;printf(please enter:);for(i=0;i10;i+)/*循环循环*/scanf(“%f”,&mathi);/*输入成绩输入成绩*/maxmath=math0;/*设最大数设最大数*/kmax=0;minmath=math0;/*设最小数设最小数

48、*/kmin=0;for(i=1;i maxmath)/*如果后面的数大于假设的最大如果后面的数大于假设的最大*/kmax=i;maxmath=mathi;/*修改最大修改最大*/else if(mathi minmath)/*如果后面的数小于假设的最小如果后面的数小于假设的最小*/kmin=i;minmath=mathi;/*修改最小修改最小*/printf(kmax=%d,max=%fn,kmax,maxmath);/*输出最大输出最大*/printf(kmin=%d,min=%fn,kmin,minmath);/*输出最小输出最小*/第四章第四章 数数 组组Chapter 4 Array

49、/*example 4-15 计算最高分计算最高分*/#includevoid main(void)int i,j,k1max,k2max;float score103,maxsco;printf(please enter:);for(i=0;i10;i+)/*循环循环*/for(j=0;j3;j+)scanf(%f,&scoreij);/*输入成绩输入成绩*/maxsco=score00;/*设最大数设最大数*/k1max=0;k2max=0;for(i=0;i10;i+)/*外循环遍历行外循环遍历行*/【例【例4-15】已知】已知10个学生的数学、物理、化学成绩,由键盘个学生的数学、物理、

50、化学成绩,由键盘输入,问最高分是多少?输入,问最高分是多少?第四章第四章 数数 组组Chapter 4 Array for(j=0;j maxsco)/*如果后面的数大于假设的最大如果后面的数大于假设的最大*/k1max=i;/*修改位置修改位置*/k2max=j;maxsco=scoreij;/*修改最大修改最大*/printf(k1=%d,k2=%d,max=%fn,k1max,k2max,maxsco);第四章第四章 数数 组组Chapter 4 Array查查 找找查找是在一组数中,寻找一个特定的数,并显示结果。查找是在一组数中,寻找一个特定的数,并显示结果。顺序查找顺序查找 顺序查找

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁