C语言-数组-PPT课件.ppt

上传人(卖家):三亚风情 文档编号:2820976 上传时间:2022-05-29 格式:PPT 页数:46 大小:643.50KB
下载 相关 举报
C语言-数组-PPT课件.ppt_第1页
第1页 / 共46页
C语言-数组-PPT课件.ppt_第2页
第2页 / 共46页
C语言-数组-PPT课件.ppt_第3页
第3页 / 共46页
C语言-数组-PPT课件.ppt_第4页
第4页 / 共46页
C语言-数组-PPT课件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第六章 数组第六章 数组第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计数据类型数据类型基本数据类型基本数据类型构造数据类型构造数据类型intfloatcharstring intshort intlong int数组指针结构体共用体double第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 当变量个数少,且彼此独立时,采用变量先定义,后当变量个数少,且彼此独立时,采用变量先定义,后赋值,再使用。如:赋值,再使用。如:int a,b,c ; a = 5; b=10;c=23;

2、printf(“%d,%d,%d”,a,b,c); 当变量个数比较多,并且有内在的关系时,例如当变量个数比较多,并且有内在的关系时,例如 :全:全班有班有3030个人,每人一个成绩个人,每人一个成绩 如:如:int int c c1,1,c c2,2,,c c30 30 (可以利用数组可以利用数组) 数组是怎么构成的?数组是怎么构成的? 一组有序数据的集合一组有序数据的集合,各个元素属于各个元素属于同一个类型同一个类型,用用统一的名称统一的名称标识这一组数标识这一组数,用用下标唯一下标唯一地确定这组数中的每一个值,这就构成地确定这组数中的每一个值,这就构成了了“数组数组”。数组的基本概念数组的

3、基本概念:有限个:有限个相同数据类型相同数据类型的数据分量的有序集合。的数据分量的有序集合。第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计一一 、一维数组的定义、一维数组的定义格式:格式: 类型类型 标识符标识符 长度长度 所有元素为所有元素为同一类型同一类型变量名,变量名,即数组名即数组名数组中所含数组中所含元素的个数元素的个数int a10;由由10个整数个整数组成的数组,共同拥组成的数组,共同拥有数组名有数组名 2、数组长度必须是、数组长度必须是整型量整型量int a2*3说明:说明:1、用、用方括号方括号将数组的将数组的长度长

4、度括起来括起来3、数组长度也可以用、数组长度也可以用常量表达式常量表达式4、不能对长度做、不能对长度做动态定义动态定义,或者,或者不定义长度不定义长度如:如:int n;n=10; int an; 6 6.1 .1 一维数组的定义和使用一维数组的定义和使用例如:例如:int a5;int a5;第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计数组的三要素:数组的三要素:(1)相同的数据类型()相同的数据类型(定义数组时规定定义数组时规定)(2)有限的成员个数)有限的成员个数 (定义数组时规定定义数组时规定)(3)彼此有序的排列)彼此有序

5、的排列 (引用数组元素时的下标引用数组元素时的下标)int a5; a0=1;a1=2;a2=3;a3=4;a4=5;6 6.1 .1 一维数组的定义和使用一维数组的定义和使用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 数据类型数据类型 数组名数组名 常量表达式常量表达式 初始化数据;初始化数据;格式:格式:1.定义数组时,对定义数组时,对全部元素全部元素赋值赋值 int a5=1,2,3,4,5;2. 对对部分元素部分元素赋值赋值 float x5 = 1.9 ,2.0 ;x0=1.9;x1=2.0;3.3.若要对数组的若要对数

6、组的全部元素初始化全部元素初始化,则,则可省略可省略数组的数组的长度长度 int a = 1,2,3,4;二、二、 一维数组的初始化一维数组的初始化6 6.1 .1 一维数组的定义和使用一维数组的定义和使用用用 包括所有初值,包括所有初值,用用逗号逗号分隔各数值分隔各数值,且初值的,且初值的个数个数不能大于数组不能大于数组长度。长度。按按顺序顺序给前给前2个元素赋值个元素赋值,其余元素为均为其余元素为均为 0数组数组长度长度=元素的元素的个数个数第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计三三 、一维数组元素的引用、一维数组元素的引

