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

下载本文档

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

文档简介

1、Lesson 10 数据的组织结构,学习目标:,1,掌握二维数组的使用,数学概念矩阵:,80 70 99 97 83 92 65 91 85 88 76,例:,日常生活例子表格:,特点: 按行、列分布,并且每个数据需要由两个位置确定: 一个行位置,一个列位置 C语言中实现方法: 二维数组,在C语言中如何实现?,类型 数组名 行长度列长度,int array 34,例:float d 35; int a66; char s410;,所有元素都是int,数组名,3行4列 注意:必须是常量,二维数组的引用,7,第1行,第2列,数组a,a1,2,数组名行下标列下标,二维数组初始化: 在定义二维数组时,

2、给元素赋初值,形式1: int a23=1,2,3,4,5,6;,形式2: int a23=1,2,3,4,5,6;,形式3: int a 3=1,2,3,4,5,6;,形式4: int a2=1,2,3,4,5,6;,错误!,二维数组元素的引用及基本操作 数组的赋值 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) valueij = i+j; 数组的输入 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) scanf(“%d”, ,#define ROWS 4 #define COLS 5 int value ROWSCOL

3、S;,二维数组元素的引用及基本操作 3. 数组的输出 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) printf(“%4d”, valueij); putchar(n); ,#define ROWS 4 #define COLS 5 int value ROWSCOLS;,例题:从键盘输入如下的矩阵 1 2 4 5 3 4 5 7 5 7 9 8 然后输出该矩阵,lessson11_01.c,#include int main(),int a34,i,j;,for(i=0;i3;i+) for(j=0;j4;j+) ,scanf(%d,for(i=0;i3

4、;i+) for(j=0;j4;j+) ,printf(%4d,aij);,printf(n);,return 0; ,例6: 判断给定方阵是否为对称矩阵。,问题分析 对于一个给定的NN矩阵array,如果矩阵中的每个元素都满足arrayij=arrayji,则称这个矩阵为对称矩阵。 在判断一个给定的矩阵是否为对称矩阵时,只需要用下三角部分的每个元素与对应的上三角元素进行比较。如果每一对元素都相等,这个矩阵就是对称矩阵,否则,就是非对称矩阵。,算法描述,#include #define NUM 5 矩阵行列数 int main( ) int mNUMNUM; /*定义二维数组变量*/ int

5、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, ,lesson11_06_1.c,/* 判断矩阵是否对称并输出相应的结果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=mji) printf(nThe matrix isnt symmetrical.); return 0; printf(nThe matrix is symmetr

6、ical.); return 0; ,改进: 从文件读入数组 使用标志变量判断,#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+) fscanf(fp,%d, ,lesson11_06_2.c,/* 判断矩阵是否对称并输出相应的结果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=m

7、ji) flag=0; break; if(flag=1) printf(n对称); else printf(n不对称); return 0; ,例7:,输入3个同学、4门课程的成绩,并按照如下格式输出 (成绩保存在score.txt文件中),80 70 99 97 83 92 65 91 85 88 76,#include #define STUS 3 #define LSN 4 int main( ) int mSTUSLSN; /*定义二维数组变量*/ int i, j; FILE * fp; fp=fopen(score.txt,r); for (i=0; iSTUS; i+) for

8、 (j=0; jLSN; j+) fscanf(fp,%d, ,lesson11_07.c,从键盘输入一个矩阵,将该矩阵转置后输出,分析: 定义一个2行4列的二维数组a,用于存放原始的矩阵 定义一个4行2列的二维数组b,用于存放转置后的矩阵 循环数组a的所有元素,将a中的每一个元素存放至b的对应位置:行列位置正好相反 输出二维数组b,输出如下图形,例:假设用户通过键盘输入一个整型数列。请编写一个程序,将其按照从小到大的顺序重新排列。即在从键盘输入如下的数据2 6 8 1 9 5 4输出1 2 4 5 6 8 9,问题分析 首先从n个数据中选择一个最小的数据,并将它交换到第1个位置;然后再从后面

9、n-1个数据中选择一个最小的数据,并将它交换到第2个位置;以此类推,直至最后从两个数据中选择一个最小的数据,并将它交换到第n-1个位置为止,整个排序操作结束。,算法描述,#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, ,lesson10_01.c,for (i=0; iNUM-1; i+) minIndex = i; for (j=i+1; jNUM; j+) if (datajdataminIndex)/* 交换 * temp = dataj; dataj = dataminIndex; dataminIndex = temp; /* 输出排序后的结果 */ printf(nOrdering list is:n); for (i=0; iNUM; i+

温馨提示

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

评论

0/150

提交评论