第四章-数----组--C语言ppt课件.ppt

上传人:飞****2 文档编号:69573886 上传时间:2023-01-07 格式:PPT 页数:46 大小:3.27MB
返回 下载 相关 举报
第四章-数----组--C语言ppt课件.ppt_第1页
第1页 / 共46页
第四章-数----组--C语言ppt课件.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《第四章-数----组--C语言ppt课件.ppt》由会员分享,可在线阅读,更多相关《第四章-数----组--C语言ppt课件.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology第四章第四章 数数 组组Chapter 4 Array第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组必须先说明后使用。说明的目的如下数组必须先说明后使用。说明的目的如下:说明数组的名字(标识)。说明数组的名字(标识)。说明数组的类型。说明数组的类型。说明数组的维数。说明数组的维数。确定各维下标的变化范围。确定各维下标的变化范围。编译系统将根据说明,开辟内存单元按特有的顺序和相应的类编译系统将根据说明,开辟内存单

2、元按特有的顺序和相应的类型为各元素分配内存单元。型为各元素分配内存单元。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.2 一维数组一维数组 一维数组的说明一维数组的说明说明方式:说明方式:type array1常量表达式常量表达式,arrayn常量表达式常量表达式;类型说明符,根据需要可加修饰说明。说明数组的类型。类型说明符,根据需要可加修饰说明。说明数组的类型。数组名,用标识符命名。数组名,用标识符命名。用用 包含的常量表达式。数组的下包含的常量表达式。数组的下标从标从0变化到常量达式的值减一。变化到常量达式的值减一。i

3、nt id5,iyear10;float fScore36;当说明数组后,编译时系统会根据定义的类型分配连续的一段当说明数组后,编译时系统会根据定义的类型分配连续的一段内存单元给数组的各元素。内存单元给数组的各元素。id0id1id2id3id4 系统为数组分配的连续内存单元,每个系统为数组分配的连续内存单元,每个单元占两个单元占两个BYTE。首地址用数组名首地址用数组名id表示。表示。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology一维数组的初始化一维数组的初始化 数组的元素可以在说明数组时初始化。数组的元素可以在说明数组时初

4、始化。int a10=1,2,3,4,5,6,7,8,9,10;/*/*说明数组,同时初始化全部元素。说明数组,同时初始化全部元素。*/float fValue10=1.0,2.0,3.0;/*说明数组,给部分元素初值,其余元素为说明数组,给部分元素初值,其余元素为0。*/unsigned a=0 x0000,0 x0001,0 x0002;/*当数组元素全部赋初值时,可以不指定长度当数组元素全部赋初值时,可以不指定长度*/第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组的引用数组的引用原原 则:则:只能引用数组元素,只能引

5、用数组元素,而不能引用整个数组。而不能引用整个数组。引用方式:数组名引用方式:数组名 整型表达式整型表达式 /*/*下标变量下标变量*/每个数组元素,可以出现在简单变量能够出现的任何地方。每个数组元素,可以出现在简单变量能够出现的任何地方。a1=12;s=a2+a1*20;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology举例举例求求10个学生一门课程的平均分,并输出低于平均成绩的分数。个学生一门课程的平均分,并输出低于平均成绩的分数。#include void main(void)float fScore10,aver=0;in

6、t i;for(i=0;i10;i+)scanf(“%f”,&fScorei);aver+=fScorei;aver/=10;for(i=0;i 10;i+)if(fScore i aver)printf(“num=%d,score=%f”,i+1,fScore i);说明数组。循环输入各元素的值并累加。循环输入各元素的值并累加。循环判断条件,满足条件输出。循环判断条件,满足条件输出。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.2 多多 维维 数数 组组 在实际应用中,经常会遇到一些用多维索引的数据。如:四个在实际应用中

7、,经常会遇到一些用多维索引的数据。如:四个学生三门课的成绩。可以用下表表示:学生三门课的成绩。可以用下表表示:92.580.591.099.083.590.070.066.060.078.056.059.0 显然,该表的每一项需要有两个索引项。表现为数组的两个下显然,该表的每一项需要有两个索引项。表现为数组的两个下标。超过一个下标的数组称为多维数组。标。超过一个下标的数组称为多维数组。行:代表某个学生。行:代表某个学生。列:代表某门课程。列:代表某门课程。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology多维数组的说明多维数组的说

