C语言chap7(多维数组).ppt_第1页
C语言chap7(多维数组).ppt_第2页
C语言chap7(多维数组).ppt_第3页
C语言chap7(多维数组).ppt_第4页
C语言chap7(多维数组).ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

7.1一维数组,第7章多维数组,1一维数组的定义,语句形式:类型说明符数组名常量表达式,说明:数组名定名规则和变量名相同。,常量表达式表示数组元素的个数,即数组的长度。如:inta10;表示a数组有10个元素:a0,a1,a2,a9,没有a10。,注意:数组的下标是从0开始的。,2一维数组元素的引用,C不允许对数组进行动态定义。以下作法是错误的。intn;scanf(“%d”,数组必须先定义,然后再使用。C的数组元素只能逐个引用而不能一次引用整个数组。一维数组元素的表示形式为:数组名下标下标可以是整型常量或整型表达式。,例7.1main()inti,a10;for(i=0;i=0;i-)printf(“%2d”,ai);,输出结果:10987654321,3一维数组的初始化,赋值语句和输入语句均可使数组中的元素赋初值,但占用运行时间。简捷的方法是在程序运行之前使数组初始化。,对数组元素初始化的方法有:,1)在定义数组时对数组元素赋以初值。如:staticinta10=0,1,2,3,4,5,6,7,8,9;,说明:依次赋予数组元素的初值必须用括起来。,“static”是C的一个关键字,意为“静态存储”。C规定只有静态存储(static)数组和外部存储(extern)数组才能初始化。,2)可以只给一部分元素赋值。如:staticinta10=0,1,2,3,4;,3)在C中系统会自动对所定义的静态数组的每个元素赋初值0。,4)对全部数组元素赋初值时,可以不指定数组长度。如:staticinta5=1,2,3,4,5;可以写成:staticinta=1,2,3,4,5;,例7.2将一个十进制正整数转换成二进制数。main()inti,k,r,x,b16;printf(“Enteranintegerx:”);scanf(“%d”,例7.3用冒泡法将10个数按从小到大排序。,当有n个数时需要作n1趟这样的搜索,每趟搜索要作n1次比较。,main()inti,j,t,a11;printf(“input10numbers:n”);for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“thesortednumbers:n”);for(i=1;i11;i+)printf(“%d”,ai);,7.2.二维数组,语句形式:类型说明符数组名常量表达式1常量表达式2,如:floata34;定义a是一个3x4(3行4列)的数组,即a数组有12个元素。,但不得写成:floata3,4;,注意:二维数组中元素的排列顺序为按行按列。即存放完第1行的元素后再接着存放第2行的元素,依次类推。,C允许定义多维数组。如:floata345;,staticinta34=1,5,9;staticinta34=1,0,6,0,0,11;staticinta34=1,5,6;staticinta34=1,9;注意:所赋给的值是按行按列对号入座的。对二维数组的全部元素赋初值时,可以不指定第一维的长度,但不得省去第二维的长度。如:staticinta34=1,2,3,4,5,6,7,8,9,10,11,12;可以写成:staticinta4=1,2,3,4,5,6,7,8,9,10,11,12;同样,staticinta4=0,0,3,0,10;也是正确的。,可以对部分元素赋初值。如:,例7.4将一个二维数组行和列的元素互换后存到另一个数组中。如:,main()staticinta23=1,2,3,4,5,6;staticintb32,i,j;printf(“arraya:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;/元素互换/printf(“n”);printf(“arrayb:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);,例7.5输出一个34数组中每行中的最大元素之值及其位置。main()inti,j,c,max;staticinta34=6,-5,11,3,8,9,4,7,2,13,1,-10;for(i=0;imax)max=aij;c=j;printf(“max=%2d,row=%d,colum=%dn”,max,i+1,c+1);,输出结果:max=11,row=1,colum=3max=9,row=2,colum=2max=13,row=3,colum=2,7.3多维数组与二维数组的定义类似例如:inta345,b2453;分别为定义的三维、四维数组。其中,a有60个元素,b有120个元素。7.4字符数组与字符串,7.4.1字符数组的逐个字符操作,例7.6从键盘输入一个字符串,回车键结束,并将字符串在屏幕上输出。main()inti;staticcharstr80;clrscr();for(i=0;i80;i+)stri=getch();/*逐次给数组元素stri赋值,但不回显在屏幕上*/printf(*);/*以星号代替输入字符的个数*/if(stri=x0d)break;/*若输入回车则终止循环*/i=0;while(stri!=x0d)printf(%c,stri+);/*逐次输出字符数组的各个元素*/printf(n);getch();/*程序暂停*/,1字符数组的定义1维字符数组,用于存储和处理1个字符串,其定义格式与1维数值数组一样。2维字符数组,用于同时存储和处理多个字符串,其定义格式与2维数值数组一样。2字符数组的初始化字符数组的初始化,可以通过为每个数组元素指定初值字符来实现。3字符数组的引用字符数组的逐个字符引用,与引用数值数组元素类似。,(1)字符数组的输入除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。例如:charstr10;for(i=0;i10;i+)scanf(%c,/*清除键盘输入缓冲区*/,(2)字符数组的输出字符数组的输出,可以用putchar()或printf()函数。例如:charstr10=clanguage;for(i=0;i10;i+)printf(%c,stri);printf(n);注意:逐个字符输入、输出时,要指出元素的下标,而且使用“%c”格式符。另外,从键盘上输入字符时,无需输入字符的定界符单引号;输出时,系统也不输出字符的定界符。,Scanf(“%s”)方式输入字符串时:从第一个非空白字符开始,遇到第一个空白字符结束;并在末尾自动补上一个字符0#includemain()charname13;inti;for(i=0;i=12;i+)scanf(“%c”,例7e_1:采用不同的方式输入输出字符串,运行结果:Pearcharname74=sun,mon,tue,wed,thu,wen,sat;printf(Resultis:n);name03=,例:7e_2字符串数组值的改变。,程序运行结果:suncharname510=“zhangshan,“lisi,“wangwu,“zhaolui,“luiqi;for(i=0;i=a,main()inti,num=0;charstr255;printf(Inputastring:);gets(str);for(i=0;stri!=0;i+)if(isalp(stri)num+;puts(str);printf(num=%dn,num);getch();,说明:(1)用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。(2)在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送,是把实参变量的值赋予形参变量。,7.5.2数组名作为函数的形参和实参,数组名作函数参数时,既可以作形参,也可以作实参。数组名作函数参数时,要求形参和相对应的实参都必须是类型相同的数组(或指向数组的指针变量),都必须有明确的数组说明例7.10已知某个学生5门课程的成绩,求平均成绩。floataver(floata)/*求平均值函数*/inti;floatav,s=a0;for(i=1;i5;i+)s+=ai;av=s/5;returnav;,voidmain()floatsco5,av;inti;printf(ninput5scores:n);for(i=0;i5;i+)scanf(%f,说明:(1)用数组名作函数参数,应该在调用函数和被调用函数中分别定义数组,且数据类型必须一致,否则结果将出错。例如,

温馨提示

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

评论

0/150

提交评论