C语言数组应用与字符串.ppt_第1页
C语言数组应用与字符串.ppt_第2页
C语言数组应用与字符串.ppt_第3页
C语言数组应用与字符串.ppt_第4页
C语言数组应用与字符串.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第7讲 数组应用与字符串,阅读别人程序是学习程序设计的重要方法。要注意学习别人编程思路,也要注意别人的程序风格。,上周平台编程训练情况,开始出现没有完成,怎么办?,QQ群:目前有三分之二参与。,平台发帖区:23个问题贴,其中我转帖qq问题的聊天记录9个帖子,各种问题丰富,可谓积极展现问题。希望大家去浏览帖子,注意总结各类经验。,本周课后阅读题体验数组,电信类134班_1304010412_李笑 北京市 中国 1 分钟 40 秒 电信类134班_1304010408_李昂 北京市 中国 4 分钟 16 秒 电信类133班_1304010311_李佳奇 北京市 中国 7 分钟 50 秒 电信类134班_1304010417_刘珂辰 北京市 中国 9 分钟 47 秒 电信类133班_1304010305_高文兴 北京市 中国 11 分钟 46 秒 电信类134班_1304010407_蓝敏迪 北京市 中国 23 分钟 47 秒 电信类133班_1304010309_胡冰 北京市 中国 39 分钟 51 秒 电信类133班_1304010324_施杨 北京市 中国 43 分钟 26 秒 电信类133班_1304010334_杨培文 北京市 中国 1 小时 5 分钟 电信类133班_1304010312_李兴 北京市 中国 1 小时 18 分钟 电信类134班_1304010436_臧竞之 北京市 中国 1 小时 48 分钟 电信类133班_1304010302_陈禹志 北京市 中国 2 小时 电信类134班_1304010404_戴隆凯 北京市 中国 2 小时 13 分钟 电信类134班_1304010422_王宾宾 北京市 中国 2 小时 36 分钟 电信类134班_1304010438_张思梦 北京市 中国 3 小时 12 分钟 电信类134班_1304010432_许文达 北京市 中国 3 小时 18 分钟 电信类134班_1304010414_梁惠莹 北京市 中国 3 小时 38 分钟 电信类134班_1304010401_曹磊 北京市 中国 4 小时 电信类133班_1304010335_杨玉英 北京市 中国 5 小时 26 分钟 电信类134班_1304010434_杨雪 北京市 中国 5 小时 58 分钟 电信类134班_1304010440_赵宁 北京市 中国 6 小时 13 分钟 电信类133班_1304010328_孙昕 北京市 中国 6 小时 21 分钟 电信类134班_1304010437_张春玲 北京市 中国 6 小时 58 分钟 电信类134班_1304010429_王云飞 北京市 中国 8 小时 42 分钟 电信类134班_1304010420_孟雅文 北京市 中国 23 小时 3 分钟 电信类134班_1304010428_王岩 北京市 中国 23 小时 4 分钟 电信类133班_1304010307_桂雅楠 北京市 中国 23 小时 5 分钟 电信类133班_1304010339_张晓旭 北京市 中国 23 小时 10 分钟 电信类133班_1304010329_王润冬 北京市 中国 23 小时 41 分钟,有29个同学开始复习或者预习,表扬榜,代码挑错1,#include void main() int n; scanf(“%d“, ,5.2成绩判断,魏莉,代码挑错2,max=-1014;min=1014; for(i=0;imax) max=ai; if(aimin) min=ai; printf(“min=%d,max=%dn“,min,max); ,6.3 最大最小值,张思梦,min=a0; max=a0;,代码挑错3,#include void main() int n,y,r,i,d=0; int t(int n,int y); scanf(“%d%d%d“, ,6.8天数计算,王润冬-数组,函数缺返回值,下标与月份,代码挑错4,#include void main() int n,y,r,t=0,i; scanf(“%d%d%d“, ,变量-某同学,6.8天数计算,代码挑错5,#include void main() int n,a,b,c,p=0; scanf(“%d“, ,6.9 三色球问题,魏莉,课后代码阅读检查,杨培文,#include void main() int m,i; scanf(“%d“, ,绘制流程图,本讲教学内容,(1)了解二维数组的定义、初始化和引用方法 (2)熟悉字符串与字符数组,特别是字符串整体输入输出、以及加密、个数统计的算法。 (3)熟悉一维数组在数值计算、数据统计、排序和数据检索(查找、删除、插入)方面的应用;,二维数组存储结构表格或矩阵结构,逻辑结构: 二维数组恰似一张表格(或矩阵)。 数组元素行号列号 M33具有如下逻辑结构: M00 M01 M02 M10 M11 M12 M20 M21 M22 存贮结构: “按自然顺序”在内存中分配存贮单元 数组在内存中排列如下:,M00 M01 M02 M10 M11 M12 M20 M21 M22,二维数组初始化,按照二维数组元素的物理存储次序给所有或部分数组元素提供数据值 int score34= 85,87,93,88,86,90,95,89,78,91,82,95; 以行结构方式提供各数据值 int score34= 85,87,93,88, 86,90,95,89, 78,91,82,95 ; C语言允许在为二维数组初始化时省略行下标值,但列下标值不能省略。 int matrix 4= 85, 87, 93, 88, 86, 90, 95, 89, 78, 91, 82, 95;,例:一个34矩阵,要求编程序求出其中值最大那个元素的值,以及其所在的行号和列号。,两重循环控制行、列变化,记录最大值以及行、列下标,N-S流程图,#include void main() int i, j, row=0, colum=0, max; int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2; max=a00; for (i=0;imax) max=aij; row=i; colum=j; printf(“max=%d,row=%d,colum=%dn“,max,row,colum); ,运行结果:max=10,row=2,colum=1,行,列,字符数组,字符 是用单引号括起来的单个字符,它在存储器中占1个字节。例如:A 字符串 是用双引号括起来的一串字符,它在存储器中占n+1个字节,即字符串的结束符0也占1个字节的位置。例如,”abc”; 有效字符的个数称为字符串长度。 例如, ”abc”的长度为3,但占4个字节 (0占一位)。 字符串是用字符型数组存放的。,字符数组的定义、初始化和输入输出,字符数组的定义格式: char 字符数组名 最大字符数+1 = “字符串”;/整体赋值 例: char c 7= “MONDAY“; 或 char c 7= “MONDAY“; 或 char c7; c0 = M; c1 = O; c2 = N; c3 = D; c4 = A; c5 = Y; c6 = 0; / c6 = 0; 例: char d 7= “MON“; 字符数组的元素是单个字符数据。,字符串的结束符0也占1个字节的位置,字符串的输入与输出,而和普通数组不同的是,字符串数组允许聚集操作(即整体赋值) 字符串的输入 char name20; scanf(“%s“,name); 字符串的输出 printf(“%sn“,name);,平台题7.2-问候语,数组名,即首地址,当字符串中有空格符时,用这种方法无法接收全部的字符串。,使用gets函数,例如: gets(name);,字符统计,字符数组: 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。,方法可多种: 1)用选择与循环、变量 2)用选择与循环、数组(提示:建议使用带空格字符串输入方式,这样统计个数时所用的循环结束条件可判断是否是字符串结束标志0),平台题7.5,字符加密,恺撒(替换)加密法 加密规则:将每个字母用字母表中排在其后面的第3个字母的大写形式来替换(如字母d或D就用G来替换),对于字母表中最后的三个字母,可将字母表看成是首尾衔接的(如字母y或Y用B来替换);字符串中其他非字母符号不做改变。 使用该方法编写一个字符串加密程序。,/ 例:恺撒(替换)加密 while(ci!=0) if(ci = a ,平台题7.8,小写转换为大写,凯撒加密算法,数值计算,一维数组:求和/均值(平台题6.6) 二维数组: 矩阵转置(平台练习7.3),数据统计,一维数组:统计某类数据个数 统计小于均值的个数:第6讲课堂练习,排序,一维数组:冒泡排序法,使用冒泡排序法编写程序,可以对任意输入的10个整数进行从小到大的排序-书134页例7.3,经过第一趟(共5次比较与交换)后,最大的数9已“沉底” 。然后进行对余下的前面5个数第二趟比较,,如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第i趟比较中要进行n-i次两两比较。,for(j=0;jai+1) t=ai;ai=ai+1; ai+1=t; ,程序运行结果如下: input 10 numbers: 1 0 4 8 12 65 -76 100 -45 123 the sorted numbers: -76 -45 0 1 4 8 12 65 100 123,求极值的方法之一,排序后:最大值:a9;最小值:a0,数据检索,一维数组 查找:平台题7.1 删除:平台题7.4 插入:平台题7.7,已有一个有序数组a9= 1,2,3,4,6,9,12,23,45 ,现输入一个数n,查找数组中是否有这个数,如果有,则把这个元素删除掉,并输出删除后的数组元素,如果没有,则提示数组中没有该数。 编程思路:与插入不同,9个数,数组大小定义9足够。下面列出主要过程,最好彼此独立,混在一个循环里太乱。 1)查找数组中是否有n的编程思路:(已经做过,平台练习5.4题) 2)删除数组中某个数的编程思路:设n在数组中下标为k,则从k开始到倒数第二个元素的下标为止,值依次顺序前移(即ai=ai+1;) 3)输出删除后的数组元素,注意:数组原来有9个数,删除n对应的元素后,数组只需要输出8个数即可。,一维数组应用-删除数,平台题7.4,一维数组应用-插入数,已知有序数组a9=1,2,3,6,8,9,12,23,33,从键盘上输入一个数n,将n插入到a数组中,要求插入n后的数组依然有序,编程思路:数组定义至少比9大,因为已经有9个元素,再插入n,至少得定义10个大小,否则将发生下标越界错误。主要过程: 1、n插入第10 位置(即na8时):比较简单,执行a9=n;即可。 2、插入序列中某个位置(第1-9位置),需要3个步骤: 1)寻找n该插入的位置:即第一个比n大的数组元素,nai时i的值b,退出循环(break) 2)将数组从最后1个元素开始,直到b位置为止,元素值依次后移,给插入n腾位。 3)将n插入:ab=n 3、插入n后输出整个数组元素,以逗号分隔,平台题7.7,一维数组的其他应用,假设13人围成1圈,从第1个人开始顺序报号1、2、3、1、2、3.。凡是报3的退出圈子。找出最后留在圈子中的人原来的序号。,思考:如果不是围成1圈呢?例如:排成1行,编程提示:分3个步骤,彼此独立,建议用三个循环分别对应3个步骤 1、报数资格设置:定义一个数组对应13个人,数组元素的初值都设每个人都有报数资格的。 2、报数过程:报数用一个变量k即可,从头遍历整个数组(从第1个元素到第13个元素) 1)如果对应的数组元素是有报数资格的,则k+,然后判断k是否是3的倍数,如果是,则对应数组元素设置为剔除标志,同时累计剔除人数,如果剔除人数达到12人,意味着只剩1人了,那么退出循环。 2)如果对应的数组元素已经被设置了剔除标志,则无报数资格,则啥也不做(此种情况不需要编程) 3)当一次遍历完成后,即判断完第13个人后,将数组元素的下标设置为-1(执行完下标+后,下标为0),重新开始新的1圈报数 3、在2步骤完成后,搜索整个数组,从第1个元素到第13个元素,查找到数组元素值为有报数资格的,输出该元素位置,即编号。,平台题7.9,7.1 查找数 7.2 问候语 7.3 矩阵转置 7.4 删除数 7.5 统计字符个数 本周课

温馨提示

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

评论

0/150

提交评论