7、用1、数组必须先定义,后赋值,再使用、数组必须先定义,后赋值,再使用 2、数组中的元素必须、数组中的元素必须逐一引用逐一引用3、通过通过数组名数组名及其元素的及其元素的下标下标引用引用定义定义: 类型类型 数组名数组名长度长度 如如: int a10引用引用: 数组名数组名下标下标 a0,a1,a9为数组为数组a10中的所有元素中的所有元素(1 1)下标下标表示了元素在数组中的位置表示了元素在数组中的位置(2 2)下标下标可以用表达式可以用表达式 a2*3相当于相当于a6说明说明6 6.1 .1 一维数组的定义和使用一维数组的定义和使用下标范围从下标范围从 0 0 到到长度长度-1-1第六章

8、数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 例例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 6 6.1 .1 一维数组的定义和使用一维数组的定义和使用 int a10; for(i=0;i10;i+) scanf(%d,&ai);通过数组名和下标,通过数组名和下标,引用数组中的每一个元素引用数组中的每一个元素第六章 数组2010年4月21日星期三4月21日星期三教师

9、:赵军富教师:赵军富C 语言程序设计语言程序设计例:有一个数组例:有一个数组, ,内有内有1010个元素个元素, ,求出最小的元素和它的求出最小的元素和它的 下标。下标。71332668153206512int a10a0a i a91.定义两个临时变量定义两个临时变量 min和和 k2.假定第一个元素就是最小的假定第一个元素就是最小的,min=a0,k=03.用用min与数组中的与数组中的每一个每一个元素元素ai比较比较, 若若ai比比min小小, 将将ai赋给赋给min, 同时同时将下标将下标i赋给赋给k, 否则否则,继续比较。继续比较。6 6.1 .1 一维数组的定义和使用一维数组的定义

10、和使用分析:分析:第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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=56 6.1 .1 一维数组的定义和使用一维数组的定义和使用第六章 数组2010年4月21日星期三

11、4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例 1. 将将6个实数由小到大排序。个实数由小到大排序。 5 8 9 4 7

12、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算法一:选择排序法算法一:选择排序法选择排序思路选择排序思路:将数组中的每一个元素和其后面所有的元素:将数组中的每一个元素和其后面所有的元素进行比较,如果某一个元素小于该数,将互换位置。进行比较,如果某一个元素小于该数,将互

13、换位置。第一轮开始:第一轮开始:第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计#include main()int a6=5,8,9,4,7,2;int i,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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计#include main() int a6=

14、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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计算法二:算法二: 冒泡排序冒泡排序 冒泡法的思路冒泡法的思路:将

15、相邻两个数比较,如果相邻的两个值是升序排:将相邻两个数比较,如果相邻的两个值是升序排列的,就保持原样,如果是降序排列的,就交换它们的值。(实列的,就保持原样,如果是降序排列的,就交换它们的值。(实质:大的沉下去,小的浮上来)质:大的沉下去,小的浮上来) start: a0 a1 a2 a3 a4 a5 a6 a7 2 57 29 89 42 34 16 1 1 times:2 29 57 42 34 16 1 89 2 times: 2 29 42 34 16 1 57 89 3 times: 2 29 34 16 1 42 57 89 4 times: 2 29 16 1 34 42 57

16、89 5 times: 2 16 1 29 34 42 57 89 6 times: 2 1 16 29 34 42 57 89 7 times: 1 2 16 29 34 42 57 89第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计main()() int a10=2,57,29,89,42,34,16,1; int pass , time , temp,xb; for( pass =1; pass 9; pass +) /* pass是循环比较的趟数是循环比较的趟数*/ for(time =0; time atime+1)/*

17、判断每相邻两个元素下标判断每相邻两个元素下标*/ 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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 #include #define SIZE 8 main( ) int aSIZE=2,57,29,89,42,34,16,1; int i, pass, hold; clrscr(); for(i=0;i=SIZE-1;i+

