计算机软件基础课件:数组_第1页
计算机软件基础课件:数组_第2页
计算机软件基础课件:数组_第3页
计算机软件基础课件:数组_第4页
计算机软件基础课件:数组_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

数组《计算机软件基础》数组:具有相同数据类型的若干个有序数据的集合。数组的分类:一维数组二维数组字符数组01.一维数组02.二维数组03.字符数组和字符串主要内容本章重点难点本章重点:一维数组和二维数组的定义、初始化、元素引用;字符数组的定义、初始化和元素引用;常用字符串处理函数;编写处理字符串的简单程序。本章难点:字符数组与字符串的区别;编写处理字符串的简单程序。01一维数组当构成数组的各个元素的下标(在数学中称为下脚或脚码)只有1个时,这样的数组被称为一维数组。1.一维数组的定义

类型说明符数组名[常量表达式];例:inta[5];a[0]a[1]a[2]a[3]a[4]2.一维数组的初始化1)在定义数组时对数组元素赋以初值。例如:inta[5]={2,5,3,7,9};2)在定义数组时省略对数组长度的声明。例如:inta[]={2,5,3,7,9};3)为数组全部元素赋初值为0,可以写成:inta[5]={0,0,0,0,0};

或inta[5]={0};只给部分数组元素赋初值时,不能省略对数组的长度声明3.一维数组元素的引用例:inta[5];394351029a[0]a[1]a[2]a[3]a[4]一维数组元素引用的一般形式:

数组名[下标]4.应用举例1)一维数组的输入和输出。定义一个整型数组arr[10],向其中输入10个数据并依次输出。main(){intarr[10],i;for(i=0;i<10;i++) scanf(“%d”,&arr[i]);printf(“该一维数组为:\n”);for(i=0;i<10;i++)printf(“%5d”,arr[i]);}循环实现一维数组的输入循环实现一维数组的输出2)编写十进制数转换成二进制的程序。把一个十进制数x转换成二进制数的基本思路是:不断把x%2的余数存入a数组中(x值为x不断除以2后的商),直至x值为0,最后逆序输出a数组各元素值。比如,十进制数26转化为二进制数为11010如图所示。十进制转二进制示意图a数组状态示意图02二维数组请在此处输入具体内容,文字尽量言简意赅,简单说明意思即可,注意整体美观度。请在此处输入具体美观度。1.二维数组的定义类型说明符数组名[常量表达式1][常量表达式2];例:inta[2][5];二维数组在内存中的排列顺序是“按行”存入,即先存第0行所有元素,再存第1行。a[0][0]第0行第1行第0列第1列第2列第3列第4列a[1][2]a[0][4]2.二维数组的初始化1)分行给二维数组各元素赋值,这种赋值方法较直观,不易出错。例如:intx[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2)把所有数据写在一个花括号内,在程序编译时会按数组在内存中排列顺序将各初始值分别赋给数组各元素,第一行所有列都赋值后,再赋值第二行,依此类推。例如:intx[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3)可以对部分元素赋值。例如:inty[2][3]={1,2,3,4};。数组y有6个元素,仅给前4个赋值,后两个元素为0。3.二维数组元素的引用二维数组元素引用的一般形式:

数组名[下标1][下标2]4.应用举例4)也可使用花括号,在分行赋值时,只对该行中部分元素赋值。例如:inty[2][3]={{1,2},{3}};5)在定义数组时,若给出了全部元素值,则第一维的长度可以不写,但第二维的长度永远都不能省略。例如:inta[][3]={1,2,3,4,5,6};等价于:inta[2][3]={1,2,3,4,5,6};1)二维数组的输入和输出。定义一个二整型数组arr[3][4],向其中输入数据并依次输出。main(){intarr[10],i,j;for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&arr[i][j]);printf(“该二维数组为:\n”);for(i=0;i<3;i++)/*逐行输出共3行*/{ for(j=0;j<4;j++) /*每行输出4个元素*/ printf("%4d",x[i][j]);printf("\n");}/*一行元素输出后换行*/}双重循环实现维数组的输入双循环实现二维数组的输出

