一维字符数组教学用.ppt_第1页
一维字符数组教学用.ppt_第2页
一维字符数组教学用.ppt_第3页
一维字符数组教学用.ppt_第4页
一维字符数组教学用.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1,第10章 字符串,内容 一维字符数组 一维数组与指针 字符串的输入与输出 字符串数组的应用,2,1 字符数组,一级字符数组的定义 char 数组名下标表达式;,例: char a6 =“china“; char b6 = “china“; char c = “china“;,注: 以字符串方式赋值时,必须保证数组元素个数大于字符数 数组元素个数字符个数+1,6,结束符,3,2 字符数组的引用,一维数组的引用:数组名下标表达式 二维数组的引用:数组名行下标表达式列下标表达式,#include main() char c15; char c255; c10=a; c11=b; c201=A; c211=B; printf(“%c,%c,%c,%cn“,c10,c11, c201,c211); getch(); ,c20, c21); 行地址,4,2、使用字符串常量给字符数组赋初值,C语言将字符串作为字符数组来处理,即,用一个一维 数组来存放一个字符串。 如,用c100存放字符串“store“ 字符串长度用字符串结束标志(即0)衡量。即遇到字 符0时, 表示字符串结束,注意: static char c10; 则c0,c1,c9初值均为0 但若char c10; 则c0,c1,.,c9的值是未知的,char d33= ,*, ,*, ,*, , *, ;,5,例: 字符数组的输入与输出 #include int main ( ) char c6 ; for(int i=0;i6;i+) scanf(“%c”, ,6,4、字符数组的输出,1、逐个字符形式输出:,A)printf(“%c%c%c%c%c “,a0,a1,a2,a3,a4); B)for ( i = 0; ai!=0; i+) putchar ( ai );,2、以字符串形式输出:,例:char a100 = “china“; printf (“%s”, a ); 对于%s,无论数组元素有多少只要遇到0便结束,数组名 (首地址),7,注:与%s对应的是地址。对一维,数组名就是地址,对二维数组,只写行下标时是地址 如上例中的 star0,star1,,例2:char star34 = “*“, “*“, “*“; printf (“%sn%sn%sn“, star0, star1, star2 );,行首地址,例3:char a5 = c, h, i, n,a; printf (“%s“, a );,结果为: * * *,a0 不能输出数组元素名,8,例:while (c=getchar()!=n) ai+ = c;,例:scanf (“%s“, a );,注:用%s输入时,遇空格便结束输入,四、字符数组的输入,1、以字符形式输入:,2、以字符串形式输入:,例:char str15, str25, str35; scanf ( “%s%s%s“, str1, str2, str3);,数组名 (地址),计划: how are you?Hello word!Thank you!,str1 str2 str3,9,5、字符串处理函数,1、gets (a) scanf ( “%sn”,a),从键盘读入一个字符串(以回车结束)放到数组中,函数值是字符数组的起始地址,2、puts (字符数组名),将数组中的字符串输出到终端上,并输出一个换行符。,puts ( str ) 与 printf ( “%sn”, str) 等价,允许输入空白,#include #include ,必须是以0结束的字符序列,10,例:10-11b #include #include int main( ) char c; gets(c ); puts(c); return 0; ,/*例:*/ #include #include int main( ) char c=china; puts(c); return 0; ,11,3、strcmp(字符串1,字符串2),比较两个字符串(ASCII码)的大小, 结果: 字符串1 字符串2时 正数 字符串1 = 字符串2时 0 字符串1 字符串2时 负数,例: x = strcmp (“abc“, “ABC“); y= strcmp (“AX“, “AX“); z= strcmp (“123“, “456“);,两个字符串比较大小,不能用关系运算,即对字符串的比较、拷贝、连接 都必须用函数!,例: str1= =str2 () strcmp(str1,str2)= =0 (),12,4、strcpy (字符数组1, 字符串常量/字符数组2),将字符串或字符数组2中的字符串拷贝到字 符数组1中。,注: (1) 字符数组1的长度字符串/字符数组2中字符串的长度+1。 (2) 拷贝时连同0一起拷贝,scanf (“%s“, s1); strcpy (s2, s1);,S1:,S2:,13,5、strcat (字符数组1, 字符串常量/字符数组2),将字符串或字符数组2连接到字符数组1的字符串的后面,并存放在字符数组1中,Str1:,Str1:,Str2:,strcat ( str1, str2);,14,其他函数: strncpy(str1, str2, n) 最多复制n个字符 strncat(str1, str2, n) 最多将n个字符连接到str1中 strncmp(str1, str2, n) 只比较前n个字符 stricmp(str1, str2) 比较时忽略大小写 strnicmp(str1, str2, n) 只比较前n个字符, 忽略大小写 (见string.h),例: char c120,ch20; gets(ch); strcpy(c1,ch); puts(ch); puts(c1);,若输入:I am a student. 则输出:I am a student. I am a student.,strncpy(c1,ch,6);,I am a,15,6、strlen (字符数组名/字符串常量),返回字符串的长度(不包括结束符0),例 :strlen (“china“) 值为5,7、strlwr (字符串) 将字符串中大写字母转换成小写字母,8、strupr (字符串) 将字符串中小写字母转换成大写字母,自己练习这三个函数的用法,16,10.4.6 字符数组应用举例,例1字符串排序,要求输入5个学生的名字,按字母升序输出: int main() char name510,buff100; int i,j,k,n=0; for(i=0;i10) printf(“the length of the name is larger than 10n”); continue; strcpy(namei,buff); ,for (j=0;j0) k=I; if(k!=5-j) strcpy(buff,namek); strcpy(namek,name5-j); strcpy(name5-j,buff); for(i=0;i5;i+) printf(“%sn”,namei); return 0; ,17,补充例2:任输入一行字符,统计其中有多少个单词(以空格分隔)。,算法: 输入字符串; 找第一个非空字符; 计数; 跳过本单词,即寻找空格或0; 未结束则转; 否则打印个数。,输入: -We-are-students.,18,/*10-8 a 输入一行字,统计其中有多少个单词,单词间是空格分开*/,#include void main ( ) char c; int i = 0 ,num = 0 ,word=0; char str81; gets ( str ); for(i=0;(c=stri)!=0;i+) if ( c = ) word=0; else if(word=0) word=1; num+; printf (“共 %d 个单词n“, num); ,书例P139 算法1: 1.空格决定单词数目,空格不 是单词word=0 2.如果字符为非空格,前面 是空格,则一个单词出现 word=1,num+ 3. 如果word=1,c!= ,说明还是 刚才单词的字符,num不累加,19,/*10-8 算法2:输入一行字,统计其中有多少个单词,单词间是空格分开*/ #include void main (

温馨提示

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

评论

0/150

提交评论