书签 分享 收藏 举报 版权申诉 / 46
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:2824289
  • 上传时间:2022-05-29
  • 格式:PPT
  • 页数:46
  • 大小:3.27MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第四章-数-组-C语言课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第四 语言 课件
    资源描述:

    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变化到常量达式的值减一。变化到常量达式

    3、的值减一。int 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(voi

    6、d) float fScore10,aver=0; int 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 Arra

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

    9、先变化,变化一个周期后,倒数第二个开始变化,期后,倒数第二个开始变化,如此类推。如此类推。 a为数组在内为数组在内存中的首地址。存中的首地址。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 a2

    10、3= 1 , 2 ; 0行的行的0列的元素赋初列的元素赋初值。值。0行其余值为行其余值为0。int a23=1,2; 对全体数组元素赋初值,第一维下标可以省略。对全体数组元素赋初值,第一维下标可以省略。int a 3=1, 2, 3, 4, 5, 6;第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology数组元素的引用数组元素的引用 数组定义后,具备数组定义后,具备简单变量的一切性质简单变量的一切性质,可以作为表达式的运,可以作为表达式的运算对象,也可以被赋值。引用时,算对象,也可以被赋值。引用时,只能引用数组元素只能引用数组元素,方

    11、式如下:,方式如下:arrayexp1expnint a1010 ,y,i=2;ai+26=20;y=ai+26*100/30;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,表示字符串结

    13、束。,表示字符串结束。因此,说明数组因此,说明数组时,长度指定应至少比实际长度大时,长度指定应至少比实际长度大1,保证赋初值正确。,保证赋初值正确。0存储结构:存储结构:hello0第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology二维数组赋初值二维数组赋初值二维数组的每一行可以存放一个字符串。二维数组的每一行可以存放一个字符串。char str36=”wang”,”zhang”,”liu”;wang0zhang0liu0 str数组在内存中数组在内存中的首地址。的首地址。存储结构存储结构第四章第四章 数数 组组Chapter 4

    14、 ArrayHefei University of Technology字符数组的输入输出字符数组的输入输出格式输入输出函数格式输入输出函数输出:输出: for(i=0;iSTRLEN;i+) printf(“%c”,str i ); /*通过循环输出各元素通过循环输出各元素*/ printf(”%s”,str); /*用字符串形式输出用字符串形式输出*/输入:输入: scanf(”%s”,str); /*用字符串输入整个数组用字符串输入整个数组*/ 用用scanf函数输入时函数输入时space作为作为输入的分隔符输入的分隔符,因此输入带空格,因此输入带空格的字符串,会造成输入不全。的字符串,

    15、会造成输入不全。char a20;scanf(”%s”,a);输入:输入:China Anhui Hefei 结果结果a数组的内容是:数组的内容是:China0为了解决这个问题,系统定义如下专用于字符数组的为了解决这个问题,系统定义如下专用于字符数组的i/o函数。函数。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technologygets( )字符串输入函数字符串输入函数用法:用法:char str 80;gets(str); 作用作用: 读入一个以换行符为终结符的字符串到读入一个以换行符为终结符的字符串到str中,用中,用0代替换行符。代替

    16、换行符。数组名作为函数的参数。puts( )字符串输出函数字符串输出函数用法:用法:char string =”China”;puts(string);数组名作为函数的参数。作用:作用:输出以输出以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&st

    17、ri=z) stri -=32; puts(str);chp4ex0判断字符串结束。判断字符串结束。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology常用的字符处理函数常用的字符处理函数 C语言定义了一系列的字符处理函数用于字符串的处理,该类语言定义了一系列的字符处理函数用于字符串的处理,该类函数的原型定义在函数的原型定义在string.h中。因此,在使用该类函数时,应在程中。因此,在使用该类函数时,应在程序的开始处,加序的开始处,加#include 字符串拷贝函数字符串拷贝函数strcpy(str1,str2)作用:将作用:将s

    18、tr2拷贝到拷贝到str1中。中。用法:用法:char str110, str2 =”Computer”;strcpy(str1,str2); /*str1的内容是的内容是“Computer”*/strcpy(str2,”Program”); /*str2的内容是的内容是“Program”*/说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串连接函数字符串连接函数str

    19、cat(str1, str2)作用:将作用:将str2连接到连接到str1后(去掉后(去掉str1的的0)。)。用法:用法:char str115=“Anhui ”, str2 =”Hefei”;strcat(str1,str2);puts(str1); /*输出结果为输出结果为 Anhui Hefei */说明:说明:str1的长度要足够长;的长度要足够长;str1只能是字符数组名只能是字符数组名,str2可以是字符数组或字符串常量。可以是字符数组或字符串常量。测试字符串长度函数测试字符串长度函数strlen(str) 作用:测试字符串的实际长度。函数运算得到整型值,该值是作用:测试字符串的

    20、实际长度。函数运算得到整型值,该值是字符串的长度!字符串的长度!int iLenStr;char str =“China”;iLenStr=strlen(str);printf(“%d”,iLenStr);结果?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology字符串的比较字符串的比较 strcmp(str1,str2) 作用:作用:对对str1和和str2 进行逐位无符号字符(进行逐位无符号字符(ASCII码)比较,码)比较,直到对应位字符能够确定关系或到串尾为止。直到对应位字符能够确定关系或到串尾为止。返回整型比较结果返回整型

    21、比较结果。字符的数值关系也就是字符的字符的数值关系也就是字符的ASCII码值的数值关系。码值的数值关系。比较结果如下:比较结果如下:比较结果比较结果strcmp的值的值str1str2str20char str1 =”abcd”;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 Tec

    22、hnologystrlwr(str)将将str中的大写字母转换成小写字母。中的大写字母转换成小写字母。strupr(str)将将str中的小写字母转换成大写字母中的小写字母转换成大写字母#include #include void 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 Tech

    23、nology举例:统计三行文字中大写字母、小写字母及数字的个数。举例:统计三行文字中大写字母、小写字母及数字的个数。#include #include void main(void) char str80; int i, j, iAnum=0, ianum=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 Arra

    24、yHefei University of Technology数组的常用算法数组的常用算法 数组是同类型数据的集合。便于整体处理数据,数组操作的主数组是同类型数据的集合。便于整体处理数据,数组操作的主要算法有:要算法有:求极值;求极值;排序;排序;查找查找; ;第四章第四章 数数 组组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

    25、, i; iPos=0; iMax=a0; for(i=1; iiMax) iMax = ai; iPos = i; printf(“Max=%5d Position=%5d”,iMax,iPos);假定最大值及其位置。假定最大值及其位置。循环比较循环比较 当前元素比最大值大,将其当前元素比最大值大,将其赋值为新的最大值并记录其位置。赋值为新的最大值并记录其位置。chp4ex3第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology二维数组求极值二维数组求极值#include void main(void) float a34= 1.0

    26、, 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”,aiRowiCol,iRow,iCol); 假定最小值的位置。假定最小值的位置。二重循环遍历所有元素二重循环遍历所有元素比较求最小值,记录其位置。比较求最小值,记录其位置。chp4ex4第四章第四章 数数 组组Chapter 4 Ar

    27、rayHefei University of Technology 排排 序序排序的概念排序的概念 排序排序是将一组随机排放的数按下标顺序是将一组随机排放的数按下标顺序从大到小从大到小或或从小到大从小到大重重新排列。新排列。1 ,5,4,6,7,99,7,6,5,4,11,4,5,6,7,9降序降序升序升序冒泡排序算法冒泡排序算法 冒泡排序算法演示冒泡排序算法演示第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology冒泡排序程序如下:冒泡排序程序如下:#include void main(void) int i, j, a10=4,3

    28、,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 ArrayHefei University of Technology思考题思考题 升序的条件如何构造?升序的条件如何构造? 联合排序问题联合排序问题 已知一个班有已知一个班有36个同学,个

    29、同学,a数组存放一门课的成绩,数组存放一门课的成绩,m数组存放数组存放其学号。要求将成绩从大到小排序。其学号。要求将成绩从大到小排序。 提示:提示:应考虑的问题是当应考虑的问题是当a数组元素比较交换时,数组元素比较交换时,m数组如何处数组如何处理?理?a 5 89.5 m 5 1005a 7 90.0 m 7 1007被动排序方。第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology选择排序选择排序 冒泡排序冒泡排序在内层循环的比较中,满足条件的每次都需要交换。在内层循环的比较中,满足条件的每次都需要交换。其中一些交换是无效的,交换算

    30、法会占用系统时间,从而降低算法其中一些交换是无效的,交换算法会占用系统时间,从而降低算法效率。效率。 选择排序算法的基本思路,每轮排序将选择排序算法的基本思路,每轮排序将a i 假定为极值,每次假定为极值,每次在在a i 到到 aMAX中找出个极值,记录其位置,最后让极值位置的中找出个极值,记录其位置,最后让极值位置的元素与元素与a i 交换。交换。 选择排序保证每轮排序只有一次交换,且为有效的交换!选择排序保证每轮排序只有一次交换,且为有效的交换!选择排序算法演示选择排序算法演示第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology

    31、选择排序程序选择排序程序#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); 排序循环排序循环假定最大值位置。假定最大值位置。循环比较找出最大值的位置。循环比较找出最大值的位置。与本次比较的第一个元素交换。与本次比较的第一

    32、个元素交换。chp4ex6升序如升序如何构造?何构造?第四章第四章 数数 组组Chapter 4 ArrayHefei University of Technology 查查 找找查找是在一组数中,寻找一个特定的数,并显示结果。查找是在一组数中,寻找一个特定的数,并显示结果。顺序查找顺序查找 顺序查找算法:顺序查找算法:构造循环,使循环的变量遍历数组每个元素的构造循环,使循环的变量遍历数组每个元素的下标。循环的过程中让特定的数和每个元素比较,相等则表示找到下标。循环的过程中让特定的数和每个元素比较,相等则表示找到该数,并输出其下标(位置)。该数,并输出其下标(位置)。程序设计中标志的设置和应用

    33、:程序设计中标志的设置和应用: 在程序设计中,经常要记录一些状态,作为判断的条件。因此在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志是整型变量。需要在程序中设置一些标志,通常标志是整型变量。 如查找问题,可以先设置一个整型变量如查找问题,可以先设置一个整型变量iFlag=0表示没有找到,表示没有找到,在查找的过程中一旦找到后,将在查找的过程中一旦找到后,将iFlag赋值为赋值为1,结束查找后,可以,结束查找后,可以由由iFlag值所代表的逻辑状态,确定是否已找到特定的数。值所代表的逻辑状态,确定是否已找到特定的数。第四章第四章 数数 组组Chapter

    34、 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(“%d”,&j); for(i=0;i10;i+) if(j=ai) iFlag=1; printf(“The position

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

    36、,给定一个数,找出该数在数组中的位置。 可以通过将区间折半,快速缩小查找区间,提高效率!可以通过将区间折半,快速缩小查找区间,提高效率!折半查找算法演示折半查找算法演示第四章第四章 数数 组组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; iBot=9; scanf(“%d”,&iS); do iMid=(iTop+iBot)/2; i

    37、f(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 ArrayHefei University of Technology字符

    38、数组字符数组第四章第四章 数数 组组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+;break; case i : case I: iCou

    39、nt2+;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加密加密成成C.,Z加

    40、密成加密成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

    41、=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 该表示方法,在数学上称为该表示方法,在数学上称为“矩阵矩阵”,当行、列,当行、列数相同时,称为数相同时,称为“方阵方阵”,也称为,也

    42、称为“行列式行列式”。 第四章第四章 数数 组组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+) f

    43、or(j=0;j4;j+) 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 Univers

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

    45、chnology1 4 72 5 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矩阵及元素求和矩阵及元素求和求

    46、方阵主、辅对角线之和。求方阵主、辅对角线之和。 1 5 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,

    47、3,4,5,6; int b23=1,3,5,2,4,6,c23,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矩阵行、列的最大下标应和矩阵矩

    48、阵行、列的最大下标应和矩阵a列、行列、行的最大下标相同。遍历所有下标,赋值:的最大下标相同。遍历所有下标,赋值: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?

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第四章-数-组-C语言课件.ppt
    链接地址:https://www.163wenku.com/p-2824289.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库