lesson10数据的组织结构一二维数组与排序_第1页
lesson10数据的组织结构一二维数组与排序_第2页
lesson10数据的组织结构一二维数组与排序_第3页
lesson10数据的组织结构一二维数组与排序_第4页
lesson10数据的组织结构一二维数组与排序_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作学习目标学习目标:3 1掌握二维数组的使用掌握二维数组的使用2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3数学概念矩阵:数学概念矩阵:90 80 70 9997 83 92 6591 85 88 76例:例:2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3日常生活例日常生活例子表格:子表格:1234567891011121314151620

2、21-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3特点:特点: 按行、列分布,并且每个数据需要由两按行、列分布,并且每个数据需要由两个位置确定:个位置确定: 一个行位置,一个列位置一个行位置,一个列位置C语言中实现方法:语言中实现方法:二维数组二维数组2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3在在C语言中如何实现语言中如何实现?类型类型 数组名数组名 行长度行长度列长度列长度int array 34例:例:float d 35; int a66; char s410;所有元素都是所有元素都是in

3、t数组名数组名3行行4列列注意:必须是常量注意:必须是常量array 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3二维数组的引用二维数组的引用123456789 10 11 127第第1行行第第2列列数组数组aa1 2数组名数组名行下标行下标列下标列下标 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组二维数组3二维数组初始化:二维数组初始化:在定义二维数组时,给元素赋初值在定义二维数组时,给元素赋初值形式形式1: int a23=1,2,3,4,5,6; 形式形式2: int a23=1,2,3,4

4、,5,6; 形式形式3: int a 3=1,2,3,4,5,6; 形式形式4: int a2=1,2,3,4,5,6; 错误!错误!2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组操作二维数组操作4二维数组元素的引用及基本操作二维数组元素的引用及基本操作1. 数组的赋值数组的赋值 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) valueij = i+j; 2. 数组的输入数组的输入 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) scanf(“%d”, &valueij)

5、;#define ROWS 4#define COLS 5int value ROWSCOLS; 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组操作二维数组操作4二维数组元素的引用及基本操作二维数组元素的引用及基本操作3. 数组的输出数组的输出 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) printf(“%4d”, valueij); putchar(n); #define ROWS 4#define COLS 5int value ROWSCOLS; 2021-11-4电气与信息工程学院计算机系制作电气与信息工

6、程学院计算机系制作3二维数组操作二维数组操作4例题:从键盘输入如下的矩阵例题:从键盘输入如下的矩阵1 2 4 5 1 2 4 5 3 4 5 73 4 5 75 7 9 85 7 9 8然后输出该矩阵然后输出该矩阵2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作lessson11_01.c#include int main()int a34,i,j;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,aij);printf(n); return

7、0;2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组应用二维数组应用5例6: 判断给定方阵是否为对称矩阵。 1102188210413992521136143688991471232253612332021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组应用二维数组应用5 问题分析问题分析l对于一个给定的对于一个给定的N N N N矩阵矩阵arrayarray,如果矩阵中的每个元,如果矩阵中的每个元素都满足素都满足arrayij=arrayjiarrayij=arrayji,则称这个矩阵为,则称这个矩阵为对称矩阵。对称矩阵

8、。 l在判断一个给定的矩阵是否为对称矩阵时,只需要用在判断一个给定的矩阵是否为对称矩阵时,只需要用下三角部分的每个元素与对应的上三角元素进行比较。下三角部分的每个元素与对应的上三角元素进行比较。如果每一对元素都相等,这个矩阵就是对称矩阵,否如果每一对元素都相等,这个矩阵就是对称矩阵,否则,就是非对称矩阵。则,就是非对称矩阵。2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作 算法描述 开开始始 结结束束 显显示示矩矩阵阵 输输入入矩矩阵阵 mij!=mji 输输出出非非对对称称信信息息 Y N 0i iNUM 0j ji j+1j Y N i+1i Y 输输出出对对

9、称称信信息息 N 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作#include #define NUM 5 矩阵行列数矩阵行列数int main( ) int mNUMNUM; /*定义二维数组变量定义二维数组变量*/ int i, j;/* 输入矩阵输入矩阵 */ printf(Enter %d rows %d cols datas for the maxtrix:n,NUM,NUM); for (i=0; iNUM; i+) for (j=0; jNUM; j+) scanf(%d, &mij); /* 显示矩阵显示矩阵 */ for (i=0;

