C语言设计ppt课件-第5章

上传人:新** 文档编号:589863038 上传时间:2024-09-11 格式:PPT 页数:56 大小:1.60MB
返回 下载 相关 举报
C语言设计ppt课件-第5章_第1页
第1页 / 共56页
C语言设计ppt课件-第5章_第2页
第2页 / 共56页
C语言设计ppt课件-第5章_第3页
第3页 / 共56页
C语言设计ppt课件-第5章_第4页
第4页 / 共56页
C语言设计ppt课件-第5章_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《C语言设计ppt课件-第5章》由会员分享,可在线阅读,更多相关《C语言设计ppt课件-第5章(56页珍藏版)》请在金锄头文库上搜索。

1、第5章 同类型数据集合同类型数据集合主要内容主要内容数组与数组元素、一维数组、二维数组、多维数组、字符数组字符串处理函数指向字符串的指针变量5.1数组与数组元素的概念数组与数组元素的概念由若干类型相同的数据按一定顺序存储所形成的有序集合,称为数组 (Array) 。通常,用某个名字标识这个集合,这个名字称为数组名。构成数组的每个数据项称为数组的元素,同一数组中的元素必须具有相同的数据类型。同一数组中的数组元素在内存中占据的地址空间是连续的。 数组定义的一般形式为:类型标识符类型标识符 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22; ;数组首地址 (1) 数组的下标必须使用整型

2、常量或整型常量表达式。C语言中不允许用变量作为下标作为下标,对数组进行动态定义。例如,#define N 10 int nScore N; int n=3;int nScore n; /*不正确的定义方式不正确的定义方式*/(2) C语言规定数组的下标都是从0开始的。 说明说明(3) 数组的存储结构:数组一经定义,系统则根据数组的数据类型为每一个元素安排相同长度的、连续的存储单元,而且,C语言的数组在内存中是按行存放的,即存完第一行后存第二行,然后存第三行,以此类推。 (4) 数组元素的作用相当于简单变量。(5) 用sizeof来计算类型长度。说明说明5.2数组与数组元素的概念数组与数组元素的

3、概念5.2.1一维数组的定义一维数组定义的一般形式为:类型说明符类型说明符 数组名数组名常量表达式常量表达式;int a5; 例例5-1 查看数组查看数组nArray10的内存占用情况。的内存占用情况。 问题分析问题分析通过不同的输出方式,能够看到数组名通过不同的输出方式,能够看到数组名(nArray)和和&数组元数组元素(素(&nArray0)等表示的含义。)等表示的含义。数组名数组名nArray表示数组表示数组的首地址,同数组的首地址,同数组nArray0的地址相同。的地址相同。不同的数组类型不同的数组类型在内存中占有的字节数不同。在内存中占有的字节数不同。 程序实现程序实现5.2.2一维

4、数组的初始化数据类型数据类型 数组名数组名 数组元素个数数组元素个数=值值1,1,值值2,2, ,值值n;n;或或 数据类型数据类型 数组名数组名=值值1,1,值值2,2, ,值值n;n;2. 用赋值语句初始化用赋值语句初始化是在程序执行时实现的。1. 在数组定义时初始化定义数组时对数组元素赋初值定义数组时对数组元素赋初值: int a5=1,2,3,4,5;只给部分元素赋初值只给部分元素赋初值对对全部元素全部元素赋初值时,可以不指定长度赋初值时,可以不指定长度:int a =1,2,3,4,5;int a5=1,2,3;int a5=0;其余元素初值为零其余元素初值为零 程序实现程序实现例例

