资源描述:
《c语言n04数组4学时2学时》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章数组本章课程共6学时其中:授课4学时,上机2学时4.1一维数组数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定例1:inta[6];常整数,描述元素总数例2:floatf1[5],f2[9],f3[3];必须以逗号隔开必须以分号结束例3:inti=15;intdata[i];例4:charname[0];floatweight[10.3];intarray[-100];例4:charname[0];//错误:数组长度为0floatweight[10.3];intarray[-100];例4:charname[0];//错误:
2、数组长度为0floatweight[10.3];//错误:数组长度为小数intarray[-100];例4:charname[0];//错误:数组长度为0floatweight[10.3];//错误:数组长度为小数intarray[-100];//错误:数组长度为负数例5:inta[10];floati=3;a[i]=10;例5:inta[10];floati=3;a[i]=10;//错误:下标为小数P143例3:inti=15;intdata[i];(不能用变量定义数组大小)9/18/20212一维数组在内存中如何存放?a543210…………a[5]
3、a[4]a[3]a[2]a[1]a[0]数组名表示内存中首地址inta[6];下标从0开始例1:intdata[5];data[5]=10;例1:intdata[5];data[5]=10;(C语言对数组不作越界检查,使用时要注意)存储空间连续每单元同属性9/18/20213一维数组如何引用元素?一维数组如何给元素赋值?(1)初始化赋值例inta[10];printf(“%d”,a);例inta[10];printf(“%d”,a);()必须for(j=0;j<10;j++)printf(“%dt”,a[j]);()例1inta[5]={1,2,3,
4、4,5};等价于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;例2staticinta[5];等价于:a[0]=0;a[1]=0;a[2]=0;a[3]=0;a[4]=0;(2)元素逐个赋值例3inta[5]={6,2,3};等价于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;例4inta[3]={6,2,3,5,1};例4inta[3]={6,2,3,5,1};(×)错误:赋值元素数目过多例5inta[]={1,2,3,4,5,6};编译系统根据初值个数确定数组长度9/18/20214一维数组的综合应用
5、例1:读10个整数存入数组,找出其中最大值和最小值步骤:1.输入:for循环输入10个整数2.处理:(a)先令max=min=x[0](b)依次用x[i]和max,min比较(循环)若maxx[i],令min=x[i]3.输出:max和min#include#defineSIZE10main(){intx[SIZE],i,max,min;printf("Enter10integers:");for(i=0;i6、]);}max=min=x[0];for(i=1;ix[i])min=x[i];}printf("Maximumvalueis%d",max);printf("Minimumvalueis%d",min);}9/18/20215例2:用数组求Fibonacci数列前20个数并输出#includemain(){inti;intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){
7、if(i%5==0)printf("");printf("%12d",f[i]);}}9/18/20216例3:典型例题:数的排序(对数组和多重循环的综合运用)冒泡法排序过程:比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置重复上述过程,共经过n-1趟冒泡排序后,排序结束简单选择法排序过程:首先通过n-1次比较,从n个数中找出最小的,将它与
8、第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上