版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组《C语言程序设计案例式教程(第2版)》学习目标/Target了解数组的概念,能够说出数组的特点掌握一维数组的定义与初始化,能够定义一维数组并完成初始化掌握一维数组元素的引用,能够通过索引访问一维数组元素学习目标/Target掌握冒泡排序算法,能够使用冒泡排序完成数组的排序熟悉选择排序算法,能够使用选择排序完成数组的排序了解插入排序算法,能够说出插入排序算法的实现机制学习目标/Target掌握二维数组定义与初始化,能够定义二维数组并完成初始化掌握二维数组元素的引用,能够通过索引访问二维数组元素了解二维数组的内存结构,能够说出二维数组在内存中的存储特点章节概述/Summary前面章节中学习的都是基本数据类型,使用基本数据类型只能处理单个零散的变量,如果要批量处理数据,使用基本数据类型的变量操作比较复杂。为了批量处理数据,C语言提供了数组类型,本章将详细讲解数组相关知识。目录/Contents案例5-1士兵报数案例5-2最大值与最小值案例5-3学生成绩排序案例5-4纵横图目录/Contents案例5-5杨辉三角案例5-6矩阵转置案例5-7斐波那契数列士兵报数案例5-1【案例5-1】士兵报数(1)了解数组的概念,能够说出数组的特点(2)掌握一维数组的定义与初始化,能够定义一维数组并完成初始化(3)掌握一维数组元素的引用,能够通过索引访问一维数组元素学习目标案例描述假如一队百人士兵,他们对应的编号为1~100,请编写一个程序,实现如下功能。(1)存储100个士兵的编号。(2)在控制台输出这100个士兵的编号,每10个一行,共输出10行。知识需求使用int类型变量存储100个士兵的编号定义100个变量对这100个数据批量存储、管理定义一个数组知识讲解1.数组的概念数组是一种存储相同数据类型的数据集合,数组的每个成员被称为数组的元素。数组中的元素都有一个索引标示位置,索引从0开始。如果把数组看作是一个用小格子盛放数据的容器,那么,存放数据的小格子编号,可以看做是数组的索引。知识讲解1.数组的概念例如,定义一个大小为100的数组salary,用于存储100个员工的薪水,数组示例如下所示。数组中[](方括号)的个数称为数组的维数,根据维数的不同,可将数组分为一维数组、二维数组、三维数组等,通常情况下,将二维及以上的数组称为多维数组。知识讲解2.一维数组的定义与初始化一维数组也称向量,指的是只有一个下标的数组,它用以组织具有一维顺序关系的一组同类型数据。类型说明符
数组名[常量表达式];数组中存储的元素的类型数组的长度知识讲解2.一维数组的定义与初始化一维数组定义示例:intarray[5];
int:数组类型,表明该数组存储的元素为int类型。array:数组名。5:数组长度,表明该数组最多可存储5个元素。编译器为数组array分配的内存空间为5*sizeof(int)=20字节。知识讲解2.一维数组的定义与初始化一维数组的初始化主要有3种方式。01直接对数组中的所有元素赋初值。intarray[5]={1,2,3,4,5};02只对数组中的一部分元素赋值。intarray[5]={1,2,3};只能前3个元素赋值,后面的元素默认被赋值为0知识讲解2.一维数组的定义与初始化一维数组的初始化主要有3种方式。03对数组全部元素赋值,但不指定长度。intarray[]={1,2,3,4}; //数组长度为4数组的下标是用方括号括起来的,而不是圆括号。数据类型不仅可以使int、float、char等基本类型,也可以是后续章节将要介绍的指针、结构体等任意类型。数组名的命名同变量名的命名规则相同。知识讲解3.一维数组元素的引用数组中的元素都是有编号的,这个编号称为数组元素的索引,用于表示元素在数组中的位置。数组元素的索引从0开始,依次递增,直到标记最后一个元素。如果数组中有n个元素,则最后一个元素的索引是n-1。通过索引可以访问数组中的元素。数组名[索引];数组元素访问示例:array[2]=100;知识讲解3.一维数组元素的引用注意:数组的索引都有一个范围,为“0~数组长度-1”。假设数组array的长度为6,则其下标范围为0~5。当访问数组中的元素时,下标不能超出这个范围,否则程序会报错。案例实现1.案例设计01020304定义一个大小为100的int类型数组。在输出元素时可以10个元素一行输出,使用“索引+1”对10取余确定是满一行。使用循环语句将编号存储到数组中,赋值时使用索引访问数组元素。使用循环语句遍历数组输出数组元素。对案例进行分析,案例设计步骤如下。案例实现2.完整代码本案例中可以实现的效果图如下。intmain(){请参考案例5-1完整代码}代码实现最大值与最小值案例5-2【案例5-2】最大值与最小值巩固前面所学知识,能够利用前面所学知识实现案例5-2。学习目标案例描述最值是数组中的经典问题,计算一个数组中的最值是每一个程序员都应该掌握的知识。本案例要求从键盘输入10个int类型的数据,并求出这些元素中的最大值与最小值。案例实现1.案例设计(1)定义一个大小为10的int类型数组,在for循环中调用scanf()函数从键盘输入数组元素。(2)在求最值时,以最大值为例,假设第1个元素为最大值,使用变量max记录这个最大值,将后面的元素依次与max比较,如果有元素比max大,就将该元素赋值给max,待比较结束,则max记录的就是元素中的最大值。案例实现2.完整代码本案例中可以实现的效果图如下。intmain(){请参考案例5-2完整代码}代码实现学生成绩排序案例5-3【案例5-3】学生成绩排序(1)掌握冒泡排序算法,能够使用冒泡排序完成数组的排序。(2)熟悉选择排序算法,能够使用选择排序完成数组的排序。(3)了解插入排序算法,能够说出插入排序算法的实现机制。学习目标案例描述本案例要求编写一个程序帮助老师统计学生成绩并将成绩从大到小排序,具体要求如下。(1)假设班级有20名学生,从键盘输入这20名学生成绩。(2)从大到小将成绩排序。(3)将排序后的成绩输出到控制台,每行10名学生成绩。知识需求知识需求(1)名学生的成绩,需要使用数组存储。(2)对数组中的元素进行排序需要使用到排序算法。知识讲解1.冒泡排序冒泡排序原理:在冒泡排序的过程中,以升序排列为例,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。知识讲解1.冒泡排序冒泡排序的步骤如下所示。01从第1个元素开始,将相邻的两个元素依次进行比较,如果前一个元素比后一个元素大,则交换它们的位置,直到最后两个元素完成比较。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第1轮的比较。知识讲解1.冒泡排序冒泡排序的步骤如下所示。02除了最后一个元素,将剩余的元素继续进行两两比较,过程与第1步相似,这样就可以将数组中第2大的元素放在倒数第2个位置。03以此类推,对剩余元素重复以上步骤。知识讲解1.冒泡排序冒泡排序流程图如右图。开始将n个元素存入数组arr中定义变量i,循环遍历数组i=0;i<n-1arr[j]<arr[j+1]交换两个元素i++结束真假真假知识讲解1.冒泡排序假设有数组intarr[5]={9,8,3,5,2},使用冒泡排序将该数组升序排序,过程图如下。知识讲解1.冒泡排序数组arr的排序过程如下。1第1个元素9为最大值,因此它在每次比较时都会发生位置的交换,最终被放到最后1个位置。2比较与第1轮过程相似,元素8被放到倒数第2个位置。知识讲解1.冒泡排序34第1次比较没有发生位置的交换,在第2次比较时才发生位置交换,元素5被放到倒数第3个位置。仅需比较最后两个值3和2,由于3比2大,3与2交换位置。知识讲解1.冒泡排序排序会涉及到元素交换,交换元素会通过中间变量temp实现。(1)使用temp记录arr[j]。(2)将arr[j+1]赋给arr[j]。(3)再将temp赋给arr[j+1]。知识讲解1.冒泡排序元素交换过程图如下。知识讲解1.冒泡排序对数组intarr[5]={9,8,3,5,2},使用冒泡排序将该数组升序排序,核心代码如下。for(i=0;i<5-1;i++){ //外层循环控制比较的轮数 for(j=0;j<5-1-i;j++) //内层循环控制比较的次数 { if(arr[j]>arr[j+1]){ //如果前面的元素大于后面的元素 //就交换两个元素的位置 temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; }}}最后一个元素不需要比较从上一个元素开始两两比较知识讲解2.选择排序选择排序的原理与冒泡排序不同,它是指通过每一趟排序过程,从待排序记录中选择出最大(小)的元素,将其依次放在数组的最前或最后端,最终实现数组的排序。知识讲解2.选择排序第1步第2步第3步在数组中选择出最小的元素,将它与0索引元素交换,即放在开头第1位。除0索引元素外,在剩下的待排序元素中选择出最小的元素,将它与1索引元素交换,即放在第2位。以此类推,直到完成最后两个元素的排序交换,就完成了升序排列。以升序排序为例,选择排序步骤如下所示。知识讲解2.选择排序选择排序流程图如右图。开始将n个元素存入数组arr中定义变量i,循环遍历数组i=0;i<n-1结束假假设arr[i]是最小值遍历剩下的n-i个元素找出最小值minmin<arr[i]交换两个元素i++真真假知识讲解2.选择排序以数组intarr[5]={9,8,3,5,2}为例,使用选择排序对其进行升序排序,过程图如下。知识讲解2.选择排序数组intarr[5]={9,8,3,5,2}的选择排序共经过4轮。1234循环找出最小值2,将它与第一个元素9进行交换。循环找出剩下的4个元素中的最小值3,将它与第二个元素8交换。循环找出剩下的3个元素中的最小值5,将它与第三个元素8交换。对最后两个元素进行比较,比较后发现不需要交换,则排序完成。知识讲解2.选择排序对数组intarr[5]={9,8,3,5,2},使用选择排序将该数组升序排序,核心代码如下。for(i=0;i<5-1;i++){ //外层循环控制比较的轮数 min=i; //暂定i索引处的元素是最小的,用min记录其索引 for(j=i+1;j<5;j++){ //内层循环在剩下的元素中找出最小的元素 if(arr[j]<arr[min]) min=j; } if(min!=i){ //交换两个元素的位置 temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; }}知识讲解3.插入排序插入排序就是每一步将一个待排序元素插入到已经排序元素序列中的适当位置,直到全部插入完毕。插入排序针对的是有序序列,对于杂乱无序的数组来说,首先要构建一个有序序列,将未排序的元素插入到有序序列的特定位置,构成一个新的有序序列,再次将未排序的元素插入到有序序列的特定位置…以此类推,直到所有元素都插入到有序的序列中,排序就完成了。知识讲解3.插入排序第1步第2步第3步第4步从第1个元素开始,将其视为已排序的元素。知识讲解3.插入排序第2步第1步第3步第4步从第1个元素开始,将其视为已排序的元素。取下一个元素(待排序元素),与左边已排序的元素相比较,如果已排序元素大于待排序元素,则将已排序元素向后移动,将待排序元素插入到已排序元素的前面。知识讲解3.插入排序第3步第1步第2步第4步从第1个元素开始,将其视为已排序的元素。如果已有多个元素有序,则将待排序元素自右向左逐个与有序元素进行比较,直到有序元素小于待排序元素,然后将有序元素向后移动,将待排序元素插入到小于它的元素后面。取下一个元素(待排序元素),与左边已排序的元素相比较,如果已排序元素大于待排序元素,则将已排序元素向后移动,将待排序元素插入到已排序元素的前面。知识讲解3.插入排序第4步第1步第2步第3步从第1个元素开始,将其视为已排序的元素。如果已有多个元素有序,则将待排序元素自右向左逐个与有序元素进行比较,直到有序元素小于待排序元素,然后将有序元素向后移动,将待排序元素插入到小于它的元素后面。取下一个元素(待排序元素),与左边已排序的元素相比较,如果已排序元素大于待排序元素,则将已排序元素向后移动,将待排序元素插入到已排序元素的前面。再取下一个待排序元素,重复上述步骤,直到所有元素都排序完毕。知识讲解3.插入排序摸到第1张牌时,将其看作一个有序序列。摸到第2张牌时,如果它比第1张牌大就将其插入到第1张牌后面,否则插入到第1张牌前面。摸到第3张牌,就扫描前两张牌,选择适当的位置插入…。以此类推,直到摸牌完毕,手里的牌就是一个有序序列。插入排序类似于打牌时摸牌过程。知识讲解3.插入排序插入排序流程图如右图。开始将n个元素存入数组arr中定义变量i,j,循环遍历数组i=0;i<n结束假定义变量temp,temp=arr[i]j=ij>0&&arr[j-1]>temparr[j]=arr[j-1];j--;arr[j]=temp;真真假知识讲解3.插入排序仍旧以数组{9,8,3,5,2}为例,使用插入排序将其升序排列,过程图如下。以第1个元素9为基准,8与9比较,8插入到9前面知识讲解3.插入排序仍旧以数组{9,8,3,5,2}为例,使用插入排序将其升序排列,过程图如下。3依次与9、8比较,3插入到8前面知识讲解3.插入排序仍旧以数组{9,8,3,5,2}为例,使用插入排序将其升序排列,过程图如下。5依次与9、8、3比较,5插入到8前面知识讲解3.插入排序仍旧以数组{9,8,3,5,2}为例,使用插入排序将其升序排列,过程图如下。2依次与9、8、5、3比较,2插入到3前面知识讲解3.插入排序当有元素向后移动时,只是有序元素向后移动,要插入的元素一直保存在临时变量中。例如,3依次与9、8比较过程中,比较完后,8、9序列向后移动,3一直保存在临时变量中。知识讲解3.插入排序有序序列向后移动过程如下图。交换过程中,3一直保存在temp变量中。知识讲解3.插入排序对数组arr进行插入排序,按照升序排序,核心代码如下。for(i=1;i<5;i++){ //i从1开始,假设0角标上的元素是有序的 temp=arr[i]; //用temp记录i位置上的元素 j=i; //j记录i角标 //如果有序元素大于i元素,就将有序元素下移 while(j>0&&arr[j-1]>temp){ arr[j]=arr[j-1];//有序元素下移 j--; //j自减,但要保证j>0,判断左边是否有多个有序元素 } arr[j]=temp; //将i元素插入到适当位置j}案例实现1.案例实现使用冒泡排序实现本案例。01020304调用scanf()函数从键盘输入20名学生成绩。定义一个大小为20的double数组。调用printf()函数将数组元素输出到控制台。使用冒泡排序对数组进行排序。案例实现2.完整代码本案例中可以实现的效果图如下。intmain(){请参考案例5-3完整代码}代码实现纵横图案例5-4【案例5-4】纵横图(1)掌握二维数组定义与初始化,能够定义二维数组并完成初始化。(2)掌握二维数组元素的引用,能够通过索引访问二维数组元素。(3)了解二维数组的内存结构,能够说出二维数组在内存中的存储特点。学习目标案例描述纵横图是指一个由若干个排列整齐的数字组成的正方形图,图中任意纵行、任意横行及对角线的几个数字之和都相等。本案例要求编写一个案例,计算出一个5阶纵横图,即将1~25这些数字,以横向5行,纵向5列进行排列,使每一行每一列以及两条对角线上的数字之和都相等。知识需求纵横图本质上是一堆数据的集合,批量处理数据,可以使用数组。但是纵横图是按行列进行排列的,处理数据时按行列处理,一维数组显然无法做到按行列处理数据。可以使用二维数组。知识讲解1.二维数组的定义与初始化二维数组是指维数为2的数组,即数组有两个索引。数据类型数组名[常量表达式1][常量表达式2];行的长度,称为行索引列的长度,称为列索引定义一个3行4列的二维数组,具体示例如下:intarr[3][4];知识讲解1.二维数组的定义与初始化共包含3*4个元素,即12个元素定义一个3行4列的二维数组,具体示例如下:intarr[3][4];知识讲解1.二维数组的定义与初始化第一行,行索引arr[0]第二行,行索引arr[1]第三行,行索引arr[2]列索引0列索引1列索引2列索引3知识讲解1.二维数组的定义与初始化按行给二维数组赋初值按行给二维数组赋初值,每一行的元素使用一对{}括起来。01intarr1[2][3]={{1,2,3},{4,5,6}};第一行元素第二行元素知识讲解1.二维数组的定义与初始化将所有的数组元素按顺序写在1个大括号内将数组所有元素按顺序写在一个大括号中,这种方式初始化类似于一维数组,将所有元素写在一对{}内,编译器会根据行列索引的大小自动划分行和列。02intarr2[2][3]={1,2,3,4,5,6};知识讲解1.二维数组的定义与初始化对部分数组元素赋初值二维数组可以只对一部分元素赋初值,使用{}指定行列元素。03intarr3[3][4]={{1},{4,3},{2,1,2}};对于没有赋值的元素,系统会自动赋值为0。知识讲解1.二维数组的定义与初始化对部分数组元素赋初值如果没有使用{}指定行列元素,编译器会优先将数据分配给前面的行。03intarr4[3][4]={1,4,3,2,1,2};数据优先分配了前面的行,补的0全部在后面。知识讲解1.二维数组的定义与初始化省略行索引的初始化如果对二维数组全部数组元素初始化,则二维数组的行索引可省略,但列索引不能省略。系统会根据列数自动将元素划分为相应的行。04intarr5[2][3]={1,2,3,4,5,6};或intarr5[][3]={1,2,3,4,5,6};知识讲解2.二维数组元素访问二维数组元素访问类似一维数组元素访问,主要也是访问指定元素、遍历二维数组。(1)访问指定元素二维数组元素的访问也是通过数组名和索引的方式来访问数组元素。数组名[行][列];(2)遍历二维数组二维数组元素的的遍历要使用双层循环语句,外层循环遍历行,内层循环遍历列。知识讲解2.二维数组元素访问二维数组元素的访问示例。intarr[3][4]={12,3,4,13,45,0,100,98,72,660,2,88};a[0][0]//读取第1行第1列的元素12a[0][1]//读取第1行第2列的元素3...a[1][0]//读取第2行第1列的元素45...a[2][0]//读取第3行第1列的元素72知识讲解3.二维数组内存分析二维数组的逻辑结构是按行列排列的,但实际上二维数组在内存中还是占据一块连续的内存空间,其排列也是线性的,只是编译器在解读二维数组时会按照指定的行列去解读二维数组。知识讲解3.二维数组内存分析定义一个2行3列的二维数组。intarr[2][3]={{1,2,3},{4,5,6}};(1)数组arr可以看成一个二维数组,该二维数组包含两行数据。(2)数组arr可以看成一个一维数组,该一维数组包含两个元素,每个元素是一个一维数组。知识讲解3.二维数组内存分析数组arr的逻辑结构图与内存图解如下图。二维数组按行列解读数组元素。二维数组可以看作是元素为一维数组的一维数组。在内存中,二维数组还是占用了一段连续的内存空间。知识讲解3.二维数组内存分析数组arr的逻辑结构图与内存图解如下图。(1)二维数组名是数组的起始地址,同时也是第1行元素的首地址和第1个元素的地址。(2)二维数组名是一个二级指针,对二维数组名执行取值运算,其结果还是一个地址,这个地址与数组起始地址相同。(3)对数组名执行两次取值操作才可以取到第1个元素。地址相同知识讲解3.二维数组内存分析数组arr的起始地址、首元素地址、首元素等获取示例代码。printf("arr:%p\n",arr); //数组起始地址printf("*arr:%p\n",*arr); //数组起始地址printf("**arr:%d\n",**arr); //执行两次取值运算,取到数组首元素printf("arr[0]:%p\n",arr[0]); //数组起始地址printf("arr[0][0]:%d\n",arr[0][0]); //数组首元素printf("&arr[0][0]:%p\n",&arr[0][0]); //数组起始地址知识讲解3.二维数组内存分析将二维数组arr看作是元素是arr[0]、arr[1]的一维数组,数组名arr与各数组元素之间的关系如下。arr是该一维数组的数组名,代表该一维数组的首元素地址,即第一个元素arr[0]的地址。表达式arr+1表示第2个元素的地址,即arr[1]的地址。知识讲解3.二维数组内存分析将arr[0]、arr[1]分别看成一维数组。以数组arr[0]为例,它与各数组元素之间的关系如下。arr[0]是一维数组的数组名,即一维数组的首元素地址,也是第一个元素arr[0][0]的地址。表达式arr[0]+1代表下一个元素arr[0][1]的地址。表达式arr[0]+2代表arr[0][2]的地址。知识讲解3.二维数组内存分析数组arr的行地址与列地址之间的关系如下图。知识讲解3.二维数组内存分析根据上面的分析,可以推导出以下3点结论。arr[i](即*(arr+i))可以看成是一维数组arr的索引为i的元素,同时又可以看成是由arr[i][0]、arr[i][1]、arr[i][2]等元素组成的一维数组的数组名,代表这个一维数组的首元素地址,即第一个元素arr[i][0]的地址。01知识讲解3.二维数组内存分析根据上面的分析,可以推导出以下3点结论。arr[i]+j(即*(arr+i)+j)代表这个数组中索引为j的元素的地址,即arr[i][j]的地址。02*(arr[i]+j)即*(*(arr+i)+j)就代表这个地址所指向的元素的值,即数组索引为j的元素arr[i][j]的值。03知识讲解3.二维数组内存分析arr[i][j]*(arr[i]+j)*(*(arr+i)+j)(*(arr+i))[j]*(*(arr+i)[j])获取第一个元素示例代码。这5种方式都可以获取二维数组arr的第一个元素。知识讲解3.二维数组内存分析arr //第1行的地址arr+i //第(i+1)行的地址*(arr+i) //即arr[i],第(i+1)行第1列的地址*(arr+i)+j //即&arr[i][j],数组arr[i]的第(j+1)列的地址*(*(arr+i)+j) //即arr[i][j],数组arr[i]的第(j+1)列的元素表达式*(*(arr+i)+j)的推导过程。知识讲解3.二维数组内存分析列步长数组步长行步长列步长是同一行中两个元素的地址间距,相邻元素间的地址间距就是元素所占的内存大小。行步长是相邻两行的元素的地址间距。数组行步长是数据类型大小与该行元素个数的乘积。案例实现1.案例设计5阶纵横图是一个奇数纵横图,对于奇数纵横图,最经典的填法为罗伯特法。1234把1(或最小的数)放在第一行正中,按照下面的规律排列剩下的数字。下一个数字放在前一个数的右上一格。如果该数字要放的位置超出了顶行,则把它放在底行的右一列。如果该数字所要放的位置超出了最右列,则把它放在最左列,仍然是上一行。案例实现1.案例设计5阶纵横图是一个奇数纵横图,对于奇数纵横图,最经典的填法为罗伯特法。56如果该数字要放的格超出了顶行且超出了最右列,则把它放在前一个数字的下一行同一列的位置。如果该数字要放的位置已经有数字填入,处理方法同(4)。案例实现2.完整代码本案例中可以实现的效果图如下。intmain(){
请参考案例5-4完整代码}代码实现杨辉三角案例5-5【案例5-5】杨辉三角巩固前面所学知识,能够利用前面所学知识实现案例5-5。学习目标案例描述杨辉三角是一个特殊的数阵,它的前10行如下。11112113311464115101051161520156117213535217118285670562881193684126126843691案例描述本案例要求查找杨辉三角规律,编写一个程序,可以打印出10行以内的任意行的杨辉三角。案例实现对杨辉三角进行分析,得出以下规律。1.案例设计第n行的数字有n项。每行的端点数为1,最后一个数也为1。每个数等于它左上方和上方的两数之和。每行数字左右对称,由1开始逐渐变大。结论:可以将杨辉三角看作一个二维数组arr[i][j],这个二维数组的第一个元素为1,数组中的元素arr[i][j]可以表示为arr[i-1][j-1]+arr[i-1][j]。案例实现1.案例设计(1)使用双层循环操作数组元素。(2)外层循环的条件是i<n,控制有多少行。(3)内层循环的条件是j<=i,控制每一行的列数为i。程序设计案例实现2.完整代码本案例中可以实现的效果图如下。intmain(){
请参考案例5-5完整代码}代码实现矩阵转置案例5-6【案例5-5】杨辉三角巩固前面所学知识,能够利用前面所学知识实现案例5-6。学习目标案例描述知识拓展矩阵是数学中的一个概念。假设A为m*n阶矩阵(即m行n列),第i行第j列的元素是a(i,j)。定义A的转置为这样一个n*m阶矩阵B,满足b(i,j)=a(j,i),即B的第i行第j列元素是A的第j行第i列元素,记作AT=B,即矩阵B为矩阵A的转置。案例描述知识拓展案例描述本案例要求编写一个程序,实现4*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市夜间经济区交通信号适应性调整
- 上海酒店小时工外包合同
- 家电控制板设计外包合同
- 企业生产劳务外包合同
- 服装打包质检外包合同
- 软件运营服务外包合同
- 怎样续签业务外包合同
- 佛山门窗厂生产外包合同
- 汽车4s洗车外包合同
- 护理团队建设与成长
- 2024年全国新高考1卷(新课标Ⅰ)数学试卷(含答案详解)
- 历年甘肃省三支一扶考试真题题库(含答案详解)
- 六年级语文下册期中复习 课件
- 病理性骨折的护理
- 护士在疼痛管理和控制中的角色和责任
- 防汛知识培训内容
- 《归园田居(其一)》优秀课件
- 【心灵读物】人生海海,劈浪前行-读麦家《人生海海》有感
- 预防医学毕业实习 教学大纲
- GB/Z 40893.4-2021中医技术操作规范儿科第4部分:小儿推拿疗法
- GB/T 23722-2009起重机司机(操作员)、吊装工、指挥人员和评审员的资格要求
评论
0/150
提交评论