5、5-2用赋值语句初始化数组用赋值语句初始化数组nNum10,然后,然后按逆序输出数组按逆序输出数组nNum10中元素。中元素。 问题分析问题分析输入一组数,值为09,然后按逆序输出。引用形式引用形式数组名数组名下标下标说明说明下下标标即即可可以以是是整整型型常常量量或或整整型型表表达达式式,也也可可以以是是含有已赋值的整型变量或整型变量表达式含有已赋值的整型变量或整型变量表达式数组下标范围为数组下标范围为0(N-1)(N为数组长度为数组长度)注意:防止数组下标越界注意:防止数组下标越界举例举例a0=a5+aj*3;5.2.3 一维数组的引用一维数组的引用 例:例: int data5; dat

6、a5=10; C语言对数组不作越界语言对数组不作越界检查,使用时要注意检查,使用时要注意只能逐个对数组元素进行操作(只能逐个对数组元素进行操作(字符数组例外字符数组例外)输入方法输入方法输入方法输入方法:int a10, i;输入第输入第输入第输入第i i个数组元素:个数组元素:个数组元素:个数组元素:scanf( %d ,&ai);输入整个数组元素输入整个数组元素输入整个数组元素输入整个数组元素:for( i=0;i10;i+ ) scanf( %d ,&ai);输出方法:输出方法:输出方法:输出方法:输出第输出第输出第输出第i i个数组元素:个数组元素:个数组元素:个数组元素:printf

7、( %d ,ai);输出整个数组元素:输出整个数组元素:输出整个数组元素:输出整个数组元素:for( i=0;i10;i+ ) printf( %d ,ai);一维数组的输入和输出一维数组的输入和输出例例5-3 求数组求数组nAarr10中各元素的和。中各元素的和。 #include /* 求数组中各元素的和 */ void main() int i,nArr10,nSum; nSum=0; printf(请输入请输入10个整数个整数:n); for(i=0;i10;i+) scanf(%d,&nArri); for(i=0;i10;i+) nSum+=nArri; printf(nSum i

8、s %dn,nSum); 程序实现程序实现5.2. 4 一维数组程序举例一维数组程序举例 例5-4编写程序,每名学生有四门课考试成绩,用一维数组实现计算每个学生的平均成绩。 问题分析问题分析由于该例题只要求计算平均成绩,因此可以由于该例题只要求计算平均成绩,因此可以用用4个整个整型数组存放数学、物理、英语和计算机的成绩型数组存放数学、物理、英语和计算机的成绩,用一用一个实型数组存放每个学生的平均成绩个实型数组存放每个学生的平均成绩。程序可按如下。程序可按如下步骤实现:步骤实现:1)输入数据,把数学、物理、英语、计算机成绩分)输入数据,把数学、物理、英语、计算机成绩分别存放在数组别存放在数组nM

9、ath, nPhysics, nEnglish, nComputer中。中。2)计算平均成绩)计算平均成绩, 将结果放在将结果放在dAverage数组中。数组中。3)输出结果。)输出结果。 解决方案解决方案例5-4编写程序,每名学生有四门课考试成绩,用一维数组实现计算每个学生的平均成绩。 程序实现程序实现5.3 相同类型数据的二维及多维存储相同类型数据的二维及多维存储5.3.1 二维数组的定义二维数组的定义 二维数组定义的一般形式是:二维数组定义的一般形式是: 类型说明符类型说明符 数组名数组名常量表达式常量表达式1常量表达式常量表达式2;二维数组在内存中的存储:二维数组在内存中的存储:int

10、 a32a01a10a11a20a21 014523a00a00 a01a10 a11a20 a21a0a1a2行数列数元素个数=行数*列数例:例:int a34;20089201011201213201415200012002320045200067a00 a01a02 a03a10 a11a12a13a20 a21 a22 a23每个元素每个元素aiai由包含由包含4 4个元素个元素的的一维数组一维数组组成组成二维数组二维数组a a是由是由3 3个元素组成个元素组成a0a1a2行名行名014523a01a02a03a10a11a00a13a20a21a22a23a126789a0a1a2二

