《高级语言程序设计教学课件第6章数组3.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计教学课件第6章数组3.ppt(65页珍藏版)》请在优知文库上搜索。
1、第六章第六章 数组数组6.1一维数组一维数组6.3二维数组及多维数组二维数组及多维数组6.5字符数组和字符串字符数组和字符串一维一维数组元素的输入数组元素的输入 int i,a6;for(i=0;i6;i+)scanf(“%d”,&ai);for(i=0;i6;i+)printf(“%5d”,ai);一维一维数组元素的输出数组元素的输出 从键盘输入从键盘输入10个互不相同的整数并存个互不相同的整数并存放在一维数组中,找出值最大的数组元素,并输出放在一维数组中,找出值最大的数组元素,并输出最大值所在的元素下标最大值所在的元素下标0 1234567898-930438798237962 28kk找
2、最大值,这两个程序的区别?找最大值,这两个程序的区别?从键盘上输入一个数从键盘上输入一个数x,在给定的数组,在给定的数组a中查找中查找x。如果找到了,输出相应的下标,否则,。如果找到了,输出相应的下标,否则,输出输出“Not Found”。50 1234567892219368098122055-8 165555555555555555二分查找(折半查找,对有序表的查找)二分查找(折半查找,对有序表的查找)1、思想:、思想:表头为表头为left,表尾为,表尾为right,k为要查找的关键字为要查找的关键字计算中间数据的序号计算中间数据的序号mid=(left+right)/2;若若 k=ami
3、d,成功;否则:,成功;否则:若若 kamid,则,则 left=mid+1;重复;重复1 当当 leftright时,不成功。时,不成功。折半查找过程折半查找过程0123456789101101234567891011X=20rightleft,查找失败查找失败01234567 891011012345678910110123456789101101234567891011X=7读入读入10个整数,将数组中的元素逆个整数,将数组中的元素逆序存放序存放n分析分析 当程序中读入任意当程序中读入任意10个数:个数:8、-9、30、43、87、98、23、79、62、28时时0 1234567898
4、-930438798237962 28 for(i=0,j=9;i arowcol,令令row=i;col=j 3.输出输出:row、col和和arowcol输入一个正整数输入一个正整数n(1n6),根据),根据下式生成下式生成1个个nn的方阵,转置(行列互换)后输出的方阵,转置(行列互换)后输出)1,0(1*njijnijia,分析:分析:1.输入输入:方阵的行数方阵的行数 n2.处理处理:(a)循环计算出循环计算出nn方阵每个元素的值;方阵每个元素的值;(b)将将nn方阵转置;方阵转置;3.输出输出:循环输出转置前和转置后的方阵。循环输出转置前和转置后的方阵。例如:例如:n=3 转置前转置
5、前 转置后转置后963852741a987654321Ta1、先输入、先输入n的值的值2、计算并打印出原始矩阵、计算并打印出原始矩阵3、将矩阵转置、将矩阵转置4、打印出转置后的矩阵、打印出转置后的矩阵求求NN阶二维数组的主对角线元阶二维数组的主对角线元素之和素之和918657234a求求NN阶二维数组每一行元素之和阶二维数组每一行元素之和119181265710234a数组数组 a数组数组 bb0b1b2求求NN阶二维数组每一行元素之和阶二维数组每一行元素之和b0b1b2杨辉三角形杨辉三角形11110110011000110000111112113311464115101051在程序中使数组元
6、素获得值的方法在程序中使数组元素获得值的方法n说明数组的同时进行初始化说明数组的同时进行初始化 缺点缺点:数据相对固定数据相对固定n用用scanf语句由用户输入语句由用户输入 缺点缺点:当数组规模较大时,需要读入的数据会很多当数组规模较大时,需要读入的数据会很多n利用循环变量为数组赋值利用循环变量为数组赋值16151413121110987654321a3716151413121110987654321 在程序中使数组元素获得值的方法在程序中使数组元素获得值的方法n初始化初始化,缺点是数据相对固定缺点是数据相对固定n利用利用scanfn当数组元素有规律时,利用循环变量为数组赋值当数组元素有规律
7、时,利用循环变量为数组赋值16151413121110987654321多多 维维 数数 组组nint c100100100nint b2346.5字符数组和字符串字符数组和字符串n1、使用字符数组存储字符序列、使用字符数组存储字符序列 定义定义定义格式与一维数组相同定义格式与一维数组相同 字符数组的引用字符数组的引用逐个字符引用,与一维数组相同逐个字符引用,与一维数组相同 字符数组的输入输字符数组的输入输出出 逐个输出字符序列逐个输出字符序列0123456789n注意注意 上述字符数组上述字符数组c中存放的不是字符串中存放的不是字符串n说明说明 处理连续多个字符时要知道它的处理连续多个字符时
8、要知道它的 连续读入和输出字符时要连续读入和输出字符时要字符进行字符进行n2、C语言的字符串特点语言的字符串特点 C语言没有字符串变量,用字符数组代替。语言没有字符串变量,用字符数组代替。要存储一个长度为要存储一个长度为n的字符串,需要的字符串,需要n+1个字符个字符空间空间 使用字符数组来处理字符串时,数组元素的个使用字符数组来处理字符串时,数组元素的个数也需要多数也需要多1个个 例如:例如:char str8=program;program0str0str1str2str3str4str5str6str7 输入一个以回车结束的字符串(至少输入一个以回车结束的字符串(至少10个字符),它由数
9、字字符组成,将该字符串转换成个字符),它由数字字符组成,将该字符串转换成整数后输出整数后输出将字符串转换为整数将字符串转换为整数n3、字符串存储的初始化、字符串存储的初始化 逐个字符赋初值逐个字符赋初值注意注意如果在如果在中的初始字符长度大于数组定义长度,中的初始字符长度大于数组定义长度,语法出错语法出错如果在如果在中的初始字符长度小于数组定义长度,中的初始字符长度小于数组定义长度,缺省的数据自动置缺省的数据自动置NULL字符字符00ch4ch3ch2ch1ch0olleH例例 char ch6=H,e,l,l,o,0;ch5 char str8=“China”;C hi n a0C hi n
10、 a0 0 0 字符串方式初始化字符串方式初始化char str6=“China”;char str6=“China”;char str =“China”;若字符串长度若字符串长度字符数组长度字符数组长度,其余元素自动赋其余元素自动赋0 n4、多个字符串的存储、多个字符串的存储 要存储要存储1个字符串,需要一个一维字符数组,个字符串,需要一个一维字符数组,那么,如果有多个字符串,怎样存储呢?那么,如果有多个字符串,怎样存储呢?char911=Load,Pick,New,Save,Write to,Directory,Change dir,OS shell,Quit;n5、常用的字符串处理函数、
11、常用的字符串处理函数 字符串的输入输出字符串的输入输出使用格式输入使用格式输入/输出函数输出函数 运行情况:运行情况:输入:输入:How are you?输出:输出:a=How b=are c=you?逐个输入字符串逐个输入字符串0woH0era0?uoy格式:格式:功能:向显示器输出字符串(并且输出后换行)功能:向显示器输出字符串(并且输出后换行)说明:字符数组必须以说明:字符数组必须以0结束结束专门的字符串输入输出函数专门的字符串输入输出函数字符串输出字符串函数字符串输出字符串函数格式:格式:功能:从键盘输入一个以功能:从键盘输入一个以的字符串放入字符的字符串放入字符 数组中,并自动加数组
12、中,并自动加0说明:输入串长度应小于字符数组维数说明:输入串长度应小于字符数组维数字符串输入函数字符串输入函数getsInput a string:How are you?How are you?编写程序,从键盘上输入一个字编写程序,从键盘上输入一个字符串,统计字母、数字和其它字符的个数符串,统计字母、数字和其它字符的个数已知两个字符串,要求将第二个字符已知两个字符串,要求将第二个字符串连接到第一个字符串后面。串连接到第一个字符串后面。0DCBA0GFE0GFEDCBA字符串连接函数字符串连接函数strcat(String Catenate)格式:格式:功能:把字符数组功能:把字符数组2连到字
13、符数组连到字符数组1后面后面返值:返回字符数组返值:返回字符数组1的首地址的首地址说明:说明:字符数组字符数组1必须足够大必须足够大 连接前连接前,两串均以两串均以0结束结束;连接后连接后,串串1的的0取消取消,新串最后加新串最后加00woH0era0erawoH格格 式:式:功功 能:能:将字符串将字符串2,拷贝到字符数组,拷贝到字符数组1中去中去返回值:返回值:返回字符数组返回字符数组1的首地址的首地址说说 明:明:字符数组字符数组1必须足够大必须足够大 拷贝时拷贝时0一同拷贝一同拷贝 例例 char str120,str220;str1=Hello!;str2=str1;字符串拷贝函数字
14、符串拷贝函数strcpy(String Copy)格格 式:式:功功 能:比较两个字符串能:比较两个字符串比较规则:对两串从左向右逐个字符比较(比较规则:对两串从左向右逐个字符比较(ASCII码),码),直到遇到不同字符或直到遇到不同字符或0为止为止返返 回回 值:返回值:返回int型整数型整数 若字符串若字符串1 字符串字符串2,返回,返回 若字符串若字符串1=字符串字符串2,返回,返回说说 明:明:,必须用必须用strcmp字符串比较函数字符串比较函数strcmp(String Compare)比较字符串的大小:比较字符串的大小:strcmp(A,B)strcmp(a,A)strcmp(A
15、BC,AB)strcmp(computer,compare)strcmp(36,3654)值值=A-B 0值值=C-0 0值值=u-a 0值值=0-5 0字符串长度函数字符串长度函数strlen(String Length)格格 式:式:功功 能:计算字符串长度能:计算字符串长度返回值:返回值:对于以下字符串,对于以下字符串,strlen(s)的值为:的值为:(1)char s10=A,0,B,C,0,D;(2)char s=tb0willn;(3)char s=x69082n;字符串输入输出函数:字符串输入输出函数:包含文件是包含文件是 stdio.h stdio.h 字符串处理函数:字符串处理函数:包含文件是包含文件是 string.h string.h