18、) 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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计6 6.2 .2 二维数组的定义和引用二维数组的定义和引用 当一个一维数组中的每个元素本身又是一个一维数组当一个一维数组中的每个元素本身又是一个一维数组时,该数组构成时,

19、该数组构成“二维数组二维数组” 。一、二维数组的定义一、二维数组的定义 格式:格式:类型类型 标识符标识符长度长度1长度长度2 如:如:int a44a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a30 a31 a32 a33a0a1a2a3一维数组一维数组a4二维数组二维数组a44第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计说明:说明: 1. 二维数组元素需要二维数组元素需要两个两个下标表示下标表示 例:例:int a44表示数组表示数组a中有中有4行行4列列共共16个数据个数据2.二维

20、数组在存储空间中是按二维数组在存储空间中是按行行优先存储优先存储a00 a01 a02a23.a03第一行第一行a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23a30 a31 a32 a336 6.2 .2 二维数组的定义和引用二维数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计二、二维数组的初始化二、二维数组的初始化形式:形式:1、 对对全部元素全部元素赋初值赋初值,分行,各用一个分行,各用一个 。 int a23=1,2,3,4,5,6;2 整体赋值,系统自动分行整体赋值,系

21、统自动分行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;6 6.2 .2 二维数组的定义和引用二维数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计三三 、二维数组的引用、二维数组的引用原则原则:逐一引用逐一引用说明:说明:

22、1.数组名数组名下标下标1下标下标2 下标下标1 1从从0 0到长度到长度-1-1 下标下标2 2从从0 0到长度到长度-1-1方法:方法:数组名数组名 N1N2如:如:int a42a00 a01 a10 a11a20 a21 a30 a316 6.2 .2 二维数组的定义和引用二维数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计2、若定义、若定义int a34,则对则对a的正确引用是:的正确引用是:A) a 2 4 B) a 1,3 C) a 1+1 0 D) a (2)(1) 1、以下二维数组说明方式中正确的是:、

23、以下二维数组说明方式中正确的是:A) int a3 ; B) float a(3,4);C) double a14; D) float a(3)(4);举例:举例:6 6.2 .2 二维数组的定义和引用二维数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例1:1:已知已知5 5名学生的四门课程成绩,求每位学生的总成绩,名学生的四门课程成绩,求每位学生的总成绩, 并按二维表格式输出。并按二维表格式输出。姓名姓名语文语文数学数学外语外语政治政治张三张三 91726344李四李四 51627354王五王五 91829384赵

24、六赵六 919210084刘七刘七 61725344程序代码见下页程序代码见下页第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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+) /* 输出各学生成绩二维表,并附带总成绩输出各学生成绩二

25、维表,并附带总成绩*/ for(j=0;j=3;j+) printf(%4d ,aij); printf(%dn,si); 第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例2 2、计算两个矩阵的乘积。计算两个矩阵的乘积。main() int i,j,k; int a23=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;

26、j4;j+) printf(%4d,cij); printf(n); Chengji.c1 2 34 5 6矩阵矩阵a=矩阵矩阵b=1 2 3 45 6 7 89 10 11 12第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例3. 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

27、(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”); / /* * 输输出一行后换行出

28、一行后换行 * */ / 第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计1、用来存放字符数据的数组是、用来存放字符数据的数组是字符数组字符数组。2、字符数组中的每个元素存放一个、字符数组中的每个元素存放一个字符字符。定义方式与一、二维介绍的类似。定义方式与一、二维介绍的类似。例:例:char c10,d23; 由于字符型与整型是互相通用的,由于字符型与整型是互相通用的,因此也可定义因此也可定义 int c10;与一、二维介绍的类似,只是数组的每一个元素对应一个字符。与一、二维介绍的类似,只是数组的每一个元素对应一个字符。char c1

29、0=I, , a, m, , h,a , p, p, y;char c32= , *, *, , , * ;6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计原则:原则: 逐一引用逐一引用方法:方法:数组名数组名下标下标1下标下标2下标下标1 1从从0 0到到长度长度-1-1下标下标2 2从从0 0到到长度长度-1-1a00.a31共共8个数据个数据例例1输出一个字符串输出一个字符串main( ) char c10=I, ,a,m, ,a, ,b,o,y ; int i;print