8、明说明方式:说明方式:type array常量表达式常量表达式1常量表达式常量表达式n,;n个整型常量表达式个整型常量表达式数组元素的个数数组元素的个数?int a23,b452;多维数组在内存中的顺序多维数组在内存中的顺序int a33;二维结构:二维结构:a00 a01 a02a10 a11 a12a20 a21 a22 排列顺序:先行后列。排列顺序:先行后列。a00a01a02a10a11a12a20a21a22下下标标为为0的的行行 总原则:最后一个下标先变化,变化一个周总原则:最后一个下标先变化,变化一个周期后,倒数第二个开始变化,期后,倒数第二个开始变化,如此类推。如此类推。a为数

9、组在内为数组在内存中的首地址。存中的首地址。int b234;内存中的排列内存中的排列?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology多维数组赋初值多维数组赋初值数组可以在说明时初始化。数组可以在说明时初始化。全部赋初值全部赋初值int a23=1,2,3,4,5,6;下标为下标为0的一行的一行下标为下标为1的一行的一行int b23=1,2,3,4,5,6;按内存顺序赋初值。按内存顺序赋初值。部分赋初值部分赋初值int a23=1,2;0行的行的0列的元素赋初列的元素赋初值。值。0行其余值为行其余值为0。int a23=1,

10、2;对全体数组元素赋初值,第一维下标可以省略。对全体数组元素赋初值,第一维下标可以省略。int a 3=1,2,3,4,5,6;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组元素的引用数组元素的引用 数组定义后,具备数组定义后,具备简单变量的一切性质简单变量的一切性质,可以作为表达式的运,可以作为表达式的运算对象,也可以被赋值。引用时,算对象,也可以被赋值。引用时,只能引用数组元素只能引用数组元素,方式如下:,方式如下:arrayexp1expnint a1010,y,i=2;ai+26=20;y=ai+26*100/30

11、;a1011=34;对对4行行6列的元素赋值。列的元素赋值。参加表达式运算。参加表达式运算。C语言不作下标检查,语法正确,语言不作下标检查,语法正确,但使用危险,可能造成程序的错误!但使用危险,可能造成程序的错误!整型表达式。整型表达式。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology4.4 字字 符符 数数 组与字符串组与字符串 C语言没有字符串变量,可以定义字符数组,每个元素存放一语言没有字符串变量,可以定义字符数组,每个元素存放一个字符,从而达到存放字符串的目的。个字符,从而达到存放字符串的目的。字符数组的说明字符数组的说

12、明char charrayconst exp1const expn,;char a10,b212;字符数组的初始化字符数组的初始化一维数组赋初值一维数组赋初值char str16=h,e,l,l,o,0;char str2=”hello ”;用单个字符对每一个元素赋值。用单个字符对每一个元素赋值。用字符串对数组赋初值。用字符串对数组赋初值。可以指定长度,也可不指定长度。可以指定长度,也可不指定长度。系统会在字串的结尾加系统会在字串的结尾加0,表示字符串结束。,表示字符串结束。因此,说明数组因此,说明数组时,长度指定应至少比实际长度大时,长度指定应至少比实际长度大1,保证赋初值正确。,保证赋初值

13、正确。0存储结构:存储结构:hello0第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology二维数组赋初值二维数组赋初值二维数组的每一行可以存放一个字符串。二维数组的每一行可以存放一个字符串。char str36=”wang”,”zhang”,”liu”;wang0zhang0liu0 str数组在内存中数组在内存中的首地址。的首地址。存存储储结结构构第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符数组的输入输出字符数组的输入输出格式输入输出函数格式输入输出函数输

14、出:输出:for(i=0;iSTRLEN;i+)printf(“%c”,str i);/*通过循环输出各元素通过循环输出各元素*/printf(”%s”,str);/*用字符串形式输出用字符串形式输出*/输入:输入:scanf(”%s”,str);/*用字符串输入整个数组用字符串输入整个数组*/用用scanf函数输入时函数输入时space作为作为输入的分隔符输入的分隔符,因此输入带空格,因此输入带空格的字符串,会造成输入不全。的字符串,会造成输入不全。char a20;scanf(”%s”,a);输入:输入:China Anhui Hefei 结果结果a数组的内容是:数组的内容是:China0