11、维数组理解二维数组理解5.3.2 二维数组的初始化l分行初始化: 例 int a23=1,2,3,4,5,6;a00a01a02a10a11a12123456全部初始化l按元素排列顺序初始化 例 int a23=1,2,4;a00a01a02a10a11a12120400部分初始化 例 int a3=1,4,5;a00 a01 a02 a10 a11 a12100450第一维第一维长度省略初始化长度省略初始化 例 int a23=1,2,3,4,5,6;a00a01a02a10a11a12123456全部初始化 例 int a23=1,2,4;a00a01a02a10a11a12124000部

12、分初始化 例 int a3=1,2,3,4,5;a00a01a02a10a11a12123450第一维第一维长度省略初始化长度省略初始化 在声明二维数组形参时,在声明二维数组形参时,在声明二维数组形参时,在声明二维数组形参时,不能省略数组第二维的长度不能省略数组第二维的长度不能省略数组第二维的长度不能省略数组第二维的长度 二维数组的输入和输出数组的输入和输出只能逐个对数组元素进行操作数组的输入和输出只能逐个对数组元素进行操作(字符数组例外字符数组例外)int b23,i,j;输入方法:输入方法:输入方法:输入方法:输入第输入第i i行第行第j j列元素:列元素:scanf(“%d”,&aij)

13、;输入整个数组元素:输入整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);输出方法:输出方法:输出方法:输出方法:输出第输出第i i行第行第j j列列元素:元素:printf(“%d”,aij);输出整个数组元素输出整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);例5-5用二维数组实现如下表5-2所示的计算每门课的平均分数。 问题分析问题分析可可设设一一个个二二维维数数组组nScore53存存放放五五个个人人三三门门课课的的成成绩绩。再再设设一一个个一一维维数数组组nAve

14、r 3存存放放所所求求得得各各科科平平均均成成绩,设变量绩,设变量nAverage 为全组各科总平均成绩。为全组各科总平均成绩。 程序实现程序实现/* 用二维数组解决求学生平均成绩问题*/#include #include void main() int i,j,nSum=0, nAverage,nAver3; int nScore53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,85; for(i=0;i3;i+) for(j=0;j5;j+) nSum=nSum+nScoreji;nAveri=nSum/5;nSum=0; nAverage=(nAv

15、er0+nAver1+nAver2)/3; printf(math:%dnc languag:%dndFoxpro:%dn,nAver0,nAver1,nAver2); printf(total:%dn, nAverage);#include #include void main() int i,j,nSum=0, nAverage,nAver3; int nScore35=80,61,59,85,76,75,65,63,87,77,92,71,70,90,85; for(i=0;i3;i+) for(j=0;j5;j+)nSum=nSum+nScoreij;nAveri=nSum/5;nSu

16、m=0; nAverage=(nAver0+nAver1+nAver2)/3;printf(math:%dnclanguag:%dndFoxpro:%dn,nAver0,nAver1,nAver2); printf(total:%dn, nAverage);5.3.3二维数组元素的引用二维数组引用的一般形式是:二维数组引用的一般形式是: 数组名数组名下标下标下标下标;例5-6一个电脑公司销售两种规格的磁盘:3英寸和5英寸,每一片磁盘可以有以下4种容量:单面双密;双面双密;单面高密;双面高密。用一个二维表格可以很好的表述磁盘的价格。要求将表格存入一个二维数组,并按表格的行列格式实现表格的分行打印

17、。 问题分析问题分析可可以以使使用用多多个个赋赋值值语语句句,完完成成把把这这些些价价格格存存入入一一个个表表格格的的任任务务。用用嵌嵌套套for循循环环打打印印输输出出结结果果。输输出出时时用用转转移移字字符符t控控制制对对齐齐,行行号号变变化化时时必必须须插插入入一一个个n以以输输出出回回车车换换行行。为为了了在在输输出出中中增增添添描描述述性性标标题题,只只需需简简单单地地在在首首行行数数值值打打印印之之前打印一行标题,在首列数值打印前打印一列标题即可。前打印一行标题,在首列数值打印前打印一列标题即可。 程序实现程序实现5.3.4 多维数组的初始化和引用(1)多维数组的定义及初始化多维数

