




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lesson11数据的组织结构,1,学习目标:,1,掌握二维数组的使用,2,字符数组:数组元素的类型为字符,3,字符数组的定义,charch10;,4,字符串,用双引号括起来的一串字符,5,字符串在计算机中表示,“1234”,字符数组,字符串结束标志,6,字符数组的初始化,(1)字符数组的初始化的基本方法charch5=h,e,l,l,o;(2)省略长度说明如:charch=h,e,l,l,o;(3)使用字符串初始化字符数组:charch=“abcde”;charch=“abcde”;,7,字符串的输入输出1、gets(str);2、scanf(“%s”,str);gets()函数以换行符或文件结束符EOF作为输入的结束标志,因此在输入的字符串中允许包含空格和制表符;scanf()函数则以空格、制表符、换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符。如果包含了它们,将作为字符串输入的结束标志处理。,charstr100;,8,字符串的输出1、puts(str);2、printf(%s”,str);puts将字符串的内容显示到标准输出设备屏幕上,并换行。,9,字符串转换成数值类型atof(str);atoi(str);atol(str);其中str是一个字符串。atof()的返回类型是double,它可以将字符串str转换成一个双精度数值;atoi()的返回类型是int,它可以将字符串str转换成普通整型;atol()的返回类型是long,它可以将字符串str转换成长整型(long)。,10,例1:将用户以字符串形式输入的两个实型数值转换成double类型,并显示输出这两个实型数值及它们相加的结果。,11,#include#includeintmain()charnum120,num220;doubled1,d2,sum;printf(nEnterthefirstnumber:);gets(num1);/*输入第1个用字符串表示的实型数值*/printf(Enterthssecondnumber:);gets(num2);/*输入第2个用字符串表示的实型数值*/d1=atof(num1);/*将第1个字符串转换成double类型*/d2=atof(num2);/*将第2个字符串转换成double类型*/sum=d1+d2;/*将2个double类型数值相加*/printf(n%s+%s=%.3lf,num1,num2,sum);/*显示结果*/return0;,12,数值类型转换成字符串itoa(num,str,radix);ltoa(num,str,radix);其中str用于存放结果的字符串,radix是用户指定的进制数,它的取值必须介于236之间。在itoa()函数中的num是一个int类型的数值;在ltoa()函数中的num是一个long类型的数值。,13,例2:将用户输入的长整型(long类型)数值转换成以字符串形式表示的十六进制、八进制和二进制数值,并显示输出。,14,#include#includeintmain()charstr33;longvalue;printf(nEnteralongnumber:);scanf(%ld,15,大小写转换strlwr(str);strupr(str);str是一个字符串。标准函数strlwr()可以将字符串str中出现的所有大写字母转换成小写字母;标准函数strupr()可以将字符串str中出现的所有小写字母转换成大写字母。,16,例3:统计一段文本中每个英文字母出现的次数。,分析:定义一个数组letter,存放英文字母出现的次数,letter,循环字符数组,针对每个字母,找到其在数组letter中的对应位置,然后加1,17,letter,如何确定每个字母在letter中的位置呢?A对应letter0B对应letter1C对应letter2,下标:0A-A下标:1B-A下标:2C-A,18,#include#include#include#defineNUM26intmain()intletterNUM=0;/*用于存放统计结果的一维数组*/charstr80;/*存放以字符串形式输入的文本*/inti;printf(nEnteratextline);gets(str);/*输入文本*/strupr(str);/*将文本中的所有小写字母转换成大写字母*/for(i=0;stri!=0;i+)/*统计每个字母出现的次数*/if(isalpha(stri)letterstri-A=letterstri-A+1;for(i=0;iNUM;i+)/*输出统计结果*/printf(n%c:%d,A+i,letteri);return0;,19,计算字符串长度strlen(str);这个函数的功能是返回字符串中所包含的字符个数,即字符串长度。字符串结束标志0不计算在内。字符串比较strcmp(str1,str2);两个字符串进行比较时将依据每个字符对应的ASCII编码决定其大小。,20,例4:假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。,分析:循环的从键盘输入一个字符串,用来和administrators比较,如果相等结束循环,21,#include#includeintmain()charpassword20;/*存放用户输入的密码*/printf(nEnterpassword:);gets(password);/*输入密码*/*检测用户输入的密码,如果不正确,给出提示,并请求重新输入*/while(strcmp(password,administrators)!=0)printf(nInvalidpasswordnn);printf(Enterpassword,again:);gets(password);printf(OK);/*输入正确,显示OK*/return0;,22,字符串拷贝strcpy(str1,str2);其中str2是将要被拷贝的字符串,str1是用于存放拷贝结果的存储区域。字符串连接strcat(str1,str2);其中str1和str2是两个字符串。这个函数的功能是:将str2连接在str1之后,并在结束处添加一个字符串结束符0,23,例5:根据用户的选择输出相应的字符串。,分析:1、定义好需要输出的字符串2、从键盘输入一个数3、判断输入的数,根据要求连接成一个新的字符串后输出,24,#include#includeintmain()charstr180=Thisisa;charstr2=program.;charstr3=Java;charstr4=Pascal;charstr5=C;charstr6=C+;intchoice;printf(n=MENU=n);/*菜单*/printf(nJava.1);printf(nPascal.2);printf(nC.3);printf(nC+.4);printf(nchoice:);scanf(%d,/*用户做出选择*/,25,switch(choice)/*根据用户的选择拼接字符串*/case1:strcat(str1,str3);strcat(str1,str2);break;case2:strcat(str1,str4);strcat(str1,str2);break;case3:strcat(str1,str5);strcat(str1,str2);break;case4:strcat(str1,str6);strcat(str1,str2);break;default:strcpy(str1,Error);break;printf(n%s,str1);/*显示字符串*/return0;,26,请从键盘输入3个同学、4门课程的成绩,并按照如下格式输出,8070999783926591858876,例:,27,分析,有12个成绩需要保存,使用数组,长度为12的一维数组?,intscore12,数组排列方式,如何区分是哪门课程,是第几个同学的成绩?,score,28,思考,重新排列,特点:像表格一样具有行和列,每个变量需要行和列的位置才能确定,score,29,在C语言中如何实现?,类型数组名行长度列长度,intarray34,例:floatd35;inta66;chars410;,所有元素都是int,数组名,3行4列注意:必须是常量,30,二维数组的引用,7,第1行,第2列,数组a,a1,2,数组名行下标列下标,31,在定义二维数组时,给元素赋初值,形式1:inta23=1,2,3,4,5,6;,形式2:inta23=1,2,3,4,5,6;,形式3:inta3=1,2,3,4,5,6;,形式4:inta2=1,2,3,4,5,6;,错误!,32,二维数组元素的引用及基本操作数组的赋值for(i=0;iROWS;i+)for(j=0;jCOLS;j+)valueij=i+j;数组的输入for(i=0;iROWS;i+)for(j=0;jCOLS;j+)scanf(“%d”,#defineROWS4#defineCOLS5intvalueROWSCOLS;,33,二维数组元素的引用及基本操作3.数组的输出for(i=0;iROWS;i+)for(j=0;jCOLS;j+)printf(“%4d”,valueij);putchar(n);,#defineROWS4#defineCOLS5intvalueROWSCOLS;,34,例6:判断给定方阵是否为对称矩阵。,35,问题分析对于一个给定的NN矩阵array,如果矩阵中的每个元素都满足arrayij=arrayji,则称这个矩阵为对称矩阵。在判断一个给定的矩阵是否为对称矩阵时,只需要用下三角部分的每个元素与对应的上三角元素进行比较。如果每一对元素都相等,这个矩阵就是对称矩阵,否则,就是非对称矩阵。,36,算法描述,37,#include#defineNUM5/矩阵行列数intmain()intmNUMNUM;/*定义二维数组变量*/inti,j;/*输入矩阵*/printf(Enter%drows%dcolsdatasforthemaxtrix:n,NUM,NUM);for(i=0;iNUM;i+)for(j=0;jNUM;j+)scanf(%d,38,/*判断矩阵是否对称并输出相应的结果*/for(i=0;iNUM;i+)for(j=0;ji;j+)if(mij!=mji)printf(nThematrixisntsymmetrical.);return0;printf(nThematrixissymmetrical.);return0;,39,矩阵转置,40,41,#include#defineROWS2/矩阵行数#defineCOLS4/矩阵列数intmain()intvalue1ROWSCOLS,value2CO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚内财产协议书
- 暑假专项重点提升训练:判断题(含解析)-2024-2025学年西师大版五年级数学下学期
- 图形的轴对称B(含详解)-2024北师大版七年级数学暑假作业
- 新解读《GB-T 5746-2014船用普通矩形窗》
- 人教版八年级数学下册期末测试-含答案03
- 人教版(PEP)四年级英语上册第一单元Unit 1 每课时教学设计汇编(含六个教学设计)
- 老年人用品消毒课件
- 老年人核心健康知识培训课件
- 老年人服务与管理课件
- 老年人急救知识培训教案课件
- 2025广东河源市暨南大学附属第五医院急需紧缺人员招聘117人(第二批)笔试参考题库附答案解析
- 2025江苏航空产业集团有限责任公司人才招聘备考试题及答案解析
- 污水处理站运行记录台账范本
- 2025年消毒供应室业务学习考试试题(附答案)
- 无人机地下结构探测技术-洞察及研究
- 校园基孔肯雅热防控措施课件
- 图像特征提取讲解
- 多彩贵州地方课程课件
- 劳技自制收纳盒课件
- 《管理学基础与实务》 课件全套 曾宪达 第1-11章 管理与管理者- 管理创新
- 2025年复工复产考核试题及答案
评论
0/150
提交评论