30、f(n); 6 6.3 .3 字符数组的定义和引用字符数组的定义和引用for(i=0;i10;i+) printf(%c,ci);printf(%s,c);第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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); 6 6.3

31、 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 在在C语言中,语言中,同时,为了测同时,为了测定字符串的定字符串的,在,在C语言规定了一个语言规定了一个字符字符 ),如一个字符串第,如一个字符串第个字符为个字符为0,则此字符串的,则此字符串的,即在遇到,即在遇到字符字符时,表示时,表示,由它前面的,由它前面的。 系统对字符串常量也自动加一个系统对字符串常量也自动加一个作为结束符,当然在定作为结束符,当然在定义字符数组时应估计义字符数组时应估计实际字符串长度实际字符串长度。 对字符数组对字

32、符数组,可以用,可以用字符串常量字符串常量来使字符数组初始化。来使字符数组初始化。 如:如: char c =“I am happy”; 或或char c =“I am happy”;此时系统此时系统自动自动在串尾加在串尾加 0。6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 1、输入输出有两种方式、输入输出有两种方式: 逐个字符输入输出。用逐个字符输入输出。用“%c” 将整个字符串一次输入输出。用将整个字符串一次输入输出。用“%s” 2、输出应注意的问题:、输出应注意的问题:

33、char c=“china”;printf(“%s”,c);输出字符不包括结束符输出字符不包括结束符0用用“%s”格式输出字符时,格式输出字符时,printf函数中的输出项是函数中的输出项是字符数组名字符数组名, 而不是而不是数组元素名数组元素名。如果数组长度大于字符串实际长度,也只输出到如果数组长度大于字符串实际长度,也只输出到0结束结束如果一个字符数组中包含如果一个字符数组中包含一个以上一个以上0,则遇到,则遇到第一个第一个0时输出时输出 就结束。就结束。 输入时应输入时应注意注意:在使用在使用scanf函数时,若函数时,若输入字符串输入字符串,用,用“%s”格式,则后面跟格式,则后面跟数

34、组数组 名,且不带名,且不带“&”符号符号,数组名指向该数组的,数组名指向该数组的起始地址起始地址。6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计1、gets(字符数组)字符数组) 作用:从终端输入一个字符串到字符数组,作用:从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起并且得到一个函数值,该函数值是字符数组的起始地址。始地址。2、puts(字符数组)字符数组) 作用:将以作用:将以0结束的字符序列输出到终结束的字符序列输出到终端,使用端,使用put

35、s函数输出的字符串中可以包含转义函数输出的字符串中可以包含转义字符字符。main()char str13; gets(str); puts(str);Computer & C Computer & C3、strcat(concatenation)(字符数组字符数组1,字符数组,字符数组2) 作用:连接两个字符数组中的字符串,把字符串作用:连接两个字符数组中的字符串,把字符串2接到字符串接到字符串1的后面,的后面,结果放到字符数组结果放到字符数组1中,函数调用后得到一个函数值中,函数调用后得到一个函数值-字符数组字符数组1的地址。的地址。说明:说明: 字符数组字符数组1必须足够大,以便容纳连接后

36、的新字符串。必须足够大,以便容纳连接后的新字符串。 连接时,自动取消数组连接时,自动取消数组1后的后的0,只在新串最后保留一个,只在新串最后保留一个0。例题:例题:Zfhs.c6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计4、strcpy(字符数组字符数组1,字符串,字符串2) 作用:是将作用:是将字符串字符串2拷贝到数组拷贝到数组1中去。中去。 说明:说明:字符数组字符数组1必须足够大,以便容纳被拷贝的字符串。必须足够大,以便容纳被拷贝的字符串。“字符数组字符数组1”必须写成