18、组的定义及初始化类类型型说说明明符符 数数组组名名常常量量表表达达式式1 常常量量表表达达式式 2常量表达式常量表达式n;(2)多维数组的引用多维数组的引用数组名数组名e1e2e3;5.3.5 数组程序举例 例5-7有一个34的矩阵,编写程序找出值为最大的元素及其所在的行号和列号。 问题分析问题分析对对于于矩矩阵阵,用用二二维维数数组组来来描描述述会会很很方方便便。求求矩矩阵阵中中值值最最大大的的元元素素,可可以以这这样样实实现现:定定义义一一个个变变量量nMax并并初初始始化化为为nArr00,用用双双重重循循环环访访问问矩矩阵阵中中所所有有的的元元素素,将将每每个个元元素素和和nMax相相

19、比比较较,用用大大于于nMax值值的的元元素素替替换换nMax中中原原有有的的值值,同同时时记记录录下下来来该该元元素素的的行行列列下下标标。循循环环结结束束后后,输输出出nMax和和所所记记录录的的下下标标值值。该该问问题题解解决决方方法法可可以以用用下下面面的的流流程程图图5-14来表示来表示。解决方案解决方案 程序实现程序实现5.4 字符类型数据集合的存储字符类型数据集合的存储字符串字符串用双引号括起的一串字符是字符串常量,用双引号括起的一串字符是字符串常量,C语言语言自动为其添加自动为其添加0终结符终结符C语言并没有为字符串提供任何专门的表示法,语言并没有为字符串提供任何专门的表示法,

20、完全使用完全使用字符数组字符数组和和字符指针字符指针来处理来处理字符数组字符数组字符数组中的每一个数组元素都存放一个字符。字符数组中的每一个数组元素都存放一个字符。char string80;5.4.15.4.1字符数组的定义字符数组的定义例例: char c10, ch345.4.2 5.4.2 字符数组的初始化字符数组的初始化u逐个字符赋值逐个字符赋值u用字符串常量用字符串常量 例 char ch6=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch2ch3ch4 例 char ch5=B,o,y;ch0Boy00逐个字符赋值ch1ch2ch3ch4 例 char ch5=“Boy

21、”;ch0Boy00用字符串常量ch1ch2ch3ch4 例: char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量ch0Helloch1ch2ch3ch40ch5 例 char diamond5=., .,*,.,*,.,*, *, ., ., . ,*,.,*, .,*,., .,*;二维字符数组初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例 char fruit7=“Apple”,”Orange”, ”Grape”,”Pear”,”Peac

22、h”;二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00例:l逐个字符I/O: %cl整个字符串I/O: %s例:用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例:用%s main() char str5; scanf(“%s”, str); printf(“%s”, str);J用字符数组名用字符数组名, ,不要加不要加& &J输入串长度输入串长度

23、 数组维数数组维数J遇空格或回车结束遇空格或回车结束J自动加自动加00用字符数组名用字符数组名, ,遇遇00结束结束字符串的输入输出字符串的输入输出main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai);运行情况:(1)若输入 hel , 正常(2)若输入 hell , 正常(3)若输入 hello , 用%s 输出时,会出现问题 h e l 0 h e l l 0 h e l l o输入字符串长度 数组维数例:#include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); pr

24、intf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);运行情况:运行情况:输入:输入:How are you?输出:输出:a=How b=are c=you?输入:输入:How are you?输出:输出:a=Howscanf中%s%s输入时,遇空格或回车结束例:字符串输入举例例:字符串输入举例例例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 输入输入: How are you?输出输出: How are