15、为了解决这个问题,系统定义如下专用于字符数组的为了解决这个问题,系统定义如下专用于字符数组的i/o函数。函数。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technologygets()字符串输入函数字符串输入函数用法:用法:char str 80;gets(str);作用作用:读入一个以换行符为终结符的字符串到读入一个以换行符为终结符的字符串到str中,用中,用0代替换行符。代替换行符。数组名作为函数的参数。puts()字符串输出函数字符串输出函数用法:用法:char string=”China”;puts(string);数组名作为函数的参

16、数。作用:作用:输出以输出以NULL 即即0结尾的字符串结尾的字符串string,自动加上自动加上换行符换行符。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符输入输出举例#include void main(void)char str80;int i;gets(str);for(i=0;str i!=0;i+)if(stri=a&stri=z)stri-=32;puts(str);chp4ex0判断字符串结束。判断字符串结束。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Te

17、chnology常用的字符处理函数常用的字符处理函数 C语言定义了一系列的字符处理函数用于字符串的处理,该类语言定义了一系列的字符处理函数用于字符串的处理,该类函数的原型定义在函数的原型定义在string.h中。因此,在使用该类函数时,应在程中。因此,在使用该类函数时,应在程序的开始处,加序的开始处,加#include 字符串拷贝函数字符串拷贝函数strcpy(str1,str2)作用:将作用:将str2拷贝到拷贝到str1中。中。用法:用法:char str110,str2=”Computer”;strcpy(str1,str2);/*str1的内容是的内容是“Computer”*/strc

18、py(str2,”Program”);/*str2的内容是的内容是“Program”*/说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串连接函数字符串连接函数strcat(str1,str2)作用:将作用:将str2连接到连接到str1后(去掉后(去掉str1的的0)。)。用法:用法:char str115=“Anhui ”,str2=”Hefei”;strcat(s

19、tr1,str2);puts(str1);/*输出结果为输出结果为 Anhui Hefei */说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。测试字符串长度函数测试字符串长度函数strlen(str)作用:测试字符串的实际长度。函数运算得到整型值,该值是作用:测试字符串的实际长度。函数运算得到整型值,该值是字符串的长度!字符串的长度!int iLenStr;char str=“China”;iLenStr=strlen(str);printf(“%d”,iLenStr);结果?第四章

20、第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串的比较字符串的比较 strcmp(str1,str2)作用:作用:对对str1和和str2 进行逐位无符号字符(进行逐位无符号字符(ASCII码)比较,码)比较,直到对应位字符能够确定关系或到串尾为止。直到对应位字符能够确定关系或到串尾为止。返回整型比较结果返回整型比较结果。字符的数值关系也就是字符的字符的数值关系也就是字符的ASCII码值的数值关系。码值的数值关系。比较结果如下:比较结果如下:比较结果比较结果strcmp的值的值str1str2str20char str1=”ab

21、cd”;char str2=“abcd”;int iRe1,iRe2,iRe3;iRe1=strcmp(str1,”abdc”);iRe2=strcmp(str1,str2);iRe3=strcmp(”abcde”,str2);abcd abdccdc-d -1结果小于0。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technologystrlwr(str)将将str中的大写字母转换成小写字母。中的大写字母转换成小写字母。strupr(str)将将str中的小写字母转换成大写字母中的小写字母转换成大写字母#include#include voi

22、d main(void)char str1=c programming!123,str2=Computer;strlwr(str2);strupr(str1);puts(str1);puts(str2);C PROGRAMMING!123computer第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology举例:统计三行文字中大写字母、小写字母及数字的个数。举例:统计三行文字中大写字母、小写字母及数字的个数。#include#include void main(void)char str80;int i,j,iAnum=0,ianum

23、=0,i0num=0;for(i=0;i3;i+)gets(str);for(j=0;j=A&strj=a&strj=0&strj=9)i0num+;printf(“%6d,%6d,%6d”,iAnum,ianum,i0num);行行循循环环列列循循环环chp4ex2第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组的常用算法数组的常用算法 数组是同类型数据的集合。便于整体处理数据,数组操作的主数组是同类型数据的集合。便于整体处理数据,数组操作的主要算法有:要算法有:求极值;求极值;排序;排序;查找查找;第四章第四章 数数 组

24、组Chapter 4 ArrayHefei University of Technology求极值及其位置求极值及其位置算法演示算法演示 一维数组一维数组的极值的极值#include void main(void)int a10=1,6,-2,5,4,32,47,-66,13,14;int iMax,iPos,i;iPos=0;iMax=a0;for(i=1;iiMax)iMax=ai;iPos=i;printf(“Max=%5d Position=%5d”,iMax,iPos);假定最大值及其位置。假定最大值及其位置。循循环环比比较较 当前元素比最大值大,将其当前元素比最大值大,将其赋值为新