inta[2][3]={{4,5,6},{7,8,9}},b[3][2],i,j;printf("arraya:\n");for(i=0;i<2;i++){ for(j=0;j<3;j++) { printf("%4d",a[i][j]);/*输出a数组各元素*/ b[j][i]=a[i][j];/*行、列互换,形成转置阵b*/}printf("\n");}printf("arrayb:\n"); for(i=0;i<3;i++){ for(j=0;j<2;j++)printf("%4d",b[i][j]);printf("\n");}3)输出杨辉三角形。杨辉三角,是二项式系数在三角形中的一种几何排列。例如,图3-6所示6×6的a矩阵,数字部分就构成一个杨辉三角形。它有如下特点:①第1列及主对线元素为1,即:for(i=1;i<=6;i++)a[i][1]=a[i][i]=1;②从第3(i=3)行开始,各行第2列(j=2)到第i-1列各项值等于该项左肩值加上头顶值,即:for(i=3;i<=6;i++)for(j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];根据以上两步就形成了杨辉三角形。③输出杨辉三角形。第1行输出1个数,第2行输出2个数,第i行输出i个数。a矩阵示意图03字符数组和字符串数组中的一个元素存放一个字符1.字符数组的定义一般形式:char数组名[常量表达式];例如:chard[5];

在定义一个字符数组时逐个为数组中各元素指定初始字符。例如:chard[5]={'a','b','c','d','e'};数组d状态图2.字符数组的初始化chard[]={'a','b','c','d','e'};3.字符数组元素的引用第i个元素的引用形式:数组名[i-1],下标从0开始。1)字符元素值的输入for(i=0;i<5;i++)scanf("%c",&d[i]);2)字符数组元素的输出for(i=0;i<5;i++)printf("%c",d[i]);4.字符数组元素的输入输出注意,空格也是一个字符。5.字符串字符串实际就是由若干有效字符构成且以字符'\0'作为结束的一个字符序列。字符串常量:用一对双引号括起来的一个字符序列。C语言没有提供字符串数据类型,因此字符串的存取要用字符数组来实现。表3-1字符串和字符数组在使用上的不同2)例3-13编写十进制数转换成十六进制数的程序。思路:十进制数转换成十六进制数的方法和例3-5中十进制数转换成二进制数一样,所不同的是:转换成十六进制数中除数为16。十六进制数有16个数字:0~9、A~F,需要用字符数组来保存。scanf("%d",&x);y=x;/*把十进制数x保存到y中,便于输出原始值x*/while(y!=0){m=y%16;if(m<10)/*余数全以字符存入a数组*/a[i]=m+'0';/*把小于10的余数变成数字字符*/elsea[i]=m-10+'A';/*把大于等于10的余数变成A~F大写字母*/y=y/16;/*形成新的被除数y*/i++;}1)字符串输入函数gets(字符数组):从键盘输入一个字符串到字符数组。例如:charch[8]; /*该串占8字节内存*/2)字符串输出函数puts(字符数组):将一个字符串输出。

例如:charch[]={"abcd"};/*该串占5个字节内存,即ch数组长度为5*/puts(ch);3)求字符串长度的函数strlen(字符数组):求字符数组所表示串的长度。

例如:strlen("abcd")的结果为4。6.常见的字符串处理函数4)字符串连接函数strcat(字符数组1,字符数组2):把字符数组2所表示的串连到字符数组1所表示的串的后面,并删去串1后的结束标记“\0”。

说明:

①字符数组1必须足够大,以便容纳连接后的串2。

②连接前,两串均以“\0”结束;连接后,串1的“\0”取消,新串最后加“\0”。

③本函数返回值是字符数组1的首地址。5)字符串比较函数strcmp(字符数组1,字符数组2)数字字符<大写字母<小写字母例如:charsurname[15]=“Zhang”;charfirstna

温馨提示

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

评论

0/150

提交评论