《高级语言程序设计教学课件》第6章 数组.ppt_第1页
《高级语言程序设计教学课件》第6章 数组.ppt_第2页
《高级语言程序设计教学课件》第6章 数组.ppt_第3页
《高级语言程序设计教学课件》第6章 数组.ppt_第4页
《高级语言程序设计教学课件》第6章 数组.ppt_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 1 提出问题: 【例6-1】从键盘输入10个数,求平均值并输出所 有大于平均值的数。 采用以前的方法解决,存在以下问题: 循环体中只用一个变量完成。计算出平均值后 ,因没有保存这10个数,无法完成比较。 用十个变量完成。无法完成循环输入。另外如 果数据增加到100个、1000个或更多时,定义如 此多的变量不现实。 第六章 数组 6.1 一维数组 6.3 二维数组及多维数组 6.5 字符数组和字符串 3 3 学习目标学习目标 n n 一维数组一维数组 n n 二维数组二维数组 n n 字符数组字符数组 n n 字符串字符串 4 4 基本概念 n数组是一种构造数据类型 n数组有序数据的集合,用数组名标识 n元素是数组的基本组成成份,它们是同 一种数据类型,用数组名和下标确定 a a55 a44 a33 a22 a11 a00 5 5 a a55 a44 a33 a22 a11 a00 n、一维数组的说明 定义方式: 数据类型数据类型 数组名数组名 整型常量表达式整型常量表达式 ; 合法标识符 例 int a6; 数组名表示该数组所 占的内存单元的首地 址,是 地址常量地址常量 编译时分配内存,并且是连续的 内存字节数= 数组元素个数*sizeof(元素数据类型) 表示元素个数 只能是常量 下标从0 0开始 6.1 一维数组 6 6 数组定义举例 n n 例例 int i=15; int datai; n n 例例 int data5; data5=10; n n 例例 #define N 15 int aN; 不能用变量定义数组元素个数 5超出了数组定义的范围,范围 是04共5个整型数据 7 7 n、一维数组的引用 数组必须先定义,后使用先定义,后使用 只能逐个引用数组元素,不能一次引用 整个数组 数组元素表示形式: 数组名数组名 下标表达式下标表达式 其中:下标可以是整型常量或整型表达式整型常量或整型表达式 8 8 数组使用举例 n n 例例 a0 = a3 + a5 + a2*4; n n 例例 ai = ai-1 + ai-2; n n 例例 int a10; printf(“%d“, a); 9 9 数组元素的输入 int a6; scanf(“%d%d%d%d%d%d”, int i , a6; for(i= 0; i#include main()main() int i, n=10 ; int i, n=10 ; float a10, avg=0; float a10, avg=0; printf(“Please input 10 data:n”); printf(“Please input 10 data:n”); for(i=0; iavg( aiavg ) ) printf(“%f ”, ai);printf(“%f ”, ai); n+;n+; if (n%5= =0) if (n%5= =0) /* /*每行输出每行输出5 5个数个数* */ / printf(“n”);printf(“n”); printf(“n“);printf(“n“); 1414 n、一维数组的初始化 初始化方式: 定义时赋初值 说明: 数组不初始化,其元素值为随机数 部分数组元素赋初值,没有赋初值的元素为0 当全部数组元素赋初值时,可不指定数组长度例例 int a5=6,2,3; a0=6; a1=2;a2=3; a3=0; a4=0; 例例 int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组元素个数 例例int a5= 1,2,3,4,5 ; a0=1; a1=2; a2=3; a3=4; a4=5; 1515 4、一维数组的应用举例 【例例6-36-3】 从键盘输入10个互不相同的整数并存放 在一维数组中,找出值最大的数组元素,并输出最 大值所在的元素下标 0 123456789 8-93043 87 98 23 79 62 28 kkkkk k=0; k=0; for(i=1; i#include main()main() int i, k ; int i, k ; int a10=0; int a10=0; printf(“Please input data:n”); printf(“Please input data:n”); for(i=0; i=p+1; i-)for(i=10; i=p+1; i-) ai=ai-1; ai=ai-1; ap=x; ap=x; 2828 【例例】已知十个整数升序排列,现输入整数x, 要求将x插入到合适的位置,使得数列依然升序 main()main() int a11=1, 4,7, 9, 12, 15, 17, 20, 21, 30; int a11=1, 4,7, 9, 12, 15, 17, 20, 21, 30; int x, i, p; int x, i, p; for(i=0;i=p+1; i-) for(i=10; i=p+1; i-) /*/*将插入位置将插入位置p p之后的元素后移之后的元素后移* */ / ai=ai-1; ai=ai-1; ap=x; ap=x; /*/*插入插入* */ / for(i=0;ixi,令min=xi 3. 输出:max和min 3030 #include #include #define SIZE 10#define SIZE 10 main()main() int aSIZE, i, max, min; int aSIZE, i, max, min; printf(“Enter %d integers:n“, SIZE); printf(“Enter %d integers:n“, SIZE); for(i=0; iai) min=ai; if(minai) min=ai; printf(“Maximum value is %dn“, max); printf(“Maximum value is %dn“, max); printf(“Minimum value is %dn“, min); printf(“Minimum value is %dn“, min); 3232 【例例6-66-6】输入一个正整数n(1n10),再输入 n个整数,用选择法将它们从小到大排序后输出 n选择法排序的核心思想: 将n个数据进行n-1次循环选择 每次循环都在参与选择的数据中选择出最小的 数据,并将它与本次参与选择的第一个数据进 行互换 然后再在剩下的数据中进行下一次循环选择 3333 4938659776132730 a0 a1 a2 a3 a4 a5 a6 a7 第一趟第一趟 min min 1349 1338659776492730 第二趟第二趟 minmin 2738 第1趟:在未排序的n个数(a0an-1)中找到 最小的元素,将它与a0交换; 第2趟:在剩下未排序的n-1个数(a1an-1) 中找到最小的元素,将它与a1交换; 第n-1趟:在剩下未排序的2个数(an-2an-1 )中找到最小的元素,将它与an-2交换; min=k; min=k; /k/k为趟数为趟数-1-1 for(i=k+1; i#include main()main() int i, min, k, n, temp; int i, min, k, n, temp; int a10; int a10; printf(“Enter n:n“); printf(“Enter n:n“); scanf(“%d“, scanf(“%d“, printf(“Enter %d integers:n“, n); printf(“Enter %d integers:n“, n); for(i=0; i aj+1) if (aj aj+1) temp=aj; temp=aj; aj=aj+1; aj=aj+1; aj+1=temp; aj+1=temp; 4040 4938659776132730 a0 a1 a2 a3 a4 a5 a6 a7 第一趟第一趟 3849 3849 6549 4965 9765 6597 7697 7697 1397 1397 2797 2797 3097 3097 7 7次次 6 6次次 5 5次次 4 4次次 3 3次次 2 2次次 1 1次次 3849657613273097 4938 3849 6549 4965 7665 6576 1376 1376 2776 2776 3076 3076 3849651327307697 第二趟第二趟 4938 3849 6549 4965 1365 1365 2765 2765 3065 3065 3849132730657697 第三趟第三趟 4938 3849 1349 1349 2749 2749 3049 3049 3813273049657697 第四趟第四趟 1338 1338 2738 2738 3038 3038 1327303849657697 第五趟第五趟 2713 1327 3027 2730 1327303849657697 第六趟第六趟 2713 1327 1327303849657697 第七趟第七趟 结 果结 果 4141 n规律: N个数比较大小共进行了 趟比较 用变量i来表示趟,则i=0, i#include main()main() int i, j, temp, n=8; int i, j, temp, n=8; int a8; int a8; printf(“please input 8 integers:n“); printf(“please input 8 integers:n“); for(i=0; iaj+1) if(ajaj+1) temp=aj; temp=aj; aj=aj+1; aj=aj+1; aj+1=temp; aj+1=temp; 对数组a中的n个元素排序(冒泡排序) 4444 printf(“sort: “); printf(“sort: “); for(i=0; iaj+1) if(ajaj+1) temp=aj; temp=aj; aj=aj+1; aj=aj+1; aj+1=temp; aj+1=temp; flag=1;flag=1; if(!flag) break; if(!flag) break; / /无交换,排序完成无交换,排序完成 冒泡排序改进 4646 思考问题: n在数学中我们常常会用到矩阵 ,它的 结构如下: n n 怎样用一种数据结构来表示矩阵呢?怎样用一种数据结构来表示矩阵呢? 4747 6.3 二维数组及多维数组 n1、二维数组的定义 n2、二维数组理解 n3、二维数组元素的引用 n4、二维数组元素的初始化 n5、二维数组的应用 4848 n1、二维数组的定义 定义方式: 数据类型 数组名数据类型 数组名 常量表达式常量表达式1 1常量表达式常量表达式2 2 ; 数组元素的存放顺序 原因:内存是一维的 二维数组:按行序优先 例 int a34; float b25; int a3,4;int a3,4; 行数 下标从0开始 列数 下标从0开始元素个数=行数*列数 int int a32a32 5 4 3 2 1 0 a21 a20 a11 a10 a01 a00 4949 例例 int a34; 每个元素每个元素aiai是由包含是由包含4 4个个 元素的一维数组组成元素的一维数组组成 n2、二维数组的理解 0 a00 1 a01 2 a02 3 a03 4 a10 5 a11 6 a12 7 a13 8 a20 9 a21 10 a22 11 a23 a0a0 a1a1 a2a2 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a00a00 a01a01 a02a02 a03a03 a10a10 a11a11 a12a12 a13a13 a20a20 a21a21 a22a22 a23a23 把二维数组二维数组a a理解成 由3 3个元素组成的一维数组个元素组成的一维数组 a2a2 a1a1 a0a0 5050 n3、二维数组元素的引用 数组名数组名 下标下标1 1下标下标2 2 n4、二维数组元素的初始化 分行初始化 按元素排列顺序初始化 例 int a23=1,2,3,4,5,6; a00 a01 a02 a10 a11 a12 123456 全部初始化 例 int a3=1,4,5; a00 a01 a02 a10 a11 a12 100450 第一维长度省略初始化第一维长度省略初始化 例 int a23=1,2,4; a00 a01 a02 a10 a11 a12 120400 部分初始化部分初始化 例 int a23=1,2,3,4,5,6; a00 a01 a02 a10 a11 a12 123456 全部初始化全部初始化 例 int a23=1,2,4; a00 a01 a02 a10 a11 a12 124000 部分初始化部分初始化 例 int a3=1,2,3,4,5; a00 a01 a02 a10 a11 a12 123450 第一维长度省略初始化第一维长度省略初始化 5151 int a34; int a34; for(i=0; i arowcol,令 row = i; col = j 3. 输出:row、col和arowcol 5454 【例例6-106-10】在一个二在一个二维维维维数数组组组组中,找出最大的元素中,找出最大的元素 值值值值以及最大元素的行下以及最大元素的行下标标标标和列下和列下标标标标,并,并输输输输出出该该该该数数组组组组 #inlcude #inlcude main()main() int row, col, i, j; int row, col, i, j; int a32; int a32; /*/*输入输入3 x 23 x 2的数组的数组 * */ / for(i=0; i#include main()main() int i, j, k, n, temp; int i, j, k, n, temp; int int a66=0;a66=0; printf(“Enter N:“); printf(“Enter N:“); scanf(“%d“, scanf(“%d“, 6060 2、计算并打印出原始矩阵 for(i=0; i#include void main(void)void main(void) int i,n; int i,n; char s10; char s10; printf(“Enter a string:“); print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论