25、的最大值并记录其位置。赋值为新的最大值并记录其位置。chp4ex3第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology二维数组求极值二维数组求极值#include void main(void)float a34=1.0,3.0,5.2,7.4,4.6,5.5,4.2,1.2,10.5,0.23,1.3,0.5;int i,j,iRow=0,iCol=0;for(i=0;i3;i+)for(j=0;j4;j+)if(aijaiRowiCol)iRow=i;iCol=j;printf(”%f7.2,iRow%5d,iCol%5d”,a

26、iRowiCol,iRow,iCol);假定最小值的位置。假定最小值的位置。二二重重循循环环遍遍历历所所有有元元素素比较求最小值,记录其位置。比较求最小值,记录其位置。chp4ex4第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology 排排 序序排序的概念排序的概念 排序排序是将一组随机排放的数按下标顺序是将一组随机排放的数按下标顺序从大到小从大到小或或从小到大从小到大重重新排列。新排列。1,5,4,6,7,99,7,6,5,4,11,4,5,6,7,9降序降序升序升序冒泡排序算法冒泡排序算法 冒泡排序算法演示冒泡排序算法演示第四章

27、第四章 数数 组组Chapter 4 ArrayHefei University of Technology冒泡排序程序如下:冒泡排序程序如下:#include void main(void)int i,j,a10=4,3,5,1,10,12,2,6,7,9,iTemp;for(i=0;i9;i+)for(j=i+1;j10;j+)if(aiaj)iTemp=a i;a i=a j;a j=iTemp;for(i=0;i10;i+)printf(”%4d”,ai);外外层层循循环环i变变化化内内层层循循环环j变变化化比比较较交交换换chp4ex5第四章第四章 数数 组组Chapter 4 Ar

28、rayHefei University of Technology思考题思考题 升序的条件如何构造?升序的条件如何构造?联合排序问题联合排序问题 已知一个班有已知一个班有36个同学,个同学,a数组存放一门课的成绩,数组存放一门课的成绩,m数组存放数组存放其学号。要求将成绩从大到小排序。其学号。要求将成绩从大到小排序。提示:提示:应考虑的问题是当应考虑的问题是当a数组元素比较交换时,数组元素比较交换时,m数组如何处数组如何处理?理?a 5 89.5 m 5 1005a 7 90.0 m 7 1007被动排序方。第四章第四章 数数 组组Chapter 4 ArrayHefei University

29、 of Technology选择排序选择排序 冒泡排序冒泡排序在内层循环的比较中,满足条件的每次都需要交换。在内层循环的比较中,满足条件的每次都需要交换。其中一些交换是无效的,交换算法会占用系统时间,从而降低算法其中一些交换是无效的,交换算法会占用系统时间,从而降低算法效率。效率。选择排序算法的基本思路,每轮排序将选择排序算法的基本思路,每轮排序将a i 假定为极值,每次假定为极值,每次在在a i 到到 aMAX中中找出个极值,记录其位置,最后让极值位置的找出个极值,记录其位置,最后让极值位置的元素与元素与a i 交换。交换。选择排序保证每轮排序只有一次交换,且为有效的交换!选择排序保证每轮排

30、序只有一次交换,且为有效的交换!选择排序算法演示选择排序算法演示第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology选择排序程序选择排序程序#include void main(void)int i,j,iMax,a10=4,3,5,1,10,12,2,6,7,9,iTemp;for(i=0;i9;i+)iMax=i;for(j=i+1;j10;j+)if(aiMaxaj)iMax=j;if(iMax!=i)iTemp=ai;ai=aiMax;aiMax=iTemp;for(i=0;i10;i+)printf(”%4d”,ai);排

31、排序序循循环环假定最大值位置。假定最大值位置。循环比较找出最大值的位置。循环比较找出最大值的位置。与本次比较的第一个元素交换。与本次比较的第一个元素交换。chp4ex6升序如升序如何构造何构造?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology 查查 找找查找是在一组数中,寻找一个特定的数,并显示结果。查找是在一组数中,寻找一个特定的数,并显示结果。顺序查找顺序查找 顺序查找算法:顺序查找算法:构造循环,使循环的变量遍历数组每个元素的构造循环,使循环的变量遍历数组每个元素的下标。循环的过程中让特定的数和每个元素比较,相等则表示找到

