大学C语言第7章数组_第1页
大学C语言第7章数组_第2页
大学C语言第7章数组_第3页
大学C语言第7章数组_第4页
大学C语言第7章数组_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、第一节第一节 数组的基本概念数组的基本概念例如:存储学生成绩用例如:存储学生成绩用整型数组整型数组 markmark 100100 , 存储一行文字用存储一行文字用字符数组字符数组 strstr 200200 , 存储一个矩阵用存储一个矩阵用二维二维整型数组整型数组 a a 4 46 6 。其中:其中:markmark、strstr、a a 是数组名。是数组名。 方括号内是数组的方括号内是数组的下标下标。 下标的个数称为数组的维数,下标的个数称为数组的维数,markmark、strstr是是一维一维数组、数组、a a是是二维二维数组。数组。 数组的成员称为数组的成员称为数组元素数组元素。第一节

2、第一节 数组的基本概念数组的基本概念第二节第二节 一维数组一维数组 第二节第二节 一维数组一维数组l数组元素在内存里数组元素在内存里顺序顺序存放存放mark0mark1mark2mark3. . . .mark99低地址低地址 高地址高地址每个数据元每个数据元素占用的字素占用的字节节数,就是基数,就是基类类型的字节数型的字节数第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组五、一维数组的应用五、一维数组的应用第二节第二节 一维数组一维数组12345j=0i=0第二节第二节 一维数组一维数组12345j=0i=1i=2i=3

3、i=4i=0第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组第二节第二节 一维数组一维数组下标多于一个的数组叫做下标多于一个的数组叫做多维数组多维数组。数组名数组名常量表达式常量表达式 常量表达式常量表达式例如:例如: int a34,b514;int a34,b514; a3,4 a(3,4) a(3)(4)a3,4 a(3,4) a(3)(4)第三节第三节 二维数组二维数组数组数组aa0 :a1 :a2 :a00a01a02 a03a10a11a12 a13a20a21a22 a23a0是数组名,是元素是数组名,是元素a00的地址的地址a1是数组名

4、是数组名, 是是元素元素a10的地址的地址a2是数组名,是数组名, 是是元素元素a00的地址的地址数组数组a有三有三个分量,个分量,a是分量是分量a0的地址的地址数组的数组名数组的数组名第三节第三节 二维数组二维数组b00b01b02b10b11b12123456例如:整型数组例如:整型数组 bb23= 1,2,3, 4,5,6 ;元素的存放元素的存放第三节第三节 二维数组二维数组的初始化的初始化第三节第三节 二维数组二维数组l 省略下标表达式省略下标表达式 当数据元素个数和数据个数当数据元素个数和数据个数一致一致时,数组说时,数组说明语句中的明语句中的第一个下标第一个下标可以省略。可以省略。

5、例如:例如:int a4=1,2,3,4,5,6,7,8;int a4=1,2,3,4,5,6,7,8; int b4=1,2,3,4,5,6,7,8,9;int b4=1,2,3,4,5,6,7,8,9; int c22=1,2,3,4,5,6,7,8;int c22=1,2,3,4,5,6,7,8;初始化结果:初始化结果: 第三节第三节 二维数组二维数组第三节第三节 二维数组二维数组l二维数组举例二维数组举例例例C6_204C6_204: : 两个矩阵相乘。两个矩阵相乘。 1 2 3 41 2 3 4 1 3 51 3 5 A= 5 6 7 8A= 5 6 7 8 B= 2 4 6B= 2

6、 4 6 9 10 11 129 10 11 12 7 9 117 9 11 8 10 128 10 12C C1 1, ,1 1= = A A1 1,1,1* *B B1,1,1 1 + + A A1 1,2,2* *B B2,2,1 1 + + A A1 1,3,3* *B B3,3,1 1 + + A A1 1,4,4* *B B4,4,1 1C C1 1, ,2 2= = A A1 1,1,1* *B B1,1,2 2 + + A A1 1,2,2* *B B2,2,2 2 + + A A1 1,3,3* *B B3,3,2 2 + + A A1 1,4,4* *B B4,4,2 2

7、C C3 3, ,3 3= = A A3 3,1,1* *B B1,1,3 3 + + A A3 3,2,2* *B B2,2,3 3 + + A A3 3,3,3* *B B3,3,3 3 + + A A3 3,4,4* *B B4,4,3 3第三节第三节 二维数组二维数组l分析分析结果矩阵结果矩阵C C有有3 3行行3 3列。列。重复重复求一求一行行 forfor( (i i=0;=0;i in;n;i i+)+) 重复重复求行中一个求行中一个元素元素 forfor( (j j=0;=0;j jn;n;j j+)+) 重复重复将每一项加入将每一项加入 forfor( (k k=0;=0;k

8、 km;m;k k+) +) c c i ij j=c c i ij j+a a i ik k * *b b k kj j;第三节第三节 二维数组二维数组第四节第四节 字符数组字符数组例例: : #define N 100 #define N 100 char char strstr N =N =B B,e e,i i,j j,i i,n n,g g; 如果字符个数如果字符个数小于小于字符数组字符数组长度长度,其余元素系统,其余元素系统自动赋自动赋00。问题问题:字符个数:字符个数等于等于字符数组字符数组长度长度?将字符数组作为将字符数组作为字符串字符串处理,改上例:处理,改上例: char

9、str =“char str =“BeijingBeijing”;”;问题:问题:在字符串末尾系统自动赋在字符串末尾系统自动赋结束标志结束标志00。 1. 1.字符数组字符数组strstr的的长度长度? 字符串字符串的长度的长度? 2.2.char str=“Beijing”;char str=“Beijing”;877 第四节第四节 字符数组字符数组可以用可以用赋值语句赋值语句为为字符数组字符数组赋值赋值 strstr0 0= B B; str; str1 1= e e; str; str2 2= i i; ; str str3 3= j j; str; str4 4= i i; str;