25、 you ? 5.5 字符串处理函数字符串处理函数 C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。使用这些函数可大大减轻编程的负担。用于输入输出的字符串函数,在使用前应包含头文件stdio.h,使用其它字符串函数应包含头文件string.h。 包含在头文件 string.hu字符串输出函数puts格式:puts(字符数组名)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以0结束u字符串输入函数gets格式:gets(字符数组名)功能:从键盘输入一以回车结束的字符串放入字符数组中, 并自动加0说明:输入串长度应小于字符数组维数

26、例例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 输入输入: How are you?输出输出: How are you ? 常用的字符串处理函数常用的字符串处理函数u字符串连接函数strcat格式:strcat(字符数组名1,字符数组名2)功能:把字符数组2连到字符数组1后面返回值:返回字符数组1的首地址说明:字符数组1必须足够大 连接前,两串均以0结束;连接后,串1的0 取消, 新串最后加0u字符串拷贝函数strcpy格式:strcpy(字符数组名1,字符串名2

27、)功能:将字符串2,拷贝到字符数组1中去返回值:返回字符数组1的首地址说明:字符数组1必须足够大 拷贝时0一同拷贝 不能使用赋值语句为一个字符数组赋值例:例: char str120 =“Hello!”; char str220; str2=str1; ()常用的字符串处理函数(常用的字符串处理函数(2)u字符串比较函数strcmp格式:strcmp(字符串名1,字符串名2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或0为止返回值:返回int型整数,a. 若字符串1 字符串2, 返回正整数 c. 若字符串1= 字符串2,返回零说明:字符串比较不

28、能用“=”,必须用strcmpu字符串长度函数strlen格式:strlen(字符数组名)功能:计算字符串长度返回值:返回字符串实际长度,不包括0在内 本本程程序序中中把把输输入入的的字字符符串串和和数数组组st2st2中中的的串串比比较较,比比较较结结果果返返回回到到k k中中,根根据据k k值值再再输输出出结结果果提提示示 串串 。 当当 输输 入入 为为 dbasedbase时时 , 由由 ASCIIASCII码码 可可 知知“dBASEdBASE”大大于于“C C LanguageLanguage”故故k0,k0,输输出出结结果果“st1st2st1st2”。 程序实现程序实现#inc

29、lude #include main() char str1 = Hello!, str2 = How are you? ,str20; int len1,len2,len3; len1=strlen(str1); len2=strlen(str2); if(strcmp(str1, str2)0) strcpy(str,str1); strcat(str,str2); else if (strcmp(str1, str2)0) strcpy(str,str2); strcat(str,str1); else strcpy(str,str1); len3=strlen(str); puts(s

30、tr); printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);How are you?Hello!Len1=6,Len2=12,Len3=18例:例:strcmpstrcmp与与strlenstrlen举例举例#include main() char p20=a,b,c,d,q =abc,r =abcde; strcpy(p+strlen(q),r); strcat(p,q); printf(%d %d,sizeof(p),strlen(p);20 11例例:5.6 字符串指针变量与字符数组字符串指针变量与字符数组 J字符串指针变量本身是一个字符

31、串指针变量本身是一个变量变量,用于存放,用于存放字符串的首地址。字符串的首地址。J字符数组是由于若干个数组元素组成的,它字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。可用来存放整个字符串。字符数组字符数组每个元素都是字符类型的数组每个元素都是字符类型的数组charchar string100; string100;字符串指针变量字符串指针变量指向字符类型的指针指向字符类型的指针char char *p;*p;数组和指针可以等同看待数组和指针可以等同看待定义方法不同定义方法不同字符串指针变量与字符数组的区别初始化含义不同初始化含义不同 char *pstr = ” china ”;

32、 等价于等价于 char *pstr; pstr = ” china ”; char str14 = ” china ”; 不等价于不等价于 char str14; str = ” china ”;字符串指针是变量,而数组名是地址常量字符串指针是变量,而数组名是地址常量字符串指针变量与字符数组的区别在定义一个数组时,在编译时即分配单元,有确定在定义一个数组时,在编译时即分配单元,有确定地址地址,而定义一个字符指针变量时,如未对它赋初,而定义一个字符指针变量时,如未对它赋初值,则其所指数据是不定的,值,则其所指数据是不定的,因而使用是危险的。因而使用是危险的。例如,输入字符串时例如,输入字符串时

