资源描述:
《C语言课件(王曙燕)chp6数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章数组一维数组二维数组字符数组C语言程序设计第七章数组§7.1一维数组C语言中提供了一种构造类型数据——数组,它有一组带下标变量组成。用数组存储数据,可利用循环改变下标值对各个变量进行相同的重复处理。定义:数组元素只带一个下标格式:元素类型名数组名[数组长度]〖={元素初值列表}〗;说明:元素类型名定义数组中每个元素的类型,数组名的命名规则同变量名——合法的标识符[]中的数组长度表示该数组中包含的元素个数。应为常量表达式(常量和符号常量),不允许有变量inta(10);floatb[10.0];in
2、ti;intn[i+5];C语言程序设计第七章数组#defineN5inta[N];C语言程序设计第七章数组C语言中,数组元素的下标一律从0开始升序编排。可选项“={元素初值列表}”是给各元素赋初值,称为对数组进行初始化。初值列表由逗号分割组成,列表含全部元素的初始值intn[10]={1,2,3,4,5,6,7,8,9,10};intn[10]={1,1,1,1,1,1,1,1,1,1};元素初值列表中仅含前面部分元素的初值intn[10]={1,2,3,4,5};/*n[5]~n[9]系统设置为0*
3、/如果元素初值列表含全部元素的初始值,可省略数组长度。数组长度由初值个数来自动确定inta[]={0,1,2,3,4,5};/*数组长度为*/6存储方式:元素按下标的顺序连续分配在内存中C语言程序设计第七章数组一维数组元素的引用格式:数组名[下标]下标为整型表达式,确定所引用元素的序号注意:下标不能越界main(){inti,d[9]={1,2,3,4,5,6,7,8,9};i=d[0]+d[8];d[3]=d[0]+d[d[3]]*2;d[9]=i;d[0]=d[i-d[3]];for(i=1;i<=
4、9;i++)printf(“d[%d]=%d”,i,d[i]);}/*下标越界*/9=/*i=9时下标越界*/数组名表示每个数组的首地址a表示&a[0]C语言程序设计第七章数组一维数组应用举例例7.1将任意一个十进制数转换成二进制数,然后以二进制数形式输出。算法分析:1、十进制到二进制数转换原理2、方法例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111111011余余余余余余C语言程序设计第七章数组main(){inti=0,n,d[40];s
5、canf(“%d”,&n);while(n>0){d[i++]=n%2;n=n/2;}for(i--;i>=0;i--)printf(“%1d”,d[i]);printf(“”);}C语言程序设计第七章数组例7.2从键盘输入10个学生的成绩,由高到低排序输出成绩。算法分析:排序——每趟选择最大值设有n个数,排序方法如下:第1趟:在n个数中找出最大数的放在第一个元素第1个和其他n-1个元素逐个比较,有更大的则交换到第1个元素第2趟:在n-1个数中找出第2大的数放在第二个元素从第2个和其他n-2个元素逐
6、个比较,有第2大的则交换到第2个元素第i趟:在剩下的n-i+1个元素中找出第i大的数,放在第i个元素……C语言程序设计第七章数组#defineN10main(){intd[N];inti,j,t;printf(“Input%dscores:”,N);for(i=0;i7、f(“Thesortedscores:”);for(i=0;ia[2],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟起
8、泡排序,比较n-1次,结果最大的数被安置在最后一个元素位置上(2)对前n-1个数进行第二趟起泡排序,比较n-2次,结果使次大的数被安置在第n-1个元素位置(3)重复上述过程,共经过n-1趟起泡排序后,排序结束(4)结论:需要n-1趟起泡排序,第j趟需要n-j次比较排序过程例3849657613273097第一趟38496513273076第二趟384913273065第三趟3813273049第四趟13273038第五趟132730第六趟4