10、str5 5= n n; ; str str6 6= g g; str; str7 7= 00 ;字符数组字符数组不能整体赋值:不能整体赋值: strstr = = “Beijing”; “Beijing”; 注意区分在注意区分在说明语句说明语句进行进行初始化初始化,与用,与用赋值语句赋值语句赋赋值值的区别。的区别。 可以引用可以引用字符数组字符数组元素,或元素,或字符串字符串整体引用。整体引用。 第四节第四节 字符数组字符数组strcpystrcpy namename j jtemptemp 观察观察内存分内存分配情况配情况和排序和排序结果。结果。第四节第四节 字符数组字符数组如果对如果对字

11、符数组字符数组元素输入输出,用元素输入输出,用“% %c c”格式。格式。如果对如果对字符串字符串输入输出,用输入输出,用“% %s s”格式。格式。scanfscanf函数函数与与getsgets函数处理字符串的函数处理字符串的区别区别。 c char har strstr35;35; for(i=0;i3;i+) scanf(“ for(i=0;i3;i+) scanf(“%s%s”,”,stristri);); 输入数据:输入数据:HowHow areare You? You? ( ( 表示空表示空格格)。)。 strstr的情况:的情况:01234Str0HoW0Str1are0Str

12、2You?0第四节第四节 字符数组字符数组 将程序改为:将程序改为: c char har strstr13;13; scanfscanf(“(“%s%s”,”,strstr); ); 同样输入:同样输入: How How are are You? You? 结果是:结果是:H o w H o w 00 原因是系统将原因是系统将w w和和a a之间的空格作为分割符。之间的空格作为分割符。 用用getsgets函数就不会出现这个情况。函数就不会出现这个情况。 getsgets( (strstr) );第四节第四节 字符数组字符数组例例:字符串比大小字符串比大小 (按(按ASCIIASCII码值)

13、码值)strcmp(strcmp(s s, ,t t) )char char ss, ,tt; ; int i=0; int i=0; while( while(sisi= = =titi) ) if( if(si+si+= = =00) return(0); return(0); return( return(sisi- -titi);); a b c d e f g h i 0sa b c d e f g h i 0ti= 0 1 2 3 4 5 6 7 8 9a b c d e f g 0sa b c d e f g h i 0ti= 0 1 2 3 4 5 6 7 8 9a b c m

14、 n o p 0sa b c d e f g h i 0ti= 0 1 2 3 4 5 6 7 8 9第四节第四节 字符数组字符数组第四节第四节 字符数组字符数组第五节第五节 程序举例程序举例 1 2 3 4 5 6 7 8 9 10111213A23456178910111213第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例0 00 00 00 00 00 00 00 00 00 00 00 00 0第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例I= 12345678J=1 2 3 4 5 6 7 8分析:分析: 起点坐标:起点坐标: I (行行)、J (列列)

15、2 2 落点坐标:落点坐标:X(行行)、Y(列列) 3 4落点和起点的关系落点和起点的关系X12345678Y=1 2 3 4 5 6 7 8第五节第五节 程序举例程序举例 可能落点行坐标可能落点行坐标 X X 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8I= 12345678J=1 2 3 4 5 6 7 8X12345678Y=1 2 3 4 5 6 7 82 3 3 2 0 -1 -1 02 3 3 2 0 -1 -1 0 I第五节第五节 程序举例程序举例 可能落点行坐标可能落点行坐标 X X I I 1 2

16、 3 4 5 6 7 81 2 3 4 5 6 7 8 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8I= 12345678J=1 2 3 4 5 6 7 8X12345678Y=1 2 3 4 5 6 7 82 3 3 2 0 -1 -1 02 3 3 2 0 -1 -1 03 4 4 3 1 0 0 13 4 4 3 1 0 0 14 5 5 4 2 1 1 24 5 5 4 2 1 1 25 6 6 5 3 2 2 35 6 6 5 3 2 2 36 7 7 6 4 3 3 46 7 7 6 4 3 3 47 8 8 7 5 4 4 57 8 8 7 5 4 4 58 9

17、 9 8 6 5 5 68 9 9 8 6 5 5 69 10 10 9 7 6 6 79 10 10 9 7 6 6 7第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例 可能落点列坐标可能落点列坐标 Y Y J J 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8I= 12345678J=1 2 3 4 5 6 7 8X12345678Y=1 2 3 4 5 6 7 8 3 2 0 -1 -1 0 2 3 3 2 0 -1 -1 0 2 3 4 3 1 0 0 1 3 4 4 3 1 0 0 1 3 4

18、5 4 2 1 1 2 4 5 5 4 2 1 1 2 4 5 6 5 3 2 2 3 5 6 6 5 3 2 2 3 5 6 7 6 4 3 3 4 6 7 7 6 4 3 3 4 6 7 8 7 5 4 4 5 7 8 8 7 5 4 4 5 7 8 9 8 6 5 5 6 8 9 9 8 6 5 5 6 8 910 9 7 6 6 7 9 1010 9 7 6 6 7 9 10第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例l度数表度数表第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例第五节第五节 程序举例程序举例123456789101112 13 14 15 16173618 19 20 21 22 23 2425 26 27 28 29 30 31 3233 34 35 36 37 38 39 4041 42 43 44 45 46 47 4849 50 51 52 53 54 55 5657

温馨提示

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

评论

0/150

提交评论