版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第12讲 字符数组,教学目的与要求: 掌握字符数组元素的定义和初始化 掌握字符数组的输入输出及字符串处理函数 掌握数组应用程序设计 教学内容提要: 1. 字符数组的定义和初始化 2. 字符数组和字符串的输入输出 3. 字符串处理函数 4. 数组应用举例 教学重点:字符数组元素定义和初始化,字符数组的输入输出 教学难点:数组应用程序设计 教学进度:P151P166 教学过程:,2,一、字符数组的初始化,字符数组的赋值要符合数组的要求,除了在定义时初始化可以用字符串赋初值,其余只能一个元素一个元素地赋值。,(1). 逐个元素初始化,如:,例 char s17=s,t,r,i,n,g,!; ch
2、ar s2 =s,t,r,i,n,g,!;,1)一维字符数组初始化,3,(2). 用字符串来直接初始化字符数组 可直接把字符串写在花括号中来初始化字符数组 如:char ch=“student”;,几点说明: ()字符串结束标志0仅用于判断字符串是否结束,输出字符串时不会输出。 ()在对有确定大小的字符数组用字符串初始化时,数组长度应大于字符串长度。如: char s7=student;是错误的. ()在初始化一个一维字符数组时,可以省略花括号。如: char s8=student; ( 4 )不能直接将字符串赋值给字符数组。下面的操作是错误的。 s=”student”;,系统将双撇号括起来的
3、字符依次赋给字符数组的各个元 素, 并自动在末尾补上字符串结束标志字符0。,4,2)二维字符数组初始化,二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式,例: char name210=J,o,h,n,0, M,a,r,r,y,0; char name210=”John”,”Marry”; char name210=”John”,”Marry”;,这三种方法效果一样。,5,二、字符数组的输入与输出,1)利用格式符%c逐个输入、输出字符:,例:char str10; int i; for ( i=0; i9; i+ ) scanf(%c,,2)利用格式符%s,可以一次输
4、入、输出字符串。,%s:遇第一个空白符(空格、Tab、回车)结束输入, 遇第一个0结束输出。,6,注意:,用“%s”格式输出字符数组时,遇0结束输出,且输出字符中不包含0。若数组中包含一个以上0,则遇第一个0时即结束输出。,用“%s”格式输入或输出字符数组时,函数scanf的地址项、函数printf的输出项都是字符数组名。这时数组名前不能再加“ gets(a); printf( %s ,a);,10,b) 字符串输出函数puts( ) 作用:将一个字符串(以0结束的字符序列)输出。 格式:puts(字符数组名); 或 puts(字符串);,注意: 函数puts( )一次只能输出一个字符串。 函
5、数puts( )可以输出转义字符。 函数puts( )输出字符串后自动换行。,11,例2:将字符串s1从第m个字符开始剩余的所有字符,送入字符数组s2中。,#include stdio.h void main() int i,j,m; char s180,s280; printf(input a string:n); gets(s1); printf(input start point:n); scanf(%d,后,a:,19,例5:字符串的连接。,#include void main() char s120=”123”,s2=”abcedf”; char s320; s3=strcat(s1
6、,s2); puts(s1); puts(s2); puts(s3); ,程序运行结果: s1=123abcdef s2=abcdef s3=123abcdef,20,4. 字符串比较函数,引用形式:strcmp(字符串1,字符串2) 作用:从左到右逐个比较两个字符串s1、s2中各个字符(用字符的ASCII码比较),直到出现不同字符或遇到结束标记为止。,21,例如: strcmp( d , abc ) 结果为正整数。 strcmp( dog , door ) 结果为负整数。,函数返回值:,函数值=,0 当串1=串2,负整数 当串1串2,正整数 当串1串2,函数应用举例,22,例5:输入三个字符
7、串,按英文字母序排列后输出。,include void main() char s110=China,s210=America,s310=Japan,t10; if(strcmp(s1,s2)0) strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t); if(strcmp(s2,s3)0) strcpy(t,s2);strcpy(s2,s3);strcpy(s3,t); puts(s1); puts(s2); puts(s3); ,程序输出结果: America China Japan,23,例6:比较用户输入的字符串是否为表示同意的yes(用户可以用大写或小写)。,
8、#include string.h #include stdio.h void main() int k; char s15,s2=yes; printf(input a string:n); gets(s1); k=0; while(s1k!=0) if(s1k=A if(strcmp(s1,s2)!=0) printf(st1!=st2n); else printf(st1=st2n); ,程序运行情况: input a string: Yes st1=st2,24,四、数组程序设计举例,例1、判断一个字符串是否是回文(回文串指正度反读都一样的字符串,如:字符串“abc121cba”),#
9、include string.h “ #include “stdio.h” main() char a10; int i,j,n,f=1; gets(a); n=strlen(a); for(i=0, j=n-1;ij; i+,j-) if(ai!=aj) f=0;break; if(f=1) printf( yes ); ,25,图6.1,例2、用起泡法对5个数排序(由小到大)。 起泡法的思路是:将相邻两个数比较,将小的调到前头。,26,main() int a5; int i,j,t; printf(input 5 numbers :n); for (i=0;iai+1) t=ai;ai=
10、ai+1;ai+1=t; printf(the sorted numbers :n); for(i=0;i5;i+) printf(“%d t,ai); ,27,运行情况如下: input 5 numbers: 65 -76 100 -45 123 the sorted numbers: -76 -45 65 100 123,28,例3:把一个整数x按大小顺序插入已排好序(从大到小)的数组a中。假设数组a中有10个数。,(1)把欲插入的数x与数组a中各数逐个比较,当找到第一个比插入数x小的元素ai时,该元素之前即为插入位置。 (2)从数组最后一个元素开始到ai元素为止,逐个后移一个单元。 (3
11、)把插入数x赋予元素ai即可。如果被插入数比所有的元素值都小则插入最后位置。,29,#includestdio.h main() int i,s,x,a11=162,127,105,87,68,54,28,18,6,3; printf(input number x:); scanf(%d,&x); for(i=0;iai) for(s=9;s=i;s-) as+1=as; break; ai=x; for(i=0;i=10;i+) printf(%d ,ai); ,30,例4:输入五个人的姓名,按字母顺序排列输出。,#includestring.h #includestdio.h void main() char st20,name520; int i,j,p; printf(input peoples name:n); for(i=0;i5;i+) gets(namei); for(i=0;i5;i+) for(j=i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川成都超德创科技有限公司招聘179人笔试参考题库及答案解析
- 2026年城市燃气管网智能化升级与安全监控方案
- 2026年体育课堂AI动作捕捉与分析案例
- 2025-2026学年特殊教育教学教案
- 2026安徽寿州控股集团有限公司人才引进11人笔试备考题库及答案解析
- 2026年城旅融合型全域旅游发展规划设计
- 2026年新干县妇幼保健院托育综合服务中心招聘编外托育教师6人笔试模拟试题及答案解析
- 2026年测试题模拟试题:儿科护理学测试题模拟及答案
- Lesson 1教学设计小学英语一年级下册人教版(新起点)
- 1.2 直角三角形的性质和判定Ⅱ(第3课时) 教学设计 湘教版八年级数学下册
- 公司履约保函管理制度
- 数字化转型战略规划纲要
- 国家安全教育大学生读本课件高教2024年8月版课件-第四章坚持以人民安全为宗旨
- 数字化全过程成本管理
- 二级烟草专卖管理师理论考试题库
- 2024年全国中学生生物学联赛试题含答案
- DL∕T 5157-2012 电力系统调度通信交换网设计技术规程
- DL∕T 1795-2017 柔性直流输电换流站运行规程
- 2024年湖南省中考数学真题试卷及答案解析
- 五年级下册劳动教案完整版
- 改变碳纤维复合材料手工钻孔缺陷
评论
0/150
提交评论