37、数组名形式,必须写成数组名形式,“字符串字符串2”可以可以是是 字符数组名,也可以是一个字符串常量。字符数组名,也可以是一个字符串常量。 如:如:strcpy(str1,str); 和和 strcpy(str1,China) ;拷贝时连同字符串后面的拷贝时连同字符串后面的0一起拷贝到字符数组一起拷贝到字符数组1中中;不能用赋值语句将一个字符串常量或字符数组直接赋不能用赋值语句将一个字符串常量或字符数组直接赋 给一个给一个字符数组字符数组 如:如:str1=“China”为非法为非法;可以用可以用strcpy函数将字符串函数将字符串2中中前面若干个字符前面若干个字符拷贝到拷贝到 字符数组字符数组

38、1中去中去;6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计5、strcmp(字符串字符串1,字符串,字符串2) 作用作用: 比较字符串比较字符串1和字符串和字符串2 方法:方法: 对两个字符串自左至右逐个相比,直到出现对两个字符串自左至右逐个相比,直到出现不同的字符或不同的字符或 遇到遇到0为止,如全部字符相同,则认为相等;若出现不相同的字符,为止,如全部字符相同,则认为相等;若出现不相同的字符, 则以第一个不相同的字符的比较结果为准,比较的结果由函数值带回。则以第一个不相同的

39、字符的比较结果为准,比较的结果由函数值带回。字符串字符串1=字符串字符串2, 函数值为函数值为0字符串字符串1字符串字符串2, 函数值为一正整数函数值为一正整数字符串字符串1字符串字符串2, 函数值为一负整(记忆方法:绝对值)函数值为一负整(记忆方法:绝对值)6、strlen(字符数组)字符数组) 作用:测试字符串长度的函数,函数的值为字符串中的实际长度,作用:测试字符串长度的函数,函数的值为字符串中的实际长度, 不包括不包括0在内。在内。7、strlwr(字符串)字符串)将字符串中大写字母换成小写字母。将字符串中大写字母换成小写字母。8、strupr(字符串)字符串)将字符串中小写字母换成大

40、写字母。将字符串中小写字母换成大写字母。6 6.3 .3 字符数组的定义和引用字符数组的定义和引用第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例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; els

41、e if (word= =0) word=1; num+; printf(There are %d words in the linen,num); 6.4 6.4 应用实例应用实例第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计例例3任输入十个国家的名字,按由小到大排序。任输入十个国家的名字,按由小到大排序。#include stdio.h“main( ) char a1020, b20; int i, j; /* a数组定义为二位,列是代表每一个的名字数组定义为二位,列是代表每一个的名字*/ for(i=0;i10;i+) gets

42、(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.4 6.4 应用实例应用实例第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计第第6 6章章 习题习题1. 1. 下面不能把字符串:下面不能把字符串:Hello! Hello! 赋给数组的语句是赋给数组的语句是A A)char b110=H,e,l,l,o,!;char b110=H,e,l,l,o,!;B B)cha

43、r 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

44、)ab0第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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

45、年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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

46、6章章 习题习题第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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日星期三

47、教师:赵军富教师:赵军富C 语言程序设计语言程序设计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日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计 10、 用用“筛法筛法”求求1100以内

48、的素数。以内的素数。 #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, coun

49、t); 第第6 6章章 习题习题第六章 数组2010年4月21日星期三4月21日星期三教师:赵军富教师:赵军富C 语言程序设计语言程序设计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日星期三教师:

50、赵军富教师:赵军富C 语言程序设计语言程序设计1、输入、输入N个数到数组中(个数到数组中(N最多为最多为100),选出所有大),选出所有大 于于N个数的平均值的那些数。个数的平均值的那些数。2 2、编写一个从键盘输入编写一个从键盘输入1010个学生的成绩,统计最高分、个学生的成绩,统计最高分、 最低分及平均分。最低分及平均分。3 3、任输入任输入n个正整数个正整数, 将将n n个数按由小到大顺序排序。个数按由小到大顺序排序。4、 任输入任输入20个正整数,找出其中素数,并按由小到大个正整数,找出其中素数,并按由小到大 排好序。排好序。5、输入一个二维矩阵,求两条对角线元素及周边元素之、输入一个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言-数组-PPT课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|