c语言第7章 数组 2_第1页
c语言第7章 数组 2_第2页
c语言第7章 数组 2_第3页
c语言第7章 数组 2_第4页
c语言第7章 数组 2_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、1,补充:用冒泡法对,10,个数排序(由小到大,排序过程,1,比较第一个数与第二个数,若为逆序,a0a1,则交换;然后比较第二个数与第三个数,依次类推,直至第,n-1,个数和第,n,个数比较为止,第一趟冒泡排序,结果,最大,的数被安置在最后一个,元素位置上,2,对前,n-1,个数进行第二趟冒泡排序,结果使,次,大,的数被安置在第,n-1,个元素位置,3,重复上述过程,共经过,n-1,趟冒泡排序后,排,序结束,例,38,49,65,76,13,27,30,97,第,一,趟,38,49,65,13,27,30,76,第,二,趟,38,49,13,27,30,65,第,三,趟,38,13,27,30

2、,49,第,四,趟,13,27,30,38,第,五,趟,13,27,30,第,六,趟,49,38,65,97,76,13,27,30,初,始,关,键,字,n=8,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,13,27,第,七,趟,3,由上知,对,8,个数要比较,7,次,再对,7,个数要比较,6,次,共比较,7,趟,一般来说,如果有,n,个数,则要进行,n-1,趟比,较。在第一趟要进行,n-1,次两两比较,在第,j,趟要进行,n-j,次两

3、两比较,4,结束,开始,输入,10,个数,给,a0,到,a9,j=0,j9,真,i=0,i9-j,真,aiai+1,真,ai,ai+1,假,假,i=i+1,输出,a0,到,a9,假,j=j+1,5,补充:用冒泡法对,10,个数排序(由小到大,include,void main(,int a10,int i,j,t,printf(input 10 numbers,n,for (i=0;i10;i,捳湡?層,printf(,6,for(j=0;j9;j,for(i=0;i9-j;i,if (aiai+1,t=ai;ai=ai+1,ai+1=t,printf(the sorted numbers,n

4、,for(i=0;i10;i,printf(%d ,ai,printf,n,程序结束,程序运行结果如下,input 10 numbers,1 0 4 8 12 65 -76 100,45 123,the sorted numbers,76 -45 0 1 4 8 12 65 100 123,7,例,7-4,有一个已经从小到大排好序的数组。现输,入一个数,要求按原来的规律将它插入到数组,中,算法思想,设排序是从小到大的,如果被插入,数比数组中最后一个元素的值(即最大的元素,值)都大,则插入最后位置。否则把欲插入的,数与数组中各数逐个比较,当找到第一个比插,入数大的元素,i,时,该元素之前即为插入

5、位置,然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素,i,即,可,8,例,7-4,椣据畬敤尠瑳楤?屨,void main(,int,a,11,1,5,8,10,13,16,19,30,40,70,int n,i,j,printf(insert a new,number:,scanf(%d,if(na9,a10=n,else,for(i=0;i10;i,if(ain) break,for(j=9;j=i;j,aj+1=aj,ai=n,for(i=0;i11;i,printf(m,ai,思考,教材,P128,9,例,用数组来处理求,Fibonacci,数列问题,P1

6、39,第,1,题,Fibonacci,数列公式:已知,f1=f2=1,f,n,f,n-1,f,n-2,即,1,1,2,3,5,8,13,include,void main(,int i,long int f40=1,1,for(i=2;i40;i,fi=fi-2+fi-1,for(i=0;i40;i,if(i%5=0) printf,n,printf(ld,fi,*For,循环结束,程序结束,运行结果如下,1 1 2 3 5,8 13 21 34 55,89 144 233 377 610,987 1597 2584 4181 6765,10946 17711 28657 46368 7502

7、5,121393 196418 317811 514229 832040,1346269 2178309 3524578 5702887 9227465,14930352 24157817 39088169 63245986 102334155,10,7.3,二维数组的定义和引用,定义二维数组,定义方式,数据类型,数组名,常量表达式,常量表达式,数组元素的存放顺序,原因,内存是一维的,二维数组:按行序优先,行数,列数,元素个数,行数,列数,例,int a34,float b25,int c234,int a3,4;,int a32,a,0,1,a,1,0,a,1,1,a,2,0,a,2,1,0

8、,1,4,5,2,3,a,0,0,a00 a01,a10 a11,a20 a21,11,7.3,二维数组的定义和引用,二维数组理解,例,int a34,2016,17,2018,19,2020,21,2022,23,2008,9,2010,11,2012,13,2014,15,2000,1,2002,3,2004,5,20006,7,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,二维数组,a,是由,3,个元素组成,0,1,4,5,2,3,a01,a02,a03,a10,a11,a00,a13,a20,a21,a22,a23,a12,6,7,10

9、,11,8,9,a0,a1,a2,a0,a1,a2,行名,每个元素,ai,由包含,4,个,元素的一维数组组成,12,7.3,二维数组的定义和引用,二维数组元素的引用,形式,数组名,下标,下标,例如,a23,a2-12*2-1,说明,下标可以是整型常量,变量,或整型表达,式,a,2,3,a,2-1,2*2-1,13,7.3,二维数组的定义和引用,二维数组元素的引用,数组元素可以出现在表达式中,也可以被赋值,在使用数组元素时,应该注意下标值应在已定,义的数组大小的范围内,例,b12=a23/2,常见的错误有,int a34,定义,a,为,3,4,的数组,a34=3,14,例一个学习小组有,5,个人

10、,每个人有三门课的考试成,绩。求全组分科的平均成绩和各科总平均成绩,张,王,李,赵,周,Math,80,61,59,85,76,C,90,69,89,68,77,English,77,87,68,69,85,可设一个二维数组,a35,存放五个人三门课的成绩,再设一个一维数组,v3,存放所求得各分科平均成,绩,设变量,average,为全组各科总平均成绩。编程,如下,15,include,void main(,int i,j,s=0, a35,float,v3,average,printf(input scoren,for(i=0;i3;i,for(j=0;j5;j,scanf(%d,s=s+a

11、ij,vi=s,5.0,s=0,average =(v0+v1+v2),3.0,printf(math:%fnclanguag:%fnVB:%fn,v0,v1,v2,printf(otal:%fn, average,16,7.3,二维数组的定义和引用,二维数组的初始化,按行分段赋值,按行连续赋值,例,int a23,1,2,3,4,5,6,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始,化,例,int a23,1,2,4,a00,a02,a10,a11,a12,1,2,0,4,0,0,部分初始化,例,int a3,1,4,5,a01,a02,a10,a11,a

12、12,0,0,4,5,0,第一维,长度省略初始化,例,int a23,1,2,3,4,5,6,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始,化,例,int a23,1,2,4,a00,a01,a02,a11,1,2,4,0,0,部分初始化,int a3,1,2,3,4,5,6,a01,a02,a10,a11,a12,1,2,3,4,5,6,第一维,长度省略初始化,思考,若省略第一维长度但只对部分元素赋初,值,应如何初始化,答,应按行分段赋值,例,int a23,4,a00,a01,a02,a10,a11,a12,0,0,0,4,0,0,部分初始化:只对某几行

13、元素赋初,值,注意,总之,对二维数组初始,化时,都是按行赋初值,17,例,7-5,求一个,3*3,矩阵对角线元素之和,算法思想,利用双重,for,循环控制输入二维数组,再将,aii,累加后输出,18,例,7-5,椣据畬敤尠瑳楤?屨,void main(,int a33,sum=0,int i,j,printf(please input,rectangle element:n,for(i=0;i3;i,for(j=0;j3;j,scanf(%d,for(i=0;i3;i,for(j=0;j3;j,printf(%d ,aij,printf(,for(i=0;i3;i,sum=sum+aii,pr

14、intf(duijiaoxian he is,6.2f,sum,19,例,7-6,求下列矩阵的转置矩阵,1 2 3,4 5 6,20,例,7-6,椣据畬敤尠瑳楤?屨,void main(,int a23=1,2,3,4,5,6,int b32,int i,j,for(i=0;i2;i,for(j=0;j3;j,bji=aij,for(i=0;i3;i,for(j=0;j2;j,printf(%d ,bij,printf(,21,7.4,字符数组,字符数组,字符数组的定义方法同前面类似,字符数组初始化,逐个字符赋值,用字符串常量,例,char c10, ch34,H,e,l,l,o,H,e,l,

15、l,o,逐个字符赋值,例,char ch5,B,o,y,ch0,B,o,y,0,0,ch1,ch2,ch3,ch4,若花括号中提供,的初值个数大于,数组长度,按语法错误处理,22,7.4,字符数组,字符数组,为了测定字符串的实际长度,C,语言规定了一,个“字符串结束标志,0,在程序中,往往依靠检测,0,的位置来判断字,符串是否结束,而不是根据数组的长度来决定,字符串长度,23,7.4,字符数组,字符数组,例,char ch,6,Hello,char ch6=“Hello,char ch=“Hello,用字符串常量赋值,ch0,H,e,l,l,o,ch1,ch2,ch3,ch4,0,ch5,在内存中存放时,系统自动加的,0,等价于逐个字符赋值,char ch6=H, e, l, l,o,0,24,7.4,字符数组,字符数组,要区分字符数组和字符串,字符串可以,

温馨提示

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

评论

0/150

提交评论