10、iNUM; i+) for (j=0; jNUM; j+) printf(%4d, mij); printf(n); lesson11_06_1.c2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作/* 判断矩阵是否对称并输出相应的结果判断矩阵是否对称并输出相应的结果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=mji) printf(nThe matrix isnt symmetrical.); return 0; printf(nThe matrix is symmetrical.); return 0;2

11、021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组应用二维数组应用5改进:改进:从文件读入数组从文件读入数组使用标志变量判断使用标志变量判断2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作#include #define NUM 5 矩阵行列数矩阵行列数int main( ) int mNUMNUM; /*定义二维数组变量定义二维数组变量*/ int i, j; FILE * fp; /* 输入矩阵输入矩阵 */ fp=fopen(m.txt,r); for (i=0; iNUM; i+) for (j=0; jNUM; j+)

12、 fscanf(fp,%d, &mij); /* 显示矩阵显示矩阵 */ for (i=0; iNUM; i+) for (j=0; jNUM; j+) printf(%4d, mij); printf(n); lesson11_06_2.c2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作/* 判断矩阵是否对称并输出相应的结果判断矩阵是否对称并输出相应的结果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=mji) flag=0; break; if(flag=1)printf(n对称对称); elsep

13、rintf(n不对称不对称); return 0;2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组应用二维数组应用5例7:输入输入3个同学、个同学、4门课程的成绩,并按门课程的成绩,并按照如下格式输出照如下格式输出(成绩保存在成绩保存在score.txt文件中文件中)90 80 70 9997 83 92 6591 85 88 762021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作#include #define STUS 3 #define LSN 4 int main( ) int mSTUSLSN; /*定义二维数组变量

14、定义二维数组变量*/ int i, j; FILE * fp; fp=fopen(score.txt,r); for (i=0; iSTUS; i+) for (j=0; jLSN; j+) fscanf(fp,%d, &mij); /* 显示矩阵显示矩阵 */ for (i=0; iSTUS; i+) for (j=0; jLSN; j+) printf(%4d, mij); printf(n); lesson11_07.c2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3二维数组应用二维数组应用5从键盘输入一个矩阵,将该矩阵转置从键盘输入一个矩阵,将该

15、矩阵转置后输出后输出2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作分析:分析:n定义一个定义一个2行行4列的二维数组列的二维数组a,用于存放原始,用于存放原始的矩阵的矩阵n定义一个定义一个4行行2列的二维数组列的二维数组b,用于存放转置,用于存放转置后的矩阵后的矩阵n循环数组循环数组a的所有元素,将的所有元素,将a中的每一个元素中的每一个元素存放至存放至b的对应位置:行列位置正好相反的对应位置:行列位置正好相反n输出二维数组输出二维数组b2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3课堂练习课堂练习6输出如下图形输出如下图形16

16、1116212712172238131823491419245101520252021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3排序排序7例:假设用户通过键盘输入一个整型数列。例:假设用户通过键盘输入一个整型数列。请编写一个程序,将其按照从小到大的顺序请编写一个程序,将其按照从小到大的顺序重新排列。重新排列。即在从键盘输入如下的数据即在从键盘输入如下的数据2 6 8 1 9 5 42 6 8 1 9 5 4输出输出1 2 4 5 6 8 9 1 2 4 5 6 8 9 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作3排序排序7 问题

17、分析问题分析l首先从首先从n n个数据中选择一个最小的数据,并将它交换到个数据中选择一个最小的数据,并将它交换到第第1 1个位置;然后再从后面个位置;然后再从后面n-1n-1个数据中选择一个最小个数据中选择一个最小的数据,并将它交换到第的数据,并将它交换到第2 2个位置;以此类推,直至最个位置;以此类推,直至最后从两个数据中选择一个最小的数据,并将它交换到后从两个数据中选择一个最小的数据,并将它交换到第第n-1n-1个位置为止,整个排序操作结束。个位置为止,整个排序操作结束。 2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作 算法描述 2021-11-4电气与信息

18、工程学院计算机系制作电气与信息工程学院计算机系制作#include #define NUM 10 /* 参与排序的数据个数参与排序的数据个数 */int main() int dataNUM; /* 存放参与排序的所有整数存放参与排序的所有整数 */ int i, j, minIndex, temp; /* 通过键盘输入待排序的整型数列通过键盘输入待排序的整型数列 */ printf(nEnter %d integers., NUM); for (i=0; iNUM; i+) scanf(%d, &datai); /* 显示原始整型数列显示原始整型数列 */ printf(n%d integers are:, NUM); for (i=0; iNUM; i+) printf(%5d, datai); lesson10_01.c2021-11-4电气与信息工程学院计算机系制作电气与信息工程学院计算机系制作 for (i=0; iNUM-1; i+) minIndex = i; for (j=i+1; jNUM; j+) if (datajdataminIndex)/* 交换交换 * temp = dataj; dataj = dataminIndex; dataminIndex = temp; /* 输出排序后的结果输出排序后的结果 */ prin

温馨提示

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

评论

0/150

提交评论