32、下标。循环的过程中让特定的数和每个元素比较,相等则表示找到该数,并输出其下标(位置)。该数,并输出其下标(位置)。程序设计中标志的设置和应用:程序设计中标志的设置和应用:在程序设计中,经常要记录一些状态,作为判断的条件。因此在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。需要在程序中设置一些标志,通常标志是整型变量。如查找问题,可以先设置一个整型变量如查找问题,可以先设置一个整型变量iFlag=0表示没有找到,表示没有找到,在查找的过程中一旦找到后,将在查找的过程中一旦找到后,将iFlag赋值为赋值为1,结束查找后,可以结束查找后,可以由由i

33、Flag值所代表的逻辑状态,确定是否已找到特定的数。值所代表的逻辑状态,确定是否已找到特定的数。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology标志设置框图标志设置框图int iFlag;iFlag=0;是否找到?iFlag=1;yesno第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology顺序查找程序顺序查找程序#include void main(void)int i,j,iFlag,a10=4,3,5,1,10,12,2,6,7,9;iFlag=0;scanf(

34、“%d”,&j);for(i=0;i10;i+)if(j=ai)iFlag=1;printf(“The position is%dn”,i);if(iFlag=1)printf(“Found!%d”,j);else printf(“Not found!);设置标志为没找到。设置标志为没找到。循循环环遍遍历历所所有有元元素素比较设置标志输出位置。比较设置标志输出位置。chp4ex7第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology折半查找折半查找适用于在有序数组中查找适用于在有序数组中查找 在一个有序的一维数组中查找某一个数。已知某

35、数组按升序排在一个有序的一维数组中查找某一个数。已知某数组按升序排列,给定一个数,找出该数在数组中的位置。列,给定一个数,找出该数在数组中的位置。可以通过将区间折半,快速缩小查找区间,提高效率!可以通过将区间折半,快速缩小查找区间,提高效率!折半查找算法演示折半查找算法演示第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology折折半半查查找找程程序序#include void main(void)int iTop,iBot,iMid,iS,iFlag,a10=1,2,3,5,6,8,9,10,11,12;iFlag=0;iTop=0;

36、iBot=9;scanf(“%d”,&iS);do iMid=(iTop+iBot)/2;if(iS=aiMid)iFlag=1;printf(“iS has be found:a%d”,iMid);else if(iSaiMid)iBot=iMid-1;else iTop=iMid+1;while(iTop=iBot&iFlag=0);if(iFlag=0)printf(“Not found!n”);初始化查找标志及顶、底。初始化查找标志及顶、底。查查找找循循环环折半。折半。找到。找到。没找到,调整没找到,调整iTop或或iBotchp4ex8第四章第四章 数数 组组Chapter 4 Ar

37、rayHefei University of Technology字符数组字符数组第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology统计字符串中的各元音字母的个数统计字符串中的各元音字母的个数#include void main(void)char str80,ch6=a,e,i,o,u,0;int i,iCount5=0,0,0,0,0;gets(str);for(i=0;stri!=0;i+)switch(stri)case a:case A:iCount0+;break;case e:case E:iCount1+;brea

38、k;case i:case I:iCount2+;break;case o:case O:iCount3+;break;case u:case U:iCount4+;for(i=0;i5;i+)printf(“Num of%c:%5d”,chi,iCounti);循环遍历数组元素判断字母。chp4ex9判断字符串是否结束的方法。istrlen(str)第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符的加密解密字符的加密解密 将字符串中的字母加密,将字符串中的字母加密,密钥密钥为循环平移两个字母。如为循环平移两个字母。如A加密

39、加密成成C.,Z加密成加密成B。如:I am a student.Zip 230009加密后:K co c uvwfgpw.Bkr 230009 加密算法可以描述为:如果stri是字母 循环平移两个字符;以大写字母为例,循环平移两个字符的加密算法:以大写字母为例,循环平移两个字符的加密算法:stri=(stri-A+2)%26+A第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology程序如下:#include#include void main(void)int i;char str80,chKey=2;gets(str);for(i

