81数组Word格式文档下载.docx
- 文档编号:5816900
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:10
- 大小:17.97KB
81数组Word格式文档下载.docx
《81数组Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《81数组Word格式文档下载.docx(10页珍藏版)》请在冰点文库上搜索。
4.常量表达式:
表示元素的个数,即数组长度。
例如:
指定a[5],表示a数组有5个元素。
注意:
下标是从0开始的,这5个元素是:
a[0],a[1],a[2],a[3],a[4]。
请特别注意,按上面的定义,不存在数组元素a[5]。
intj,a[5];
j=a[0];
5.常量表达式:
常量表达式中可以包括常量和符号常量,不能包含变量。
如下面的例子,是不行的。
例:
intn;
scanf(“%d\n”,&
n);
/*在程序中临时输入数组的大小*/
inta[‘A’];
二、一维数组元素的引用
1.引用方式:
数组名[下标]
2.说明:
下标为整型常量或整型表达式。
3.注意:
定义数组时用到的“数组名[常量表达式]”和引用数组元素时用到的“数组名[下标]”的区别:
/*定义数组长度为10*/
t=a[6];
/*引用a数组中序号为6的元素,此时6不代表数组长度*/
4.一维数组元素引用的规定:
(1)数组必须先定义后使用
(2)数组元素只能逐个被引用,不能一次引用整个数组
(3)对数组中所有元素逐个引用时,通常可使用循环结构
#include<
stdio.h>
main()
{
inti,a[10];
for(i=0;
i<
=9;
i++)
a[i]=i;
for(i=9;
i>
=0;
i--)
printf(“%d”,a[i]);
}
结果为:
9876543210
程序使a[0]~a[9]的值为0~9,然后按逆序输出。
三、一维数组的初始化
数组的初始化:
指定义数组时,对数组元素赋以初值
格式:
类型符数组名[表达式]={初值表};
1.在定义数组时给数组的全部元素赋初值
例:
inta[10]={0,1,2,3,4,5,6,7,8,9};
2.可以只给一部分元素赋初值
例:
inta[10]={0,1,2,3,4};
/*定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素为0*/
3.给全部元素赋初值时,可不指定数组的长度
inta[]={0,1,2,3,4,5,6,7,8,9};
四、一维数组程序举例
如果一对兔子每月能生一对小兔(一雄一雌),而每对小兔
在它出生后的第三个月里,又能开始生一对小兔,假定在
不发生死亡的情況下,由一对出生的小兔开始,10个月后会有
多少对兔子?
时间(月)
初生兔子(对)
成熟兔子(对)
兔子总数(对)
1
2
3
4
5
6
8
7
13
21
9
34
10
55
main()
{
inti;
intf[10]={1,1};
for(i=2;
10;
f[i]=f[i-2]+f[i-1];
for(i=0;
{
if(i%5==0)printf(“\n”);
printf(“%12d”,f[i]);
printf(“\n”);
五、一维数组经典算法
(一)冒泡法排序(每年的上机、笔试题都考)
用冒泡法对10个数排序
t
借助中间变量t来交换两个变量的值
…………
#include<
#defineN10
voidsort(inta[],intn);
main()
{
inta[N],i;
printf(“请输入十个数:
\n”);
for(i=0;
scanf(“%d”,&
a[i]);
sort(a,10);
printf(“排序以后的结果为:
printf(“%d”,a[i]);
voidsort(inta[],intn)/*n表示元素个数*/
inti,j,t;
/*主要是为了调换,所以t应该与数组元素的类型相一致*/
for(j=0;
j<
n-1;
j++)/*外循环,表示循环的趟数*/
n-1-j;
i++)/*内循环,表示循环的次数*/
if(a[i]>
a[i+1])
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
排序过程:
1.比较第一个数与第二个数,若为逆序a[0]>
a[1],则交换;
然后比较第二个数与第三个数;
以此类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被放在最后一个元素位置上。
2.对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在地n-1个元素位置上。
3.重复上述过程,共经过n-1趟冒泡排序后,排序结束。
(二)选择法排序(通常考程序填空题)
用选择法对6个数排序
22
44
11
33
66
inta[6],i,j,k,x;
printf(“请输入6个整数:
6;
5;
k=i;
for(j=i+1;
j++)
if(a[j]<
a[k])k=j;
if(i!
=k)
x=a[i];
a[i]=a[k];
a[k]=x;
printf(“排序后的结果为:
for(i=0;
printf(“%d”,a[i]);
排序过程:
1.首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换——第一趟选择排序,结果最小的数被安置在第一个元素位置上。
2.再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第一个数交换——第二趟选择排序。
3.重复上述过程,共经过n-1趟排序后,排序结束。
(三)在一个有序的一维数组中插入一个元素,保证有序。
步骤:
1.定位,在数组中找到该元素应该在的位置
2.找到的位置,就是要插入元素应该在的位置,此时,应该将每个元素向后移动,将元素向后移动时,应该注意要从后向前,将每个元素依次向后移动
3.插入
#include<
#defineN10
voidinsert(inta[],intk);
/*声明函数,该函数是以数组名作参数,k表示要插入的值*/
inta[N]={1,5,8,12,15,23,27,29},i,k;
/*将数组初始化时只存入8个值,由于要插入元素,所以原数组内必须要有剩余空间*/
printf(“请输入要插入的元素:
k);
insert(a,k);
/*调用插入的函数,注意实参是数组名*/
a[i]!
printf(“\n”);
voidinsert(inta[],intk)
inti,j;
i++)/*定位,将i停在第一个大于k的位置上*/
k)
break;
a[j]!
j++)/*将j指到数组的最后,也就是第一个内容为0的元素上*/
for(;
j>
i;
j--)
a[j]=a[j-1];
/*将每个元素依次向后移动*/
a[i]=k;
(二)在一个数组中删除给定的元素
1.地位,找到与要删除元素相同的地址
2.将其后的每个元素向前移动,将之覆盖
voiddelete(inta[],intk);
printf(“请输入要删除的元素:
delete(a,k);
printf(“%d”,a[i]);
voiddelete(inta[],intk)
inti;
if(a[i]==k)
a[i]=a[i+1];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 81 数组