C语言chap7多维数组.ppt





《C语言chap7多维数组.ppt》由会员分享,可在线阅读,更多相关《C语言chap7多维数组.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.1 一维数组一维数组第第 7 章章 多维数组多维数组1一维数组的定义一维数组的定义语句形式:语句形式:类型说明符类型说明符 数组名数组名常量常量表达式表达式说明:说明:数组名定名规则和变量名相同。数组名定名规则和变量名相同。常量表达式表示数组元素的个数,即数组的长度。如:常量表达式表示数组元素的个数,即数组的长度。如:int a10;表表示示a数数组组有有10个个元元素素:a0,a1,a2,a9,没没有有a10。注意注意:数组的下标是从数组的下标是从0开始的开始的。2一维数组元素的引用一维数组元素的引用 C不允许对数组进行动态定义。以下作法是错误的。不允许对数组进行动态定义。以下作法是错误
2、的。int n;scanf(“%d”,&n);int an;数数组组必必须须先先定定义义,然然后后再再使使用用。C的的数数组组元元素素只只能能逐个引用而不能一次引用整个数组。逐个引用而不能一次引用整个数组。一维数组元素的表示形式为:一维数组元素的表示形式为:数组名数组名下标下标下标可以是整型常量或整型表达式。下标可以是整型常量或整型表达式。例例7.1 main()int i,a10;for(i=0;i=0;i-)printf(“%2d”,a i);输出结果:输出结果:10 9 8 7 6 5 4 3 2 13一维数组的初始化一维数组的初始化赋赋值值语语句句和和输输入入语语句句均均可可使使数数组
3、组中中的的元元素素赋赋初初值值,但但占占用用运行时间。简捷的方法是在程序运行之前使数组初始化。运行时间。简捷的方法是在程序运行之前使数组初始化。对数组元素初始化的方法有:对数组元素初始化的方法有:1)在定义数组时对数组元素赋以初值。如:在定义数组时对数组元素赋以初值。如:static int a10=0,1,2,3,4,5,6,7,8,9;说明:说明:依次赋予数组元素的初值必须用依次赋予数组元素的初值必须用 括起来。括起来。“static”是是C的一个关键字,意为的一个关键字,意为“静态存储静态存储”。C规定只规定只有静态存储有静态存储(static)数组和外部存储数组和外部存储(extern
4、)数组才能初始化。数组才能初始化。2)可以只给一部分元素赋值。如:可以只给一部分元素赋值。如:static int a10=0,1,2,3,4;3)在在C中系统会自动对所定义的静态数组的每个元素赋初值中系统会自动对所定义的静态数组的每个元素赋初值0。4)对全部数组元素赋初值时,可以不指定数组长度。如:对全部数组元素赋初值时,可以不指定数组长度。如:static int a5=1,2,3,4,5;可以写成:可以写成:static int a=1,2,3,4,5;例例7.2 将一个十进制正整数转换成二进制数。将一个十进制正整数转换成二进制数。main()int i,k,r,x,b16;printf
5、(“Enter an integer x:”);scanf(“%d”,&x);printf(“%6d binary number is:n”,x);k=-1;do r=x%2;b+k=r;x/=2;while(x!=0);for(i=k;i=0;i-)printf(“%d”,bi);printf(“n”);例7.3 用冒泡法将用冒泡法将10个数按从小到大排序。个数按从小到大排序。当有当有n个数时需要作个数时需要作n1趟这样的搜索,每趟搜趟这样的搜索,每趟搜索要作索要作n1次比较。次比较。main()int i,j,t,a11;printf(“input 10 numbers:n”);for(i
6、=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(“the sorted numbers:n”);for(i=1;i11;i+)printf(“%d ”,ai);7.2.二维数组二维数组语句形式语句形式:类型说明符类型说明符 数组名数组名常量表达式常量表达式1 常量表达式常量表达式2如:如:float a34;定义定义a是一个是一个3x4(3行行4列列)的数组,即的数组,即a数组有数组有12个元素。个元素。但不得写成:但不得写成:float a3,4;注意:
7、注意:二二维维数数组组中中元元素素的的排排列列顺顺序序为为按按行行按按列列。即即存存放放完完第第1 行的元素后再接着存放第行的元素后再接着存放第 2 行的元素,依次类推。行的元素,依次类推。C允许定义多维数组。如:允许定义多维数组。如:float a345;static int a34=1,5,9;static int a34=1,0,6,0,0,11;static int a34=1,5,6;static int a34=1,9;注意:注意:所赋给的值是所赋给的值是按行按列按行按列对号入座的。对号入座的。对对二二维维数数组组的的全全部部元元素素赋赋初初值值时时,可可以以不不指指定定第第一一维
8、维的长度,但不得省去第二维的长度。如:的长度,但不得省去第二维的长度。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以写成:可以写成:static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;同样,同样,static int a 4=0,0,3,0,10;也是正确的。也是正确的。可以对部分元素赋初值。如:可以对部分元素赋初值。如:例例7.4 将一个二维数组行和列的元素互换后存到另一个数组中。如:将一个二维数组行和列的元素互换后存到另一个数组中。如:main()static int a23=1,2,3,4,5,6;static
9、 int b32,i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,ai j);b ji=ai j;/元元素素互互换换 /printf(“n”);printf(“array b:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bi j);printf(“n”);例例7.5 输输出出一一个个3 4数数组组中中每每行行中中的的最最大大元元素素之之值值及及其其位位置。置。main()int i,j,c,max;static int a34=6,-5,11,3,8,9,4,
10、7,2,13,1,-10;for(i=0;i=2;i+)max=a i0;c=0;for(j=0;jmax)max=ai j;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=27.3 多维数组多维数组与二维数组的定义类似与二维数组的定义类似例如例如:int a345,b2453;分别为定义的三维、四维数组。分别为定义的三维、四维数组。其中,其中,a有有60个元素,个元素,b有有120个元素。个元素。7.4字
11、符数组与字符串字符数组与字符串7.4.1 字符数组的逐个字符操作例例7.6 从从键键盘盘输输入入一一个个字字符符串串,回回车车键键结结束束,并并将将字字符符串串在在屏屏幕上输出。幕上输出。main()int i;static char str80;clrscr();for(i=0;i80;i+)stri=getch();/*逐逐次次给给数数组组元元素素stri赋赋值值,但不回显在屏幕上但不回显在屏幕上*/printf(*);/*以以星星号号代代替替输输入入字字符符的的个个数数*/if(stri=x0d)break;/*若输入回车则终止循环若输入回车则终止循环*/i=0;while(stri!=
12、x0d)printf(%c,stri+);/*逐逐次次输输出出字字符符数数组组的的各各个元素个元素*/printf(n);getch();/*程序暂停程序暂停*/1字符数组的定义字符数组的定义1维维字字符符数数组组,用用于于存存储储和和处处理理1个个字字符符串串,其其定定义格式与义格式与1维数值数组一样。维数值数组一样。2维维字字符符数数组组,用用于于同同时时存存储储和和处处理理多多个个字字符符串串,其定义格式与其定义格式与2维数值数组一样。维数值数组一样。2字符数组的初始化字符数组的初始化字字符符数数组组的的初初始始化化,可可以以通通过过为为每每个个数数组组元元素素指指定初值字符来实现。定初
13、值字符来实现。3字符数组的引用字符数组的引用 字字符符数数组组的的逐逐个个字字符符引引用用,与与引引用用数数值值数数组组元元素类似。素类似。(1)字符数组的输入)字符数组的输入 除除了了可可以以通通过过初初始始化化使使字字符符数数组组各各元元素素得得到到初初值值外外,也也可可以以使使用用getchar()或或scanf()函函数数输输入入字符。字符。例如:例如:char str10;for(i=0;i10;i+)scanf(%c,&stri);fflush(stdin);/*清除键盘输入缓冲区清除键盘输入缓冲区*/(2)字符数组的输出)字符数组的输出 字字符符数数组组的的输输出出,可可以以用用
14、putchar()或或printf()函函数。数。例如:例如:char str10=c language;for(i=0;i10;i+)printf(%c,stri);printf(n);注注意意:逐逐个个字字符符输输入入、输输出出时时,要要指指出出元元素素的的下下标标,而而且且使使用用“%c”格格式式符符。另另外外,从从键键盘盘上上输输入入字字符符时时,无无需需输输入入字字符符的的定定界界符符单单引引号号;输出时,系统也不输出字符的定界符。输出时,系统也不输出字符的定界符。Scanf(“%s”)方式输入字符串时:方式输入字符串时:从第一个非空白字符开始,遇到第一从第一个非空白字符开始,遇到第
15、一个空白字符结束;并在末尾自动补上个空白字符结束;并在末尾自动补上一个字符一个字符0#include main()char name13;int i;for(i=0;i=12;i+)scanf(“%c”,&namei);for(i=0;i=12;i+)printf(“%c”,namei);scanf(“%s”,name);printf(“%s”,name);例例7e_1:采用不同的方式输入输出字符串采用不同的方式输入输出字符串运行结果运行结果:Pear&Apple Pear&ApplePear&Apple Pear#include#include main()int i;char name74
16、=sun,mon,tue,wed,thu,wen,sat;printf(Result is:n);name03=&;name23=&;name53=&;for(i=0;i7;i+)printf(%sn,namei);getch();例例:7e_2字符串数组值的改变。字符串数组值的改变。程序运行结果程序运行结果:sun&monmontue&wedwedthuwen&satsat赋初值:改变后:7.4.2 字符数组的整体操作例例7.7 字符数组的整体输入与输出。字符数组的整体输入与输出。将将2维字符数组进行初始化,并在屏幕上输出维字符数组进行初始化,并在屏幕上输出*/main()int i;cha
17、r name510=“zhangshan,“lisi,“wangwu,“zhaolui,“luiqi;for(i=0;i5;i+)printf(n%st,namei);/*namei代代表表该该行行数数组组元元素素的首地址的首地址*/getch();1字符串及其结束标志字符串及其结束标志 所谓字符串,是指若干有效字符的序列。所谓字符串,是指若干有效字符的序列。C语言中的字符串,语言中的字符串,可以包括字母、数字、专用字符、转义字符等。可以包括字母、数字、专用字符、转义字符等。C语言规定:语言规定:以以0作为字符串结束标志作为字符串结束标志(0代表代表ASCII码为码为0的字符,表示一个的字符,
18、表示一个“空操作空操作”,只起一个标志作用),只起一个标志作用)。因此可以对字符数组采用另一种方式进行操作了。因此可以对字符数组采用另一种方式进行操作了字符数组字符数组的整体操作。的整体操作。注注意意:由由于于系系统统在在存存储储字字符符串串常常量量时时,会会在在串串尾尾自自动动加加上上1个结束标志,所以无需人为地再加个结束标志,所以无需人为地再加1个。个。另另外外,由由于于结结束束标标志志也也要要在在字字符符数数组组中中占占用用一一个个元元素素的的存存储储空空间间,因因此此在在说说明明字字符符数数组组长长度度时时,至至少少为为字字符符串串所所需需长度加长度加1。2字符数组的整体初始化字符数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 chap7 多维 数组

限制150内