40、=0;i=a&stri=A&stri=Z)stri=(stri-A+chKey)%26+A;puts(str);密钥。密钥。输入待加密的字符串。循循环环遍遍历历字字符符。是字母,则加密!是字母,则加密!chp4exa设计解密算法!设计解密算法!第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组与矩阵数组与矩阵int a33a00 a01 a02 a10 a11 a12a20 a21 a22 该表示方法,在数学上称为该表示方法,在数学上称为“矩阵矩阵”,当行、列,当行、列数相同时,称为数相同时,称为“方阵方阵”,也称为,也称为“

41、行列式行列式”。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology矩阵的相关算法矩阵的相关算法 生成特殊矩阵生成特殊矩阵生成单位方阵生成单位方阵单位方阵:1 0 0 00 1 0 00 0 1 00 0 0 1主对角线元素为主对角线元素为1,其余为,其余为0。if(i=j)aij=1,其余为其余为0。#include void main(void)int a44=,i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(i=j)aij=1;else aij=0;for(i=0;i4;i+)for(j=0;j4;j+)

42、printf(“%4d”,aij);printf(“n”);chp4exb第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology生成三角阵生成三角阵三角阵的概念三角阵的概念,以对角线为界以对角线为界,一半元素为一半元素为0的的方阵。方阵。1 2 3 40 5 6 70 0 9 100 0 0 11 上三角阵。当当i=j值值非非0为为下下三三角角阵阵ij如何生成元素为行、列下标和的下三角阵如何生成元素为行、列下标和的下三角阵?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technolog

43、y与下标相关矩阵与下标相关矩阵形成如下矩阵形成如下矩阵:1 4 72 5 83 6 90 1 2 3 012 在列方向上每跨一列,要走三步;在行方向上每跨一行,要走在列方向上每跨一列,要走三步;在行方向上每跨一行,要走一步,只能横向或纵向行走,且不走远路,确定从一行一列走到任一步,只能横向或纵向行走,且不走远路,确定从一行一列走到任意行列所走的步数。意行列所走的步数。18显然,所走的步数和当前行列的位置有关。显然,所走的步数和当前行列的位置有关。s=i*1+j*3第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology1 4 72 5

44、83 6 9aij=i*1+j*3+1#include void main(void)int a33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)aij=i+j*3+1;for(i=0;i3;i+)for(j=0;j3;j+)printf(“%4d”,aij);printf(“n”);chp4exc生成如下矩阵:生成如下矩阵:1 5 9 135 9 13 179 13 17 21 第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology矩阵及元素求和矩阵及元素求和求方阵主、辅对角线之和。求方阵主、辅对角线之和。1 5

45、 2 6 -9 8 7 3 5 4 0 1 9 8 4 2主对角线:主对角线:满足下标为满足下标为ii的元素和。的元素和。辅对角线:辅对角线:满足下标为满足下标为i jMAX-i的所有的所有元素之和。元素之和。如何构造程序?如何构造程序?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology求两个矩阵之和求两个矩阵之和cij=aij+bij 对应元素之和,要求对应元素之和,要求a、b行列数相同。行列数相同。#include void main(void)int a23=1,2,3,4,5,6;int b23=1,3,5,2,4,6,c

46、23,i,j;for(i=0;i2;i+)for(j=0;j3;j+)cij=aij+bij;for(i=0;i2;i+)for(j=0;j3;j+)printf(“%4d”,cij);printf(“n”);chp4exd对应元素和。对应元素和。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology矩阵的转置运算矩阵的转置运算转置阵的概念:转置阵的概念:1 2 34 5 6a1 42 53 6b 矩阵矩阵a的转置阵的转置阵b,b矩阵行、列的最大下标应和矩阵矩阵行、列的最大下标应和矩阵a列、行列、行的最大下标相同。遍历所有下标,赋值:

47、的最大下标相同。遍历所有下标,赋值:b i j=a j i 求非方阵的转置阵求非方阵的转置阵a、b互为转置阵。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology求方阵的转置阵求方阵的转置阵如果求方阵的转置阵,行、列相同不需要定义新的数组。如果求方阵的转置阵,行、列相同不需要定义新的数组。1 5 9 132 6 10 14 3 7 11 154 8 12 16 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16算法:对角线两边的对称元素交换。chp4exe#include void main(void)int a33=1,2,3,4,5,6,7,8,9,i,j,iTemp;for(i=0;i3;i+)for(j=0;ji;j+)iTemp=a i j;a i j=a j i;a j i=iTemp;for(i=0;i3;i+)for(j=0;j3;j+)printf(“%4d”,a i j);printf(“n”);Why?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