大学计算机程序设计基础(C语言)第8章 数组资料PPT课件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2趟查找: 19 3 6 7 9
交换: 19 9 6 7 3
第3趟查找: 19 9 6 7 3
交换: 19 9 7 6 3 第4趟查找: 19 9 7 6 3
交换: 19 9 7 6 3
选择法排序的思路是: 先从全体待排序的n个数据中找出 最大的数,把它放到数组的第0个位 置上,完成第1趟选择排序; 接着再在剩余的n-1个数据中找出 最大的数放到数组的第1个位置上, 完成第2趟选择排序,……, 如此反复,经过n-1趟选择排序后, 原始数组已经有序。
printf(“该数在数组中的下标是%d”,i); }
【例8.5】 编写程序,利用选择法对10个整数进行递
增排序,并输出排序后的结果。
main( ) { int i,j,k,temp,a[10];
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
for(i=0;i<9;i++) { k=i;
(数组的长度 )
常量表达式中不能含有变量。
数组在内存中占据一片连续的存储单元,数组中 的每个数组元素在这片连续的存储单元中按序存 储。C语言规定数组名表示该连续存储单元的首 地址(首字节编号)。
a
a[0] a[1] a[2] a[3] a[4] a[5] 图8.1 数组的存储结构
数组的定义语句给每个数组元素分配了一定的存 储单元,和简单变量一样它们的值是不确定的、是 随机的,只有通过赋值或赋初值才能得到确定的值。
main() { int num[10]={1,32,14,56,74,3,56,6,9,12}, x, i, j;
printf(“input x:”); scanf("%d", &x); for(i=0; i<10; i++)
if (num[i]==x) break; if(i==10)
printf(“该数在数组中不存在 "); else
scanf("%d", &a[i]); max=a[0]; id=0; for(i=1;i<10;i++)
if(a[i]>max) { max=a[i]; id=i; }
printf(“最大数是%d,位序为:%d\n", max,id); }
【例8.4】已知一个一维数组中的各个元素值均不相同, 编写程序查找数组中是否有值为x的数组元素。如果有, 输出相应的下标;如果没有,输出“该值在数组中不存在” 字样信息 。
③ 数组引用时,下标值应该在已定义的数组大小范 围内。常出现的错误是:
int a[100]; a[100]=4;
8.1.4 一维数组应用
【例8.2】从键盘输入10个整数存放在数组中,输出其 中最大的一个数和它在数组中的位序。
main( ) { int a[10],i, max, id;
printf("Enter data:\n"); for(i=0;i<10;i++)
8.1.1 一维数组的定义 int n;
定义形式为: [存储类别] 类型标识符
scanf("%d",&n); 数i组nt名a[[常n];量表达式], …;
例如:int a[6];
float x[100],y[100];
说明:
类型标识符”表明了数组元素的数据类型
常量表达式是由常量、符号常量和运算符组成的 表达式,它的值规定了数组中数组元素的个数
例如: a[0]=123; scanf(“%d”,&a[3]); printf(“%d”,a[5]); a[i++]=2*a[i+j];
【例8.1】输入100个整型数据,然后分别按顺序和逆序的 方式输出。
main( )
{ int i,a[100]; for(i=0;i<100;i++)
scanf("%d",&a[i]);/*顺序输入*/ for(i=0;i<100;i++)
第8章 数 组
Fra Baidu bibliotek本章要点
一维数组 二维数组 字符数组 数组元素作函数实参
基本概念
数组是同类型数据的集合,集合中的每个数 据称为数组元素或下标变量,数组元素的类 型相同、个数确定。
下标变量中如果只用一个下标,则称为一维 数组,用两个下标则称之为二维数组,用三 个下标称之为三维数组,依此类推。
8.1 一 维 数 组
同类型的数组的定义和普通变量的定义可以出现 在同一个定义语句中。
如: int a[6],b[20],i,j;
8.1.2 一维数组的初始化
➢ 数组初始化的一般形式为: [存储类别] 类型标识符 数组名[常量表达式]={初值表};
➢ 在编译过程中完成的,不占程序运行时间。 ➢ 数组初始化常见的几种形式:
printf("%d",a[i]);/*顺序输出*/ for(i=99;i>=0;i--)
printf("%d",a[i]);/*逆序输出*/
}
在引用数组元素时应注意: ① 引用数组元素时,下标表达式的值是确定的。
② 数组元素本身可以看作是一个普通变量,代表内 存中的一个存储单元。因此数组元素可以在任何相 同类型简单变量允许使用的位置引用。
➢ 对所有数组元素赋初值,此时数组定义中表示数组 长度的常量表达式可以省略。 int a[6]={0,1,2,3,4,5};
➢ 可以只给一部分数组元素赋初值,此时数组长度一 般不省略。后面3个元素由C编译系统自动赋值为0。 int a[6]={0,1,2};
8.1.3 一维数组元素的引用
引用形式为: 数组名[下标表达式]
for(j=k+1;j<10;j++) if(a[k]<a[j]) k=j;
temp=a[i];a[i]=a[k]; a[k]=temp;
} for(i=0;i<10;i++)
printf(“%4d”,a[i]);
}
排序前: 7 3 6 19 9
第1趟查找: 7 3 6 19 9
交换: 19 3 6 7 9
【例8.6】 编写程序,利用冒泡法对10个整数进行递增 排序。
第一趟 12 4 15 6 3
main( ) { int a[10],i,j,temp;
4 12 15 6 3 4 12 15 6 3
printf("Input 10 numbers\n"); for(i=0;i<10;i++)
scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++)
相关文档
最新文档