lesson10数据的组织结构一二维数组与排序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2019/9/9电气与信息工程学院计算机系制作Lesson10数据的组织结构2019/9/9电气与信息工程学院计算机系制作学习目标:31掌握二维数组的使用2019/9/9电气与信息工程学院计算机系制作3二维数组3数学概念矩阵:908070999783926591858876例:2019/9/9电气与信息工程学院计算机系制作3二维数组3日常生活例子表格:123456789101112131415162019/9/9电气与信息工程学院计算机系制作3二维数组3特点:按行、列分布,并且每个数据需要由两个位置确定:一个行位置,一个列位置C语言中实现方法:二维数组2019/9/9电气与信息工程学院计算机系制作3二维数组3在C语言中如何实现?类型数组名[行长度][列长度]intarray[3][4]例:floatd[3][5];inta[6][6];chars[4][10];所有元素都是int数组名3行4列注意:必须是常量array2019/9/9电气与信息工程学院计算机系制作3二维数组3二维数组的引用1234567891011127第1行第2列数组aa[1][2]数组名[行下标][列下标]2019/9/9电气与信息工程学院计算机系制作3二维数组3二维数组初始化:在定义二维数组时,给元素赋初值形式1:inta[2][3]={1,2,3,4,5,6};形式2:inta[2][3]={{1,2,3},{4,5,6}};形式3:inta[][3]={1,2,3,4,5,6};形式4:inta[2][]={1,2,3,4,5,6};×错误!2019/9/9电气与信息工程学院计算机系制作3二维数组操作4二维数组元素的引用及基本操作1.数组的赋值for(i=0;iROWS;i++)for(j=0;jCOLS;j++)value[i][j]=i+j;2.数组的输入for(i=0;iROWS;i++)for(j=0;jCOLS;j++)scanf(“%d”,&value[i][j]);#defineROWS4#defineCOLS5intvalue[ROWS][COLS];2019/9/9电气与信息工程学院计算机系制作3二维数组操作4二维数组元素的引用及基本操作3.数组的输出for(i=0;iROWS;i++){for(j=0;jCOLS;j++)printf(“%4d”,value[i][j]);putchar(‘\n’);}#defineROWS4#defineCOLS5intvalue[ROWS][COLS];2019/9/9电气与信息工程学院计算机系制作3二维数组操作4例题:从键盘输入如下的矩阵124534575798然后输出该矩阵2019/9/9电气与信息工程学院计算机系制作lessson11_01.c#includestdio.hintmain(){inta[3][4],i,j;for(i=0;i3;i++){for(j=0;j4;j++){}}scanf(%d,&a[i][j]);for(i=0;i3;i++){for(j=0;j4;j++){}}printf(%4d,a[i][j]);printf(\n);return0;}2019/9/9电气与信息工程学院计算机系制作3二维数组应用5例6:判断给定方阵是否为对称矩阵。1102188210413992521136143688991471232253612332019/9/9电气与信息工程学院计算机系制作3二维数组应用5问题分析对于一个给定的NN矩阵array,如果矩阵中的每个元素都满足array[i][j]=array[j][i],则称这个矩阵为对称矩阵。在判断一个给定的矩阵是否为对称矩阵时,只需要用下三角部分的每个元素与对应的上三角元素进行比较。如果每一对元素都相等,这个矩阵就是对称矩阵,否则,就是非对称矩阵。2019/9/9电气与信息工程学院计算机系制作算法描述开始结束显示矩阵输入矩阵m[i][j]!=m[j][i]输出非对称信息YN0iiNUM0jjij+1jYNi+1iY输出对称信息N2019/9/9电气与信息工程学院计算机系制作#includestdio.h#defineNUM5矩阵行列数intmain(){intm[NUM][NUM];/*定义二维数组变量*/inti,j;/*输入矩阵*/printf(\Enter%drows%dcolsdatasforthemaxtrix:\n,NUM,NUM);for(i=0;iNUM;i++)for(j=0;jNUM;j++)scanf(%d,&m[i][j]);/*显示矩阵*/for(i=0;iNUM;i++){for(j=0;jNUM;j++)printf(%4d,m[i][j]);printf(\n);}lesson11_06_1.c2019/9/9电气与信息工程学院计算机系制作/*判断矩阵是否对称并输出相应的结果*/for(i=0;iNUM;i++)for(j=0;ji;j++)if(m[i][j]!=m[j][i]){printf(\nThematrixisn'tsymmetrical.);return0;}printf(\nThematrixissymmetrical.);return0;}2019/9/9电气与信息工程学院计算机系制作3二维数组应用5改进:从文件读入数组使用标志变量判断2019/9/9电气与信息工程学院计算机系制作#includestdio.h#defineNUM5矩阵行列数intmain(){intm[NUM][NUM];/*定义二维数组变量*/inti,j;FILE*fp;/*输入矩阵*/fp=fopen(m.txt,r);for(i=0;iNUM;i++)for(j=0;jNUM;j++)fscanf(fp,%d,&m[i][j]);/*显示矩阵*/for(i=0;iNUM;i++){for(j=0;jNUM;j++)printf(%4d,m[i][j]);printf(\n);}lesson11_06_2.c2019/9/9电气与信息工程学院计算机系制作/*判断矩阵是否对称并输出相应的结果*/for(i=0;iNUM;i++)for(j=0;ji;j++)if(m[i][j]!=m[j][i]){flag=0;break;}if(flag==1)printf(\n对称);elseprintf(\n不对称);return0;}2019/9/9电气与信息工程学院计算机系制作3二维数组应用5例7:输入3个同学、4门课程的成绩,并按照如下格式输出(成绩保存在score.txt文件中)9080709997839265918588762019/9/9电气与信息工程学院计算机系制作#includestdio.h#defineSTUS3#defineLSN4intmain(){intm[STUS][LSN];/*定义二维数组变量*/inti,j;FILE*fp;fp=fopen(score.txt,r);for(i=0;iSTUS;i++)for(j=0;jLSN;j++)fscanf(fp,%d,&m[i][j]);/*显示矩阵*/for(i=0;iSTUS;i++){for(j=0;jLSN;j++)printf(%4d,m[i][j]);printf(\n);}lesson11_07.c2019/9/9电气与信息工程学院计算机系制作3二维数组应用5从键盘输入一个矩阵,将该矩阵转置后输出2019/9/9电气与信息工程学院计算机系制作分析:定义一个2行4列的二维数组a,用于存放原始的矩阵定义一个4行2列的二维数组b,用于存放转置后的矩阵循环数组a的所有元素,将a中的每一个元素存放至b的对应位置:行列位置正好相反输出二维数组b2019/9/9电气与信息工程学院计算机系制作3课堂练习6输出如下图形161116212712172238131823491419245101520252019/9/9电气与信息工程学院计算机系制作3排序7例:假设用户通过键盘输入一个整型数列。请编写一个程序,将其按照从小到大的顺序重新排列。即在从键盘输入如下的数据2681954输出12456892019/9/9电气与信息工程学院计算机系制作3排序7问题分析首先从n个数据中选择一个最小的数据,并将它交换到第1个位置;然后再从后面n-1个数据中选择一个最小的数据,并将它交换到第2个位置;以此类推,直至最后从两个数据中选择一个最小的数据,并将它交换到第n-1个位置为止,整个排序操作结束。2019/9/9电气与信息工程学院计算机系制作算法描述i=0inum-1minIndex=ijnumj=i+1data[j]data[minIndex]交换data[j]和data[minIndex]j=j+1i=i+1开始结束YNYNYN2019/9/9电气与信息工程学院计算机系制作#includestdio.h#defineNUM10/*参与排序的数据个数*/intmain(){intdata[NUM];/*存放参与排序的所有整数*/inti,j,minIndex,temp;/*通过键盘输入待排序的整型数列*/printf(\nEnter%dintegers.,NUM);for(i=0;iNUM;i++){scanf(%d,&data[i]);}/*显示原始整型数列*/printf(\n%dintegersare:,NUM);for(i=0;iNUM;i++){printf(%5d,data[i]);}lesson10_01.c2019/9/9电气与信息工程学院计算机系制作for(i=0;iNUM-1;i++){minIndex=i;for(j=i+1;jNUM;j++){if(data[j]data[minIndex]){/*交换*temp=data[j];data[j]=data[minIndex];data[minIndex]=temp;}}/*输出排序后的结果*/printf(\nOrderinglistis:\n);for(i=0;iNUM;i++){printf(%5d,data[i]);}return0;}2019/9/9电气与信息工程学院计算机系制作3课后练习8编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和。输入5×5阶的矩阵,编程实现:(1)求两条对角线上的各元素之和。(2)求两条对角线上行、列下标均为偶数的各元素之积。

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功