33、 char str10; scanf(%s, str); /*正确正确*/ char *a; scanf(%s, a); /*错误错误*/ 应为:应为: char *a; char str10; a = str; scanf(%s, a); /*正确正确*/字符串指针变量与字符数组的区别例:字符串拷贝方法方法1:用用字符数组字符数组编程实现编程实现 /*函数功能:函数功能: 字符串拷贝字符串拷贝 函数参数:函数参数: 字符型数组字符型数组srcStr,存储源字符串,存储源字符串 字符型数组字符型数组dstStr,存储目的字符串,存储目的字符串 函数返回值:无函数返回值:无*/void MySt

34、rcpy(char dstStr, char srcStr)int i = 0; while (srcStri != 0) dstStri = srcStri; i+; dstStri = 0;例:字符串拷贝下标 0 1 2 3 4 5 6 7 8 9 10 11 H elloC hina0HelloC hina0H elfromitoi下标移动方向下标移动方向toi=0fromto结束拷贝i+H elloC hina0H elloC hina0*from*to指针移动方向指针移动方向指指针针移移动动方向方向*to=0tofrom+fromfromto+to例:字符串拷贝方法方法2:用用字符指

35、针字符指针编程实现编程实现 /*函数功能:字符串拷贝函数功能:字符串拷贝 函数参数:函数参数: 字符型指针字符型指针srcStr,指向源字符串,指向源字符串 字符型指针字符型指针dstStr,指向目的字符串,指向目的字符串 函数返回值:无函数返回值:无*/void MyStrcpy(char *dstStr, const char *srcStr)while (*srcStr != 0) *dstStr = *srcStr; srcStr+; dstStr+; *dstStr = 0; 5.7 综合应用实例综合应用实例问题描述:学生成绩档案管理要对学生的各门课程成绩、姓名、学号等信息进行增、删

36、、改、查的相应操作。要求用数组来实现数据的存储。 这两个实例的讲解要根据教师讲课的需要及课时安排,自行从书中选取零件号零件号零件号零件号150001150001150002150002150003150003150004150004150005150005库存量库存量库存量库存量10001000500500230230700700998998 设某汽车维修厂仓库存有多种型号的汽车零设某汽车维修厂仓库存有多种型号的汽车零设某汽车维修厂仓库存有多种型号的汽车零设某汽车维修厂仓库存有多种型号的汽车零件,件,件,件, 请为该仓库管理员编写一查询程序,用于查请为该仓库管理员编写一查询程序,用于查请为该仓

37、库管理员编写一查询程序,用于查请为该仓库管理员编写一查询程序,用于查询每种零件的库存量是多少询每种零件的库存量是多少询每种零件的库存量是多少询每种零件的库存量是多少? ?EXERCISE 1EXERCISE 1: : s00 s01 s02 s03 s04 s00 s01 s02 s03 s04 s10 s11 s12 s13 s14 s10 s11 s12 s13 s14 零件号零件号零件号零件号150001150001150002150002150003150003150004150004150005150005库存量库存量库存量库存量100010005005002302307007009

38、98998#include #include main()main() int s25=150001,150002,150003, int s25=150001,150002,150003, 150004,150005,1000,500,230,700,998,x, i; 150004,150005,1000,500,230,700,998,x, i; scanf(%d, &x); scanf(%d, &x); if(x=150001 & x=150001 & x=150005) for(i=0 ; i5 ; i+) for(i=0 ; i=150001 & x=150005) for(i=0

