欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数据的组织结构-字符串、二维数组.ppt

    • 资源ID:6296751       资源大小:400.50KB        全文页数:53页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据的组织结构-字符串、二维数组.ppt

    1,数据的组织结构字符串,第四章,三、字符数组与字符串,2,字符串的组织,字符串是指一个有限长度的字符序列,并且用0字符结尾(0作为字符串的结束标志)字符串常量用一个双引号(“”)括起来例:“C program”“blue”C语言中,没有直接提供字符串数据类型,字符串存储在字符数组中“C program”的存储,3,实现字符串的方法,用一维字符型数组定义 char array10;可以用array0array9存放 9 个字符。字符串的初始化可以用数组的初始化方法进行字符串的初始化 char str=C,p,r,o,g,r,a,m,0;把字符串作为整体进行初始化 char str=“C program”;(自动在末尾加0),4,说明用字符型数组存放字符串时,在有效字符后自动加0字符串中所包含字符的个数称为字符串长度 例如,“blue”的长度为4,但占5个字节(0占一位)字符串占用数组元素的个数为字符串长数加1,5,【例】字符串示例#include main()int i=0;char a=K;char b=Sit down;while(ai!=0)putchar(ai);i+;printf(n);i=0;while(bi!=0)putchar(bi);i+;,省略了2,常用0判断是否结束循环,等价于K,0,6,字符串与字符数组的区别字符数组是变量,用于存放字符型数据,包括字符串;字符串是数据,存放在字符数组中,是一串用0 结束的字符字符数组的长度可以大于字符串的长度,7,字符串与字符数组区别,字符串放在字符数组中,应包含结束符char str=C,p,r,o,m,g,r,a,m,0;printf(%snn,str);下列情况可能输出不可识别字符(乱码)char str1=C,p,r,o,m,g,r,a,m;printf(%snn,str1);,8,字符串的结束符0,0是字符串结束标志,有关字符串处理的所有函数都要求用0结束。如果将字符串按字符一个一个地处理就需要人为地添加这个结束符。,9,程序段:逐个从键盘接受一个字符串并打印。char str20;int i=0;while(1)/*输入回车后结束*/if(stri+=getchar()=n)break;stri-1=0;/人为地添加字符串的结束符printf(“%s”,str);/用“0”替换了“n”,10,程序段:逐个输出字符串的内容。i=0;while(stri!=0)/*遇到字符串 结束时停止输出*/putchar(stri);i+;putchar(“n”);,11,【例】字符串的输入输出示例。#include main()char a10,b10;gets(a);scanf(“%s”,b);puts(a);printf(“%sn”,b);,必须开辟足够大的空间,运行结果:Sit downSit downSit down Sit,遇空格、跳格符或回车符,认为字符串输入结束,%s,gets(),puts()在stdio.h中。,基于一维数组的字符串操作 字符串的输入输出,12,字符串的输入(整体输入),标准函数 scanf(“%s”,str);/*自动添加0*/gets(str);/*把换行符转换为0*/其中str是存放字符串的数组名称,如:char str20;注意事项用“%s”输入字符串时是用空格符、换行符或制表符作为输入结束,在字符串中不能含有这些符号用“%s”格式符时,对应的输入变量str前不能有&gets()函数以换行符作为输入的结束,在输入的字符串中允许包含空格和制表符,13,输出字符串(整体输出),将字符串的内容显示到标准输出设备屏幕上标准函数 printf(“%s”,str);/*只有输出,不换行*/puts(str);/*输出并换行*/其中str是存放字符串的数组名称,定义:char str20;str所指的字符串必须用0结束puts()输出后,自动换行scanf()输出后,要人为添加换行符“n”,14,字符串输出举例,char str=Hello;puts(str);puts(str);显示结果:HelloHello,char str=Hello;printf(%s%s,str,str);显示结果:HelloHello,15,字符串标准函数 在C语言的标准函数库中,提供了数十种与字符串处理有关的标准函数,从而大大地提高了字符串处理的能力,降低了字符串处理的复杂程度。,常用字符串标准函数及应用实例,16,字符串转换成数值类型(P98 例4-7)atof(str);-将字符串str转换成一个double值atoi(str);-将字符串str转换成普通整型(int)atol(str);-将字符串str转换成长整型(long)原型在 stdlib.h中,其中str是数字字符串,数值类型转换成字符串(P99 例4-8)itoa(num,str,radix);num是一个int类型的数值 ltoa(num,str,radix);num是一个long类型的数值其中str用于存放结果的字符串,radix是用户指定的进制数,它的取值必须介于236之间,17,大小写转换 strlwr(str);-所有大写字母转换成小写字母 strupr(str);-所有小写字母转换成大写字母函数原型都在 string.h中,实例:统计一段文本中每个英文字母出现的次数(小写都被认为是大写)。,教材 P101 例4-9,18,#include#include#include#define NUM 26main()int letterNUM=0;/*用于存放统计结果的一维数组*/char str80;/*存放以字符串形式输入的文本*/int i;printf(nEnter a text line);gets(str);/*输入文本*/strupr(str);/*将文本中的所有小写字母转换成大写字母*/for(i=0;stri!=0;i+)/*统计每个字母出现的次数*/*isalpha判ch中是否为字母,是则返回非0,否则返回0*/if(isalpha(stri)letterstri-A=letterstri-A+1;for(i=0;iNUM;i+)/*输出统计结果*/printf(n%c:%d,A+i,letteri);,程序代码,与教材P8485 例4-2比较,19,计算字符串长度 strlen(str);-返回字符串中所包含的字符个数,即字符串长度,0不计算在内。字符串比较 strcmp(str1,str2);-比较字符串str1与str2的大小 若str1=str2 函数返回值=0 若str1str2 函数返回值0 若str1“ABC”“ABCD”=“ABCD”,字符串处理函数,20,实例假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。,教材 P102 例4-10,21,#include#include main()char password20;/*存放用户输入的密码*/printf(nEnter password:);gets(password);/*输入密码*/*检测用户输入的密码,如果不正确,给出提示,并请求重新输入*/while(strcmp(password,administrators)!=0)printf(nInvalid passwordnn);printf(Enter password,again:);gets(password);printf(OK);/*输入正确,显示OK*/,程序代码,问题:要限制密码输入的次数(3次),应如何修改,22,字符串拷贝 strcpy(str1,str2);-将字符串str2拷贝到字符串str1中 str1是用于存放拷贝结果的存储区域,例D-1:从键盘输入若干单词,找出最长的单词,问题分析与找最大值类似因不知输入的单词数量,不能确定循环次数,以空字符串作为结束标志用字符串的长度进行比较,但要保存当前最长字符串和其长度,23,#include#include main()char str80,maxstr80;int max=0,len;doprintf(Enter a string:);gets(str);len=strlen(str);if(lenmax)strcpy(maxstr,str);max=len;while(len0);printf(The max string is%sn,maxstr);,24,字符串连接 strcat(str1,str2);-将str2连接在str1之后,并在结束处添加一个字符串结束符0,实例:根据用户的选择输出相应的字符串。,教材 P104 例4-11,说明显示一个菜单,用户选择一项,则可以输出与该项相关的信息,25,#include#include main()char str180=This is a;char str2=program.;char str3=Java;char str4=Pascal;char str5=C;char str6=C+;int choice;printf(n=MENU=n);/*菜单*/printf(n Java.1);printf(n Pascal.2);printf(n C.3);printf(n C+.4);printf(n choice:);scanf(%d,/*用户做出选择*/,程序代码,只给出部分初值,26,switch(choice)/*根据用户的选择拼接字符串*/case 1:strcat(str1,str3);strcat(str1,str2);break;case 2:strcat(str1,str4);strcat(str1,str2);break;case 3:strcat(str1,str5);strcat(str1,str2);break;case 4:strcat(str1,str6);strcat(str1,str2);break;default:strcpy(str1,Error);/*被覆盖,可用strcat*/break;printf(n%s,str1);/*显示字符串*/,27,文本变换,例4-12:文本加密、解密,有规律地改变文本中字符的ASCII码,达到加密的目的阅读时,以相反的规律改变文本中字符的ASCII码,达到解密的目的,28,#include#include#include main()int i;char text1000;gets(text);/*输入文本内容*/for(i=0;texti!=0;i+)if(isalnum(texti)texti=texti+5;/*变换*/puts(text);for(i=0;texti!=0;i+)if(isalnum(texti)texti=texti-5;/*还原*/puts(text);,程序代码,判断参数为字母或数字,返回真。原型在 ctype.h中,29,求子串函数 strstr(str1,str2);str1是主串,str2是子串若在str1中存在子串str2,则返回子串str2在主串中第一次出现(第一个字符)的位置(指针);否则返回空在字串中找字符出现位置的函数 strchr(str1,ch);str1是一个给定的字符串,ch 是所要查找的字符若在str1中存在字符ch,则返回ch在字符串str1中第一次出现的位置(指针);否则返回空,30,四、二维数组,二维数组由M行N列具有相同性质的数据组成,有两个下标值唯一确定一个元素。定义格式:数组名行长度列长度;double arr 10 20;存储时按行排列下标范围arr 0 0-arr 9 19 表示数据共200个元素数组元素访问arr 0 0=arr 1 2+9.2;-用下标访问 数组元素的引用形式:数组名下标下标,31,二维数组的存储,例如:int a34;数据表示共12个元素,所占存储空间大小(即字节数):sizeof(元素类型)元素数量(即行数列数),内存状态:先行后列,32,二维数组的初始化,分行给二维数组赋初值int a34=1,2,3,4,5,6,7,8,9,10,11,12;按数组排列顺序对各元素赋初值int a34=1,2,3,4,5,6,7,8,9,10,11,12;在对全部数组元素赋初值时,可以不指定数组行长度int a 4=1,2,3,4,5,6,7,8,9,10,11,12;对部分元素赋初值int a34=1,5,9;int a34=1,5,9;,33,二维数组的引用,赋值 int a23;a00=1 a01=1 a02=1 a10=1 a11=1 a12=1,for(i=0;i2;i+),for(j=0;j3;j+)aij=1;,输入for(i=0;i2;i+)for(j=0;j3;j+)scanf(“%d”,输出for(i=0;i2;i+)for(j=0;j3;j+)printf(“%d”,aij);printf(“n”);,34,例 转置矩阵的计算,#include main()int x 3 2=1,2,3,4,5,6;int y 2 3;int i,j;for(i=0;i3;i+)for(j=0;j2;j+)y j i=x i j;/*输出2行3列的矩阵*/,35,例:判定给定方阵是否为对称矩阵,每个元素都应满足arrayij=arrayji判断对称性,只需用下三角的每个元素与对应的上三角元素进行比较,教材P109 例4-13,36,#include#define NUM 5/*矩阵行列数*/main()int mNUMNUM;/*定义二维数组变量*/int i,j;/*输入矩阵*/printf(Enter%d rows%d cols datas for the maxtrix:n,NUM,NUM);for(i=0;iNUM;i+)for(j=0;jNUM;j+)scanf(%d,37,/*判断矩阵是否对称并输出相应的结果*/for(i=0;iNUM;i+)for(j=0;ji;j+)if(mij!=mji)printf(nThe matrix isnt symmetrical.);return 0;printf(nThe matrix is symmetrical.);,38,第4章 第二部分作业,阅读教科书第四章(字符数组与字符串、二维数组)一、阅读 P119 3 二、编程题 P120 7、8 P120 9,10(选作)三、上机 P120 7 P121 2,39,P120 第7题 提示,设单词之间用空格(可以有多个)或回车符(可以有多个)隔开跳过前导空格(也可不考虑)循环开始(结束条件:遇到0)若字符是非空格或回车,则累加字符个数(单词长度),否则,表示前面是一个单词,记录当前最长单词的长度找到后面第一个非空格、回车的字符,则可能是下一个单词的开始,40,附录、字符串处理函数和实现相应功能的部分自编程序(补充自学),求字符串长度 strlen()字符串复制 strcpy()字符串连接 strcat()字符串比较 strcmp(),41,#include#include main()char a80;int count;gets(a);count=strlen(a);printf(%s:%dn,a,count);,运行结果:I am OKI am OK:7,问:strlen(“Good”)的值?,【例1_1】求字符串长度函数的使用。,42,【例1_2】求串长自编程序#include main()char a80;int i=0,count=0;gets(a);while(ai!=0)count+;i+;printf(%s:%dn,a,count);,43,#include#include main()char a50,b80;gets(a);strcpy(b,a);puts(b);,运行结果:I am OKI am OK,/*给a输入*/,/*输出b中串*/,【例2_1】字符串复制函数的使用。,44,char a5=”ABCD”,b5=”abcd”;char temp5;strcpy(temp,a);strcpy(a,b);strcpy(b,temp);,交换两个数组中字符串:,45,【例2_2】字符串复制的自编程序。,a,b,while(ai!=0)bi=ai;i+;,bi=0;,46,#include main()int i=0;char a50,b80;gets(a);while(ai!=0)bi=ai;i+;bi=0;puts(b);,程序实现,47,#include#include main()char a80,b30;gets(a);gets(b);strcat(a,b);puts(a);,运行结果:abcABCDabcABCD,a的长度 应足够大,【例3_1】字符串连接函数的使用。,48,【例3_2】连接字符串的自编程序。,b,a b c 0,a,找a中串的尾,49,【例3_2】连接字符串的自编程序。,b,a b c 0,a,找a中串的尾,b中串赋值到a,A,B,C,D,人为地赋0,ai=0;,50,#include main()int i=0,j=0;char a80,b30;gets(a);gets(b);while(ai!=0)i+;while(bj!=0)ai=bj;i+;j+;ai=0;puts(a);,程序实现,51,【例4_1】字符串比较函数的使用。strcmp,b o o k 0,b o y 0,=,=,“boy”“book”,比较串的规则:,按ASCII码值比较,52,#include#include main()char a30,b30;gets(a);gets(b);if(strcmp(a,b)0)printf(第一个串大于第二个串n);if(strcmp(a,b)=0)printf(两串相等n);if(strcmp(a,b)0)printf(第一个串小于第二个串n);,不能写成if(ab),53,【例4_2】编写字符串比较的程序。#include main()int i=0;char a30,b30;gets(a);gets(b);while(ai=bi,找第一个不相等的字符,

    注意事项

    本文(数据的组织结构-字符串、二维数组.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开