资源描述:
《c语言程序设计(谭浩强编)第七章数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章数组在本章节前给大家讲的都是基本类型的数据,c语言还提供了构造类型的数据(数组类型、结构体类型、共用体类型)。数组是有序数据的集合,数组中的每个元素都属于同一个数据类型。7.1一位数组的定义和引用7.1.1一维数组的定义定义方式:类型说明符数组名[常量表达式];例:inta[10];它表示数组名为a,此数组有10个元素。说明:(1)数组名定义规则和变量名相同;(2)数组名的常量表达式用方括弧括起来(3)常量表达式表示元素的个数,即数组长度。例如:a[10]表示a数组共有10个元素,下标从0开始分别为:a[0],a[1],a[2
2、],a[3],a[4],a[5],a[6],a[7],a[8],a[9]注意:没有a[10]。(4)常量表达式中可以包括常量和符号常量,即数组的大小不能依赖于程序过程中变量的值。例如:intn;scanf(“%d”,&n);inta[n];是不合法的。c语言中是先扫描全篇分配空间,因此先inta[n]后scanf(...)。7.1.2一维数组元素的引用C语言规定,只能逐个引用数组元素而不能一次引用整个数组。数组元素的表示形式为:数组名[下标]其中下标可以是整型常量或整型表达式。例如:a[0]=a[5]+a[7]-a[2*3]例7.1
3、数组元素的引用#main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf(“%d”,a[i]);}7.1.3一维数组的初始化(1)在定义数组时对数组元素赋以初值。例如:inta[10]={0,1,2,3,4,5,6,7,8,9}其中:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9(2)可以只给一部分元素赋值。例如:inta[10]={0,1,2,3,4};其中:a[0]
4、=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=0,a[6]=0,a[7]=0,a[8]=0,a[9]=0(3)如果想使一个数组中全部元素值为0,可以写成:inta[10]={0,0,0,0,0,0,0,0,0,0}不能写成:inta[10]={0*10}(4)在对全部数组元素赋初值时,可以不指定数组长度。例如:inta[5]={0,1,2,3,4}可以写成:inta[]={0,1,2,3,4}例如:inta[10]={0,1,2,3,4};只初始化了前5个元素,后5个元素为0。7.1.4一维数组程序举例*例
5、7.2用数组来处理求Fibonacci数列问题。main(){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++){if(i%5==0)printf(“”);printf(“%12d”,f[i]);}}※例7.3用冒泡法对10个数排序(由小到大)。冒泡法:对将进行排序的数,两两比较,如果不满足次序要求,则交换位置;985420第一次比较895420第二次比较859420第三次比较854920第四次比较第五次比较854290854209第
6、一次冒泡排序的结果n个数经过一次冒泡排序后,最大数(最小数)将被交换到确定位置,但前面n-1数仍然无序。第0趟冒泡排序从上述我们可以得出:如果n个数参加冒泡排序,则共要进行n-1趟排序。在第j趟比较中有n-j个数参加排序,要进行n-j-1次两两比较。本例中第1趟有5个数参加排序,进行了4次比较。854209第一次比较584209第二次比较548209第三次比较542809第四次比较542089第二次冒泡排序的结果第1趟冒泡排序程序的结构:main(){}1、定义相关的数组和相关变量3、按冒泡算法对其升序排序由于在排序中涉及到总共所需
7、的趟次和每一趟中具体比较的次数,因此可用循环嵌套控制语句来完成。4、输出经排序后的十个数2、输入待排序的十个数*main(){inta[10];inti,j,t;printf(“input10numbers:”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);printf(“”);for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(“thesortednumbers:”);for
8、(i=0;i<10;i++)printf(“%d”,a[i]);}输出a[1]到a[n]a[i]与a[i=1]交换>a[i+1]a[i]fori=0ton-j-1forj=0ton-2输入n个数给a[0]到a[n-1]§6.2二维数组