39、;i5;i+) if(s0i=x) printf( %d,%dn,s0i,s1i); else printf( no ling jian); printf(nn 是否想继续查找?如果是请输入(是否想继续查找?如果是请输入(Y),否则输入否则输入(N)nnr); z=getchar(); z=getchar();printf(n*n);1#include main()int s25=150001,150002,150003,150004,150005,1000,500,230,998,x,i;char z;printf(nn*n);do printf(n 请输入零件请输入零件:);:); sca

40、nf(%d,&x); if(x=150001 & x=150005) for(i=0;i5;i+) if(s0i=x) printf(%d,%dn,s0i,s1i); else printf( no ling jian); printf(nn 是否想继续查找?如果是请输入(是否想继续查找?如果是请输入(Y Y), ,否则输入否则输入(N N)nnr);nnr); z=getchar(); z=getchar();while(z=y|z=Y);2#include main()int s25=150001,150002,150003,150004,150005,1000,500,230,998,x

41、,i;char z;printf(nn*n);do printf(n 请输入零件请输入零件:); scanf(%d,&x); if(x=150001 & x=150005) for(i=0;i5;i+) if(s0i=x) printf(%d,%dn,s0i,s1i); else printf( no ling jian); printf(nn 是否想继续查找?如果是请输入(是否想继续查找?如果是请输入(Y Y), ,否则输入否则输入(N N)nnrnnr); scanf( %1s,&z);while(z=y|z=Y);3 请编写一个函数,该函数的功能是:删去一维数组中所有相同请编写一个函数,

42、该函数的功能是:删去一维数组中所有相同 的数,使之只剩下一个。数组中的数已按由小到大的顺序排列,函的数,使之只剩下一个。数组中的数已按由小到大的顺序排列,函 数返回删除后数组中数据的个数。数返回删除后数组中数据的个数。 #define N 80 #define N 80 fun( int a , int n ) fun( int a , int n ) main() main() int aN=2,2,2,3,4,4,5,6,6,6,6, int aN=2,2,2,3,4,4,5,6,6,6,6, 7,7, 8,9,9,10,10,10,10; 7,7, 8,9,9,10,10,10,10;

43、int i,n=20; int i,n=20; for(i=0; in; i+) for(i=0; in; i+) printf(%3d, ai); printf(%3d, ai); n=fun(a, n); n=fun(a, n); printf( printf(剩余数组中的个数剩余数组中的个数剩余数组中的个数剩余数组中的个数%d,n);%d,n); 例如:例如:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 102 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10 删除后,数组中的内容应该是:删除后,数组中的内容应该是:2

44、 3 4 5 6 7 8 9 102 3 4 5 6 7 8 9 10EXERCISE 2EXERCISE 2: : #define N 80 #define N 80 fun( int a , int n ) fun( int a , int n ) int i, t, j=0; int i, t, j=0; t=a0; t=a0; for(i=1;in;i+) for(i=1;in;i+) if(t!=ai) if(t!=ai) aj=t; t=ai; j+; aj=t; t=ai; j+; return(j+1); return(j+1); main() main() int n=20;

45、int n=20; n= n=fun(a, n);fun(a, n); for(i=0; in; i+) for(i=0; in; i+) printf(“%3d”, ai);printf(“%3d”, ai); (1)(1)一维数组一维数组 一维数组的定义一维数组的定义, ,初始化初始化, ,引用。引用。(2)(2)二维数组二维数组 二维数组的定义二维数组的定义, ,初始化初始化, ,引用。引用。(3)(3)字符数组字符数组 字符数组的定义字符数组的定义, ,初始化初始化, ,引用。引用。(4)(4)字符串指针变量字符串指针变量 简单的字符串指针操作简单的字符串指针操作 (1)(1)字符串的存储如何运用一维或二维字符数组字符串的存储如何运用一维或二维字符数组存储字符串,对字符串的输入、输出操作等存储字符串,对字符串的输入、输出操作等(2)(2)对字符串操作的函数介绍了对字符串操作的函数介绍了6 6个由个由C C语言提供语言提供的字符串操作的库函数。的字符串操作的库函数。知识层面方法层面5.8 本章小结本章小结

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号