C语言-数组-课件

上传人:20****08 文档编号:241021170 上传时间:2024-05-25 格式:PPT 页数:46 大小:525.22KB
返回 下载 相关 举报
C语言-数组-课件_第1页
第1页 / 共46页
C语言-数组-课件_第2页
第2页 / 共46页
C语言-数组-课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第六章 数组C语言-数组-课件第六章 数组C语言-数组-课件第六章 数组数据类型数据类型基本数据类型基本数据类型构造数据类型构造数据类型intfloatcharstringintshortintlongint数组指针结构体共用体double2010年4月21日星期三4月21日星期三4月21日星期三3教师:赵军富教师:赵军富数据类型基本数据类型构造数据类型intfloatcharst第六章 数组 当变量个数少,且彼此独立时,采用变量先定义,后当变量个数少,且彼此独立时,采用变量先定义,后赋值,再使用。如:赋值,再使用。如:int a,b,c;a=5;b=10;c=23;printf(“%d,%d,%d”,a,b,c);当变量个数比较多,并且有内在的关系时,例如当变量个数比较多,并且有内在的关系时,例如 :全:全班有班有3030个人,每人一个成绩个人,每人一个成绩 如:如:int int c c1,1,c c2,2,,c c30 30 (可以利用数组可以利用数组)数组是怎么构成的?数组是怎么构成的?一组有序数据的集合一组有序数据的集合,各个元素属于各个元素属于同一个类型同一个类型,用用统一的名统一的名称称标识这一组数标识这一组数,用用下标唯一下标唯一地确定这组数中的每一个值,这就构地确定这组数中的每一个值,这就构成了成了“数组数组”。数组的基本概念数组的基本概念:有限个:有限个相同数据类型相同数据类型的数据分量的有序集合。的数据分量的有序集合。2010年4月21日星期三4月21日星期三4月21日星期三4教师:赵军富教师:赵军富当变量个数少,且彼此独立时,采用变量先定义,后赋值,再第六章 数组一一、一维数组的定义、一维数组的定义格式:格式:类型类型 标识符标识符 长度长度 所有元素为所有元素为同一类型同一类型变量名,变量名,即数组名即数组名数组中所含数组中所含元素的个数元素的个数int a10;由由10个整数个整数组成的数组,共同拥组成的数组,共同拥有数组名有数组名 2、数组长度必须是、数组长度必须是整型量整型量int a2*3说明:说明:1、用、用方括号方括号将数组的将数组的长度长度括起来括起来3、数组长度也可以用、数组长度也可以用常量表达式常量表达式4、不能对长度做、不能对长度做动态定义动态定义,或者,或者不定义长度不定义长度如:如:int n;n=10;int an;66.1 一维数组的定义和使用一维数组的定义和使用例如:例如:int a5;2010年4月21日星期三4月21日星期三4月21日星期三5教师:赵军富教师:赵军富一、一维数组的定义格式:类型标识符长度所有元第六章 数组数数组的三要素:的三要素:(1)相同的数据类型()相同的数据类型(定义数组时规定定义数组时规定)(2)有限的成员个数)有限的成员个数(定义数组时规定定义数组时规定)(3)彼此有序的排列)彼此有序的排列(引用数组元素时的下标引用数组元素时的下标)int a5;a0=1;a1=2;a2=3;a3=4;a4=5;66.1 一维数组的定义和使用一维数组的定义和使用2010年4月21日星期三4月21日星期三4月21日星期三6教师:赵军富教师:赵军富数组的三要素:(1)相同的数据类型(定义数组时规定)(2)有第六章 数组 数据类型数据类型 数组名数组名 常量表达式常量表达式 初始化数据;初始化数据;格式:格式:1.定义数组时,对定义数组时,对全部元素全部元素赋值赋值 int a5=1,2,3,4,5;2.对对部分元素部分元素赋值赋值 float x5=1.9,2.0;x0=1.9;x1=2.0;3.3.若要对数组的若要对数组的全部元素初始化全部元素初始化,则,则可省略可省略数组的数组的长度长度 int a =1,2,3,4;二、二、一维数组的初始化一维数组的初始化66.1 一维数组的定义和使用一维数组的定义和使用用用 包括所有初包括所有初值,用用逗号逗号分隔各数分隔各数值,且初,且初值的的个数个数不能大于数不能大于数组长度。度。按按顺序序给前前2个元素个元素赋值,其余元素其余元素为均均为 0数数组长度度=元素的元素的个数个数2010年4月21日星期三4月21日星期三4月21日星期三7教师:赵军富教师:赵军富数据类型数组名常量表达式初始化数据;格式:1第六章 数组三三、一维数组元素的引用、一维数组元素的引用1、数组必须先定义,后赋值,再使用、数组必须先定义,后赋值,再使用 2、数组中的元素必须、数组中的元素必须逐一引用逐一引用3、通过通过数组名数组名及其元素的及其元素的下标下标引用引用定义定义:类型类型 数组名数组名长度长度 如如:int a10引用引用:数组名数组名下标下标 a0,a1,a9为数组为数组a10中的所有元素中的所有元素(1)下标下标表示了元素在数组中的位置表示了元素在数组中的位置(2)下标下标可以用表达式可以用表达式 a2*3相当于相当于a6说明说明66.1 一维数组的定义和使用一维数组的定义和使用下标范围从下标范围从 00到到长度长度-12010年4月21日星期三4月21日星期三4月21日星期三8教师:赵军富教师:赵军富三、一维数组元素的引用1、数组必须先定义,后赋值,再使用第六章 数组 例例1:main()int i;int a10=1,2,3,4,5,6,7,8,9,10;for(i=0;i10;i+)printf(%3d,ai);运行结果:运行结果:1 2 3 4 5 6 7 8 9 10 66.1 一维数组的定义和使用一维数组的定义和使用 int a10;for(i=0;i10;i+)scanf(%d,&ai);通通过数数组名和下名和下标,引用数引用数组中的每一个元素中的每一个元素2010年4月21日星期三4月21日星期三4月21日星期三9教师:赵军富教师:赵军富例1:main()运行结果:1234567第六章 数组例:有一个数组例:有一个数组,内有内有1010个元素个元素,求出最小的元素和它的求出最小的元素和它的下标。下标。71332668153206512int a10a0a i a91.定义两个临时变量定义两个临时变量 min和和 k2.假定第一个元素就是最小的假定第一个元素就是最小的,min=a0,k=03.用用min与数组中的与数组中的每一个每一个元素元素ai比较比较,若若ai比比min小小,将将ai赋给赋给min,同时同时将下标将下标i赋给赋给k,否则否则,继续比较。继续比较。66.1 一维数组的定义和使用一维数组的定义和使用分析:分析:2010年4月21日星期三4月21日星期三4月21日星期三10教师:赵军富教师:赵军富例:有一个数组,内有10个元素,求出最小的元素和它的7133第六章 数组2671332668153206512min=a0i=1i=2i=3i=4i=5i=6i=7i=8i=91326 min=a1 k=133 min和和k的值不变的值不变133203 min和和k的值不变的值不变11 min和和k的值不变的值不变1&min531 min和和k的值不变的值不变 121 min和和k的值不变的值不变651 min和和k的值不变的值不变min=1k=566.1 一维数组的定义和使用一维数组的定义和使用2010年4月21日星期三4月21日星期三4月21日星期三11教师:赵军富教师:赵军富2671332668153206512min=a0i=1第六章 数组main()int i,a10,min,k;for(i=0;i10;i+)scanf(“%d”,&ai);min=a0;k=0;for(i=1;iai)min=ai;k=i;printf(“%d,%d”,k,min);循环输入循环输入10个数个数循环找出最小的循环找出最小的输出最小值和原始下标输出最小值和原始下标2010年4月21日星期三4月21日星期三4月21日星期三12教师:赵军富教师:赵军富main()循环输入10个数循环找出最小的输出最小值和原始第六章 数组例例 1.将将6个实数由小到大排序。个实数由小到大排序。5 8 9 4 7 25 8 9 4 7 215 8 9 4 7 225 8 9 4 7 234 8 9 5 7 244 8 9 5 7 25第一轮结束:第一轮结束:2 8 9 5 7 42 8 9 5 7 4第一轮第一轮2 4 9 8 7 5第二轮第二轮2 4 5 9 8 7第三轮第三轮2 4 5 7 9 8第四轮第四轮2 4 5 7 8 9第五轮第五轮 结结 果:果:2 4 5 7 8 9算法一:选择排序法算法一:选择排序法选择排序思路选择排序思路:将数组中的每一个元素和其后面所有的元素进:将数组中的每一个元素和其后面所有的元素进行比较,如果某一个元素小于该数,将互换位置。行比较,如果某一个元素小于该数,将互换位置。第一轮开始:第一轮开始:2010年4月21日星期三4月21日星期三4月21日星期三13教师:赵军富教师:赵军富例1.将6个实数由小到大排序。589第六章 数组#includemain()inta6=5,8,9,4,7,2;inti,j,t;for(i=0;i5;i+)/i为比较的第几轮for(j=i+1;jaj)t=ai;ai=aj;aj=t;for(i=0;i6;i+)/将比较后的记过输出来printf(%5d,ai);程序代码一:程序代码一:2010年4月21日星期三4月21日星期三4月21日星期三14教师:赵军富教师:赵军富#include程序代码一:2010年4第六章 数组#include main()int a6=5,8,9,4,7,2,i,j,t,k;/*k为数数组的下的下标*/for(i=0;i5;i+)/*i循循环比比较的的轮数数*/k=i;for(j=i+1;jaj)k=j;/*记下下较小的元素的下小的元素的下标*/t=ai;ai=ak;ak=t;/*每每轮结束后交束后交换*/for(i=0;i6;i+)printf(a%d=%dn,i,ai);程序代码二:程序代码二:2010年4月21日星期三4月21日星期三4月21日星期三15教师:赵军富教师:赵军富#include程序代码二:2010年4第六章 数组算法二:算法二:冒泡排序冒泡排序 冒泡法的思路冒泡法的思路:将相邻两个数比较,如果相邻的两个值是升序排:将相邻两个数比较,如果相邻的两个值是升序排列的,就保持原样,如果是降序排列的,就交换它们的值。(实列的,就保持原样,如果是降序排列的,就交换它们的值。(实质:大的沉下去,小的浮上来)质:大的沉下去,小的浮上来)start:a0a1a2a3a4a5a6a7257298942341611times:229574234161892times:229423416157893times:229341614257894times:229161344257895times:216129344257896times:211629344257897times:121629344257892010年4月21日星期三4月21日星期三4月21日星期三16教师:赵军富教师:赵军富算法二:冒泡排序冒泡法的思路:将相邻两个数比较,如果相邻第六章 数组main()()int a10=2,57,29,89,42,34,16,1;int pass,time ,temp,xb;for(pass=1;pass9;pass+)/*pass是循环比较的趟数是循环比较的趟数*/for(time=0;timeatime+1)/*判断每相邻两个元素下标判断每相邻两个元素下标*/temp=atime;atime=atime+1;atime+1=temp;for(xb=0;xb10;xb+)printf(“a%d=%d n”,xb,axb);程序代码一:程序代码一:2010年4月21日星期三4月21日星期三4月21日星期三17教师:赵军富教师:赵军富main()程序代码一:2010年4月21日星期三4月21第六章 数组#include#defineSIZE8main()intaSIZE=2,57,29,89,42,34,16,1;inti,pass,hold;clrscr();for(i=0;i=SIZE-1;i+)printf(%4d,ai);printf(n);for(pass=1;pass=SIZE-1;pass+)/*比较趟数*/for(i=0;iai+1)hold=ai;ai=ai+1;ai+1=hold;for(i=0;i=SIZE-1;i+)printf(%4d,ai);程序代码二:程序代码二:2010年4月21日星期三4月21日星期三4月21日星期三18教师:赵军富教师:赵军富#include程序代码二:20第六章 数组66.2 二维数组的定义和引用二维数组的定义和引用 当一个一维数组中的每个元素本身又是一个一维数组当一个一维数组中的每个元素本身又是一个一维数组时,该数组构成时,该数组构成“二维数组二维数组”。一、二维数组的定义一、二维数组的定义 格式:格式:类型类型 标识符标识符长度长度1长度长度2 如:如:int a44a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a33a0a1a2a3一一维数数组a4二二维数数组a442010年4月21日星期三4月21日星期三4月21日星期三19教师:赵军富教师:赵军富6.2二维数组的定义和引用当一个一维数组第六章 数组说明:说明:1.二维数组元素需要二维数组元素需要两个两个下标表示下标表示 例:例:int a44表示数组表示数组a中有中有4行行4列列共共16个数据个数据2.二维数组在存储空间中是按二维数组在存储空间中是按行行优先存储优先存储a00 a01 a02a23.a03第一行第一行a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a3366.2 二维数组的定义和引用二维数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三20教师:赵军富教师:赵军富说明:2.二维数组在存储空间中是按行优先存储a00a第六章 数组二、二维数组的初始化二、二维数组的初始化形式:形式:1、对对全部元素全部元素赋初值赋初值,分行,各用一个分行,各用一个 。int a23=1,2,3,4,5,6;2 整体赋值,系统自动分行整体赋值,系统自动分行int a23=1,2,3,4,5,6;1,2,33 对部分元素赋初值,注意区别:对部分元素赋初值,注意区别:(1)int a23=1,2,3;(2)int a23=1,2,3;(3)int a23=0,1,2,3;说明:当为全部元素赋值时,说明:当为全部元素赋值时,一维长度一维长度可省略可省略如:int a 3=1,2,3,4,5,6;66.2 二维数组的定义和引用二维数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三21教师:赵军富教师:赵军富二、二维数组的初始化形式:1、对全部元素赋初值,分行,各用第六章 数组三三、二维数组的引用、二维数组的引用原则:原则:逐一引用逐一引用说明:说明:1.数组名数组名下标下标1下标下标2 下标下标1 1从从0 0到长度到长度-1-1下标下标2 2从从0 0到长度到长度-1-1方法:方法:数组名数组名 N1N2如:如:int a42a00 a01 a10 a11a20 a21 a30 a3166.2 二维数组的定义和引用二维数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三22教师:赵军富教师:赵军富三、二维数组的引用原则:逐一引用说明:1.数组名下标1第六章 数组2、若定义、若定义int a34,则对则对a的正确引用是:的正确引用是:A)a 2 4 B)a 1,3 C)a 1+1 0 D)a(2)(1)1、以下二维数组说明方式中正确的是:、以下二维数组说明方式中正确的是:A)int a3;B)float a(3,4);C)double a14;D)float a(3)(4);举例:例:66.2 二维数组的定义和引用二维数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三23教师:赵军富教师:赵军富2、若定义inta34,则对a的正确引用是:1、以第六章 数组例例1:1:已知已知5 5名学生的四门课程成绩,求每位学生的总成绩,名学生的四门课程成绩,求每位学生的总成绩,并按二维表格式输出。并按二维表格式输出。姓名姓名语文语文数学数学外语外语政治政治张三张三 91726344李四李四 51627354王五王五 91829384赵六赵六 919210084刘七刘七 61725344程序代程序代码见下下页2010年4月21日星期三4月21日星期三4月21日星期三24教师:赵军富教师:赵军富例1:已知5名学生的四门课程成绩,求每位学生的总成绩,姓第六章 数组main()int a54=91,72,63,44,51,62,73,54,91,82,93,84,91,92,100,84,61,72,53,44;int i,j,s5;for(i=0;i=4;i+)/*给每个学生求总成绩给每个学生求总成绩*/si=0;for(j=0;j=3;j+)si=si+aij;for(i=0;i=4;i+)/*输出各学生成绩二维表,并附带总成绩输出各学生成绩二维表,并附带总成绩*/for(j=0;j=3;j+)printf(%4d,aij);printf(%dn,si);2010年4月21日星期三4月21日星期三4月21日星期三25教师:赵军富教师:赵军富main()2010年4月21日星期三4月21日星期三4月2第六章 数组例例2、计算两个矩阵的乘积。计算两个矩阵的乘积。main()inti,j,k;inta23=1,2,3,4,5,6,b34=1,2,3,4,5,6,7,8,9,10,11,12,c24=0;for(i=0;i2;i+)for(j=0;j4;j+)for(k=0;k3;k+)cij+=aik*bkj;for(i=0;i2;i+)for(j=0;j4;j+)printf(%4d,cij);printf(n);Chengji.c123456矩阵矩阵a=矩阵矩阵b=1234567891011122010年4月21日星期三4月21日星期三4月21日星期三26教师:赵军富教师:赵军富例2、计算两个矩阵的乘积。main()Chengji.c1第六章 数组例例3.不用输入,自动生成下列矩阵不用输入,自动生成下列矩阵1 2 3 4 51 1 6 7 81 1 1 9 101 1 1 1 111 1 1 1 1元素值为元素值为 1按按行行递递增增 mainmain()int i,j,a55;int i,j,a55;int int k=2;k=2;for(i=0;i5;i+)for(i=0;i5;i+)/*/*按行循环按行循环*/*/for(j=0;j5;j+)for(j=0;j=ji=j)aij=1;)aij=1;/*/*下下三角三角*/*/else else aij=k+;aij=k+;/*/*上上三角三角*/*/for(i=0;i5;i+)for(i=0;i5;i+)for(j=0;j5;j+)for(j=0;j5;j+)printf(“%4d”,aij);printf(“%4d”,aij);printf(“n”);printf(“n”);/*/*输输出一行后换行出一行后换行 */*/2010年4月21日星期三4月21日星期三4月21日星期三27教师:赵军富教师:赵军富例3.不用输入,自动生成下列矩阵12345第六章 数组1、用来存放字符数据的数组是、用来存放字符数据的数组是字符数组字符数组。2、字符数组中的每个元素存放一个、字符数组中的每个元素存放一个字符字符。字符数组:字符数组:字符数组:字符数组:一、字符数组的定义一、字符数组的定义一、字符数组的定义一、字符数组的定义定义方式与一、二维介绍的类似。定义方式与一、二维介绍的类似。例:例:char c10,d23;由于字符型与整型是互相通用的,由于字符型与整型是互相通用的,因此也可定义因此也可定义 int c10;二、字符数组的初始化二、字符数组的初始化二、字符数组的初始化二、字符数组的初始化与一、二维介绍的类似,只是数组的每一个元素对应一个字符。与一、二维介绍的类似,只是数组的每一个元素对应一个字符。char c10=I,a,m,h,a,p,p,y;char c32=,*,*,*;66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三28教师:赵军富教师:赵军富1、用来存放字符数据的数组是字符数组。字符数组:一、字符数组第六章 数组三、字符数组的引用三、字符数组的引用三、字符数组的引用三、字符数组的引用原则:原则:逐一引用逐一引用方法:方法:数组名数组名下标下标1下标下标2下标下标1 1从从0 0到到长度长度-1下标下标2 2从从0 0到到长度长度-1a00.a31共共8个数据个数据例例1输出一个字符串输出一个字符串main()char c10=I,a,m,a,b,o,y;int i;printf(n);66.3 字符数组的定义和引用字符数组的定义和引用for(i=0;i10;i+)printf(%c,ci);printf(%s,c);2010年4月21日星期三4月21日星期三4月21日星期三29教师:赵军富教师:赵军富三、字符数组的引用原则:逐一引用chara42方法第六章 数组 例例例例2 2输出对角线和第一列为输出对角线和第一列为输出对角线和第一列为输出对角线和第一列为“*”“*”的一个图形。的一个图形。的一个图形。的一个图形。main()char a55;int i,j;*for(i=0;i5;i+)*for(j=0;j5;j+)*if(j=0|i=j)*aij=*;*else aij=;for(i=0;i5;i+)for(j=0;j5;j+)printf(%c,aij);printf(n);66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三30教师:赵军富教师:赵军富例2输出对角线和第一列为“*”的一个图形。6.3字第六章 数组 在在C语言中,语言中,字符串字符串字符串字符串是作为是作为是作为是作为字符数组字符数组字符数组字符数组来处理的来处理的来处理的来处理的。同时,为了测同时,为了测定字符串的定字符串的实际长度实际长度实际长度实际长度,在,在C语言规定了一个语言规定了一个“字符串结束标志字符串结束标志字符串结束标志字符串结束标志”(在字符串的(在字符串的(在字符串的(在字符串的最后最后最后最后放有放有放有放有字符字符00),如一个字符串第,如一个字符串第1010个字符为个字符为0,则此字符串的,则此字符串的有效字符为有效字符为有效字符为有效字符为9 9个个个个,即在遇到,即在遇到第一个第一个第一个第一个字符字符00时,表示时,表示字符串结束字符串结束字符串结束字符串结束,由它前面的,由它前面的字符组成字符串字符组成字符串字符组成字符串字符组成字符串。系统对字符串常量也自动加一个系统对字符串常量也自动加一个0 0 作为结束符,当然在定作为结束符,当然在定义字符数组时应估计义字符数组时应估计实际字符串长度实际字符串长度。对字符数组对字符数组初始化初始化初始化初始化,可以用,可以用字符串常量字符串常量来使字符数组初始化。来使字符数组初始化。如:如:char c=“I am happy”;或或char c=“I am happy”;此时系统此时系统自动自动在串尾加在串尾加 0。四、字符串和字符串结束标志四、字符串和字符串结束标志四、字符串和字符串结束标志四、字符串和字符串结束标志66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三31教师:赵军富教师:赵军富在C语言中,字符串是作为字符数组来处理的。同第六章 数组 1、输入输出有两种方式、输入输出有两种方式:逐个字符输入输出。用逐个字符输入输出。用“%c”将整个字符串一次输入输出。用将整个字符串一次输入输出。用“%s”2、输出应注意的问题:、输出应注意的问题:char c=“china”;printf(“%s”,c);输出字符不包括结束符输出字符不包括结束符0用用“%s”格式输出字符时,格式输出字符时,printf函数中的输出项是函数中的输出项是字符数组名字符数组名,而不是而不是数组元素名数组元素名。如果数组长度大于字符串实际长度,也只输出到如果数组长度大于字符串实际长度,也只输出到0结束结束如果一个字符数组中包含如果一个字符数组中包含一个以上一个以上0,则遇到,则遇到第一个第一个0时输出时输出 就结束。就结束。输入时应输入时应注意注意:在使用在使用scanf函数时,若函数时,若输入字符串输入字符串,用,用“%s”格式,则后面跟格式,则后面跟数组数组 名,且不带名,且不带“&”符号符号,数组名指向该数组的,数组名指向该数组的起始地址起始地址。五、字符数组的输入输出五、字符数组的输入输出五、字符数组的输入输出五、字符数组的输入输出66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三32教师:赵军富教师:赵军富1、输入输出有两种方式:逐个字符输入输出。用“%c”五第六章 数组1、gets(字符数组)字符数组)作用:从终端输入一个字符串到字符数组,作用:从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起并且得到一个函数值,该函数值是字符数组的起始地址。始地址。2、puts(字符数组)字符数组)作用:将以作用:将以0结束的字符序列输出到终结束的字符序列输出到终端,使用端,使用puts函数输出的字符串中可以包含转义函数输出的字符串中可以包含转义字符字符。main()char str13;gets(str);puts(str);Computer&C Computer&C3、strcat(concatenation)(字符数组字符数组1,字符数组,字符数组2)作用:连接两个字符数组中的字符串,把字符串作用:连接两个字符数组中的字符串,把字符串2接到字符串接到字符串1的后面,的后面,结果放到字符数组结果放到字符数组1中,函数调用后得到一个函数值中,函数调用后得到一个函数值-字符数组字符数组1的地址。的地址。说明:说明:字符数组字符数组1必须足够大,以便容纳连接后的新字符串。必须足够大,以便容纳连接后的新字符串。连接时,自动取消数组连接时,自动取消数组1后的后的0,只在新串最后保留一个,只在新串最后保留一个0。例题:例题:Zfhs.c六、字符串处理函数六、字符串处理函数六、字符串处理函数六、字符串处理函数66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三33教师:赵军富教师:赵军富1、gets(字符数组)main()3、strcat(con第六章 数组4、strcpy(字符数组字符数组1,字符串,字符串2)作用:是将作用:是将字符串字符串2拷贝到数组拷贝到数组1中去。中去。说明:说明:字符数组字符数组1必须足够大,以便容纳被拷贝的字符串。必须足够大,以便容纳被拷贝的字符串。“字符数组字符数组1”必须写成数组名形式,必须写成数组名形式,“字符串字符串2”可以是可以是 字符数组名,也可以是一个字符串常量。字符数组名,也可以是一个字符串常量。如:如:strcpy(str1,str);和和 strcpy(str1,China);拷贝时连同字符串后面的拷贝时连同字符串后面的0一起拷贝到字符数组一起拷贝到字符数组1中中;不能用赋值语句将一个字符串常量或字符数组直接赋不能用赋值语句将一个字符串常量或字符数组直接赋 给一个给一个字符数组字符数组 如:如:str1=“China”为非法为非法;可以用可以用strcpy函数将字符串函数将字符串2中中前面若干个字符前面若干个字符拷贝到拷贝到 字符数组字符数组1中去中去;66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三34教师:赵军富教师:赵军富4、strcpy(字符数组1,字符串2)6.3字符数组的第六章 数组5、strcmp(字符串字符串1,字符串,字符串2)作用作用:比较字符串比较字符串1和字符串和字符串2 方法:方法:对两个字符串自左至右逐个相比,直到出现对两个字符串自左至右逐个相比,直到出现不同的字符或不同的字符或 遇到遇到0为止,如全部字符相同,则认为相等;若出现不相同的字符,为止,如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准,比较的结果由函数值带回。则以第一个不相同的字符的比较结果为准,比较的结果由函数值带回。字符串字符串1=字符串字符串2,函数值为函数值为0字符串字符串1字符串字符串2,函数值为一正整数函数值为一正整数字符串字符串1字符串字符串2,函数值为一负整(记忆方法:绝对值)函数值为一负整(记忆方法:绝对值)6、strlen(字符数组)字符数组)作用:测试字符串长度的函数,函数的值为字符串中的实际长度,作用:测试字符串长度的函数,函数的值为字符串中的实际长度,不包括不包括0在内。在内。7、strlwr(字符串)字符串)将字符串中大写字母换成小写字母。将字符串中大写字母换成小写字母。8、strupr(字符串)字符串)将字符串中小写字母换成大写字母。将字符串中小写字母换成大写字母。66.3 字符数组的定义和引用字符数组的定义和引用2010年4月21日星期三4月21日星期三4月21日星期三35教师:赵军富教师:赵军富5、strcmp(字符串1,字符串2)6.3字符数组的定第六章 数组例例2:输入一行字符,统计有多少个单词,单词用空格分隔。输入一行字符,统计有多少个单词,单词用空格分隔。如:如:I am a student.#include stdio.hmain()char string81,c;int i,num=0,word=0;gets(string);for(i=0;(c=stringi)!=0;i+)if(c=)word=0;else if(word=0)word=1;num+;printf(There are%d words in the linen,num);6.46.4应用实例应用实例2010年4月21日星期三4月21日星期三4月21日星期三36教师:赵军富教师:赵军富例2:输入一行字符,统计有多少个单词,单词用空格分隔。第六章 数组例例3任输入十个国家的名字,按由小到大排序。任输入十个国家的名字,按由小到大排序。#include stdio.h“main()char a1020,b20;int i,j;/*a数组定义为二位,列是代表每一个的名字数组定义为二位,列是代表每一个的名字*/for(i=0;i10;i+)gets(ai);for(i=0;i9;i+)for(j=i+1;j0)strcpy(b,ai);strcpy(ai,aj);strcpy(aj,b);for(i=0;i10;i+)printf(%sn,ai);6.46.4应用实例应用实例2010年4月21日星期三4月21日星期三4月21日星期三37教师:赵军富教师:赵军富例3任输入十个国家的名字,按由小到大排序。6.4应用实第六章 数组第第6 6章章 习题习题1.1.下面不能把字符串:下面不能把字符串:Hello!Hello!赋给数组的语句是赋给数组的语句是A A)char b110=H,e,l,l,o,!;char b110=H,e,l,l,o,!;B B)char b210;b2=Hello!;char b210;b2=Hello!;C C)char b310;strcpy(b3,Hello!);char b310;strcpy(b3,Hello!);D D)char b410=Hello!;char b410=Hello!;2、若二维数组若二维数组a 有有m列,则列,则aIj前的元素个数为:前的元素个数为:A)j*m+I B)I*m+j C)I*m+j-1 D)I*m+j+1 3、下面程序段运行结果是:下面程序段运行结果是:char c5=a,b,0,c,d,0;printf(“%s”,c);A)ab B)ab C)ab c D)ab02010年4月21日星期三4月21日星期三4月21日星期三38教师:赵军富教师:赵军富第6章习题1.下面不能把字符串:Hello!赋给数组的第六章 数组4、以下对以下对S的初始化,不正确的是:的初始化,不正确的是:A)char s5=“abc”B)char s5=a,b,c;C)char s5=;D)char s5=“abcdef”;5、有下面程序段:有下面程序段:char a3,b=“china”;a=b;printf(“%s”,a);则则A)运行后输出运行后输出china B)运行后输出运行后输出chC)运行后输出运行后输出chi D)编译出错编译出错第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三39教师:赵军富教师:赵军富4、以下对S的初始化,不正确的是:5、有下面程序段:第6第六章 数组6、若定义二维数组若定义二维数组 int a33=1,2,3,4,5,6,7,8,9;int k;则下列语句的输出结果是:则下列语句的输出结果是:for (k=0;k3;k+)printf(“%d”,ak,2-k);A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7 7、判断字符串判断字符串a 和和 b 是否相等,应当使用:是否相等,应当使用:A)if (a=b)B)if(a=b)C)if(strcpy(a,b)D)if (strcmp(a,b)第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三40教师:赵军富教师:赵军富6、若定义二维数组inta33=1,2,3第六章 数组8、读程序,写出正确结果:、读程序,写出正确结果:main()char a5=*,*,*,*,*int i,j,k;char space=;for(i=0;i5;i+)printf(“n”);printf(“”);for(j=1;j=i;j+)printf(“%c”,space);for(k=0;k5;k+)printf(“%c”,ak);*第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三41教师:赵军富教师:赵军富8、读程序,写出正确结果:*第6章习题2010年第六章 数组9、读程序,写出正确结果:、读程序,写出正确结果:#include stdio.h”;#include main()char a80=“AB”,b80=“LMNP”int I=0;strcat(a,b);while(aI+!=0)bI=aI;puts(b);答案:LBLMNP注意:当b赋值时,I的值已递增即b1=a1,而b0仍保持原来的值L第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三42教师:赵军富教师:赵军富9、读程序,写出正确结果:答案:第6章习题2010年4月2第六章 数组 10、用用“筛法筛法”求求1100以内的素数。以内的素数。#include math.h main()int i,j,count=0,a101;for(i=1;i=100;i+)ai=i;/*赋值赋值*/for(i=2;isqrt(100);i+)for(j=i+1;j=100;j+)if(ai!=0&aj!=0)if(aj%ai=0)aj=0;printf(n);/*输出输出*/for(i=2;i=100;i+)if(ai!=0)printf(%5d,ai);count+;if(count%10=0)printf(n);printf(n count=%d,count);第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三43教师:赵军富教师:赵军富10、用“筛法”求1100以内的素数。第6章习题第六章 数组11、编一程序,将两字符串连接起来,不用编一程序,将两字符串连接起来,不用strcat函数。函数。main()static char s180,s280;int i=0,j=0;scanf(%s,s1);scanf(%s,s2);while(s1i!=0)i+;while(s2j!=0)s1i+=s2j+;s1i=0;printf(%sn,s1);第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三44教师:赵军富教师:赵军富11、编一程序,将两字符串连接起来,不用strcat函数。第六章 数组1、输入、输入N个数到数组中(个数到数组中(N最多为最多为100),选出所有大),选出所有大 于于N个数的平均值的那些数。个数的平均值的那些数。2 2、编写一个从键盘输入编写一个从键盘输入1010个学生的成绩,统计最高分、个学生的成绩,统计最高分、最低分及平均分。最低分及平均分。3 3、任输入任输入n个正整数个正整数,将将n n个数按由小到大顺序排序。个数按由小到大顺序排序。4、任输入任输入20个正整数,找出其中素数,并按由小到大个正整数,找出其中素数,并按由小到大 排好序。排好序。5、输入一个二维矩阵,求两条对角线元素及周边元素之、输入一个二维矩阵,求两条对角线元素及周边元素之 和及该二维数组元素的最小值。和及该二维数组元素的最小值。第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三45教师:赵军富教师:赵军富1、输入N个数到数组中(N最多为100),选出所有大第6章第六章 数组 6、编程输出入下数组:、编程输出入下数组:0111110-101110-1-1-1010-1-1-1-1-10-1-1-1-1-1010-1-1-101110-10111110提示:提示:矩阵分四部分考虑矩阵分四部分考虑第第6 6章章 习题习题2010年4月21日星期三4月21日星期三4月21日星期三46教师:赵军富教师:赵军富6、编程输出入下数组:提示:第6章习题2010年4月2
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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