武汉大学C课件第09讲(05级).ppt_第1页
武汉大学C课件第09讲(05级).ppt_第2页
武汉大学C课件第09讲(05级).ppt_第3页
武汉大学C课件第09讲(05级).ppt_第4页
武汉大学C课件第09讲(05级).ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第九讲,Begin:,第六章 数组,字符数组,一、字符数组的定义,字符数组:用来存放字符型数据的数组。,格式: char 数组名常量表达式, ; char 数组名常量表达式1常量表达式2,,注意:,字符数组的定义、引用、初始化遵循 “数组”的规定。,6.3.1 字符数组的定义、初始化和引用,在字符数组中,每一个元素只能存放一个字符。,例: char a10,b30; char s1020,h20100;,二维字符数组,可以看作是一个字符串数组。,6.3.1 字符数组的定义、初始化和引用,二、字符数组的初始化,字符数组的赋值要符合数组的要求,除了在定义时初始化可以用字符串赋初值,其余只能一个元素一个元素地赋值。,1)给所有元素赋初值:,例 char s17=s,t,r,i,n,g,!; char s2 =s,t,r,i,n,g,!;,1、一维字符数组初始化,6.3.1 字符数组的定义、初始化和引用,例 char s38=s,t,r,i,n,g,!,0; char s48=“string!“; char s58=“string!“;,C语言中,规定了一个“字符串结束标记”,以字符0代表。,说明:,6.3.1 字符数组的定义、初始化和引用,在字符数组中,并不要求它最后的一个字符为“0”,也可以没有“0”。,例:char s5=“China”; 也是合法的,字符串在实际存储时,系统会自动的在其尾部添加一个结束标志0。,0代表ASCII码为0的字符,是一个空操作符,表示什么也不干。,6.3.1 字符数组的定义、初始化和引用,2)给部分元素赋初值: 例:char s19=C,h,i,n,a,!; char s29=C,h,i,n,a,!,0; char s39=”China!”; char s49= “China!”;,6.3.1 字符数组的定义、初始化和引用,2、二维字符数组初始化,二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式,例: char name210=J,o,h,n,0, M,a,r,r,y,0; char name210=”John”,”Marry”; char name210=”John”,”Marry”;,这三种方法效果一样。,6.3.1 字符数组的定义、初始化和引用,1.利用格式符%c逐个输入、输出字符:,例:char str10; int i; for ( i=0; i9; i+ ) scanf(“%c“,,6.3.2 字符数组的输入输出,2.利用格式符%s,可以一次输入、输出字符串。,例: char str10; scanf(“%s“,str ); printf(“%sn“, str );,%s:遇第一个空白符(空格、Tab、回车)结束输入, 遇第一个0结束输出。,输入:program 输出:program,6.3.2 字符数组的输入输出,例: char s110, s215; scanf(“%s%s“,s1,s2 ); printf(“%s %sn“, s1,s2 );,输入:program C 输出:program C,输入:How are you 输出:How are,scanf函数虽然给多个字符的输入提供了简便的方法,但对于有空格的字符串的输入却有限制。,6.3.2 字符数组的输入输出,注意: scanf函数参数要求的是地址,故直接用字符数组名进行操作。 字符数组名表示的是该数组的首地址,因此使用格式符%s可以实现字符串整体的输入和输出。,3.利用字符串输入输出函数,C语言要求在使用字符串函数时,要包含头文件stdio.h,1、字符串输入函数gets( ); 作用:是将一个字符串输入到字符数组中,当遇到第一个回车时结束输入 格式:gets(字符数组名);,gets( )函数同scanf( )函数一样,在读入一个字符串后,系统自动在字符串后加上一个字符串结束标志0。,6.3.2 字符数组的输入输出,注意: 函数gets( )只能一次输入一个字符串。 函数gets( )可以读入包含空格和TAB的全部字符,直到遇到回车为止。,使用格式符“%s”的函数scanf( ),以空格、TAB或回车作为一段字符串的间隔符或结束符,所以含有空格或TAB的字符串要用gets( )函数输入。,6.3.2 字符数组的输入输出,例:函数gets( )与scanf( )的区别,#include main( ) char str120,str220; gets(str1); scanf(“%s“,str2); printf(“str1: %sn“,str1); printf(“str2: %sn“,str2); ,输出:str1: program C str2: program,6.3.2 字符数组的输入输出,2、 字符串输出函数puts( ) 作用:将一个字符串(以0结束的字符序列)输出。 格式:puts(字符数组名); 或 puts(字符串);,6.3.2 字符数组的输入输出,注意: 函数puts( )一次只能输出一个字符串。 函数puts( )可以输出转义字符。 函数puts( )输出字符串后自动换行。,printf( )函数可以同时输出多个字符串,并且能灵活控制是否换行。所以printf( )函数比puts( )函数更为常用。,6.3.2 字符数组的输入输出,例:函数puts( )与printf( )的区别,#include main( ) char str1 =“student“,str2 =“teacher“; puts(str1); puts(str2); printf(“%s“,str1); printf(“%sn%s“,str1,str2); ,6.3.2 字符数组的输入输出,C语言提供了很多字符串操作函数,其对应的头文件为,1 测字符串长度函数strlen 引用形式:strlen(字符数组) 作用:strlen( )是测试字符串实际长度的函数,它的返回值是字符串中字符的个数(不包含0的个数)。,6.3.3 字符串处理函数,例: char str12=“computer”; printf(“%d”,strlen(str); printf(“%d”,strlen(“computer”);,输出的结果都是8,6.3.3 字符串处理函数,例:函数strlen( )的使用。,#include #include main() int i; char str120,str220; gets(str1); gets(str2); for(i=0;str2i!=0;i+); printf(“%s : %dn“,str1,strlen(str1); printf(“%s : %dn“,str2,i); printf(“%s : %dn“,“Good luck“,strlen(“Good luck“); ,输出:Good luck:9 Good luck:9 Good luck:9,这两句的功能等同于函数strlen( ),i 返回串长,6.3.3 字符串处理函数,2字符串拷贝函数strcpy 引用形式:strcpy(字符数组1,字符串2) 作用:将字符串2复制到字符数组1中。,注意: (1) 字符数组1必须足够大,以便容纳字符串2的内容。 (2) 字符串2可以是字符数组名或者字符串常量。当字符串2为字符数组名时,只复制第一个0前面的内容(含0),其后内容不复制。,6.3.3 字符串处理函数,例:函数strcpy( )的使用。,main( ) int i; char str120,str2 =“Good luck“; char str320,str4 =“Good luck“; strcpy(str1,str2); for (i=0;str4i!=0;i+) str3i=str4i; str1i=0; printf(“str1: %st str2 : %sn“,str1,str2); printf(“str3: %st str4 : %sn“,str3,str4); ,输出: str1:Good luck str2:Good luck str3:Good luck str4:Good luck,这两句的功能等同于函数strcpy( ),6.3.3 字符串处理函数,3字符串连接函数strcat 引用形式:strcat(字符数组1,字符串2) 作用:将字符串2的内容复制连接在字符数组1的后面,其返回值为字符数组1的地址。,注意: (1)字符数组1不能是字符串常量,并且必须足够大,以便可以继续容纳字符串2的内容。 (2)连接前字符数组1的0将被字符串2覆盖,连接后生成的新的字符串的最后保留一个0。,6.3.3 字符串处理函数,#include main( ) char str112=“Good ”; char str2 =“luck!”; printf(“%s”,strcat(str1,str2); ,例:函数strcat( )的使用。,其状态如下:,输出: Good luck!,6.3.3 字符串处理函数,4字符串比较函数strcmp 引用形式:strcmp(字符串1,字符串2) 作用: 比较字符串1和字符串2。两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),直到字符不同或者遇见0为止。 如果全部字符都相同,则返回值为0。如果不相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。,6.3.3 字符串处理函数,例:函数strcmp( )的使用。,main( ) char str1 =“abc“,str2 =“abc“; char str3 =“abc“,str4 =“abc“; int i=0; while(str3i=str4i ,输出: str1&str2: 0 str3&str4: 0,这两句的功能等同于函数strcmp( ),6.3.3 字符串处理函数,5 strlwr(字符串) strlwr( )的作用是将字符串中大写字母转换成小写字母。,6 strupr(字符串) strupr()的作用是将字符串中小写字母转换成大写字母。,大小写转换函数:,6.3.3 字符串处理函数,例:编写用户登录程序,#include “string.h“ main( ) char username10, name10=“zhangsan“; gets( username ); if ( strcmp(username,name) ) printf(“ Username are wrong !n“); else printf(“You are right !n“); puts( username ); ,6.3.4 字符数组应用实例,例:有3个英文字符组成的字符串,要求按照英文字母顺序输出。,#include main( ) char name320=“John“,“Jan“,“Anny“; char str20; int i; for(i=0;i0) strcpy(str,name0); strcpy(name0,name1); strcpy(name1,str); ,6.3.4 字符数组应用实例,if (strcmp(name0,name2)0) st

温馨提示

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

评论

0/150

提交评论