高中信息竞赛字符数组及字符串

上传人:kfc****89 文档编号:243557129 上传时间:2024-09-25 格式:PPT 页数:27 大小:318KB
返回 下载 相关 举报
高中信息竞赛字符数组及字符串_第1页
第1页 / 共27页
高中信息竞赛字符数组及字符串_第2页
第2页 / 共27页
高中信息竞赛字符数组及字符串_第3页
第3页 / 共27页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,字符数组与字符串,字符数组,用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。,一、字符数组的定义,char 数组名常量表达式;,char c4; /*每个元素占一个字节 */,c0=I; c1=m; c2=_;,类型,数组名,数组大小,二、字符数组的初始化,与数值数组的初始化相同,取其相应字符的ASCII值。,char c10=I, , a, m, , a, , b, o, y;,随机,y,o,b, ,a, ,m,a, ,I,c,c0,c9,如果字符个数大于数组长度,做错误处理;如果数值个数小于数组长度,后面的字节全部为0。,如果省略数组长度,则字符数即为数组长度。,char c =I, , a, m, , a, , g, i, r,l;,同理,也可定义和初始化一个二维或多维的字符数组。分层或省略最后一维。,char st1 =65, 66, 68;,A,B,D,三、字符数组的引用,int main( ), char c10=I, , a, m, , a, , b, o, y;,int i;,for (i=0; i10; i+),coutci;,cout“n”;,定义,输出,四、字符串和字符串结束标志,C+语言将字符串作为字符数组来处理。,字符串常量:“CHINA”,在机内被处理成一个无名的字符型一维数组。,C,H,I,N,A,0,C+语言中约定用0作为字符串的结束标志,它占内存空间,但不计入串长度。有了结束标志0后,程序往往依据它判断字符串是否结束,而不是根据定义时设定的长度。,字符串与字符数组的区别:,char a =C,H,I,N,A;,char c =“CHINA”;,随机,随机,A,N,I,H,C,长度占5个字节,随机,0,A,N,I,H,C,长度占6个字节,字符数组,字符串,可以用字符串的形式为字符数组赋初值,char c =“I am a boy”; /*长度11字节,以0结尾 */,char a =I, , a, m, , a, , b, o, y;,/* 长度10字节 */,如果数组定义的长度大于字符串的长度,后面均为0。,char c10=“CHINA”;,0,0,0,0,0,A,N,I,H,C,c,0的ASCII为0,而 (空格)的ASCII为32。,char w =T, u, r, b, o, 0;,T,u,r,b,o,0,char w =“Turbo0”;,T,u,r,b,o,0,char w =“Turbo0”;,T,u,r,b,o,0,char w =Turbo0;,非法,char a25=“abcd”, “ABCD”;,a,b,c,d,0,A,B,C,D,0,在,语句中,字符数组不能用赋值语句,整体赋值,。,char str12;,str=“The String”;,str为字符数组在内存中存储的地址,一经定义,便成为常量,不可再赋值。,char str12=“The String”;,非法,在语句中赋值,定义数组,开辟空间时赋初值,字符数组的输入输出,逐个字符的输入输出。这种输入输出的方法,通常是使用循环语句来实现的。如:,char str10;,cout“输入十个字符:”;,for(int i=0;istri;/A,.,A行将输入的十个字符依次送给数组str中的各个元素。,定义,赋值,把字符数组作为字符串输入输出。对于一维字符数组的输入,在cin中仅给出数组名;输出时,在cout中也只给出数组名。,int main (void ),char s150,s260;,cout s1;,cin s2;,cout “n s1 = “ s1;,cout “n s2 = “ s2 “n”;,输入:abcd,string,cin只能输入一个单词,不能输入一行单词。,数组名,数组名,输出到0为止,当要把输入的一行作为一个字符串送到字符数组中时,则要使用函数cin.getline( )。这个函数的第一个参数为字符数组名,第二个参数为允许输入的最大字符个数。,cin.getline(数组名, 数组空间数);,char s180;,.,cin.getline(s1, 80);,首先开辟空间,参数是数组名,int main (void ), char s381;,cout”输入一行字符串:”;,cin.getline(s3,80);/A,cout”s3=”s3=a&si=A&si=Z)&word=0),word=1;,num+;,else if(si= ),word=0;,i+;,coutnum=numendl;,表明前一字符非字母,改变状态,防止继续对下一字母计数,改变状态,碰到下一个字母时开始计数,六、字符数组处理函数,C中没有对字符串变量进行赋值、合并、比较的运算符,但提供了许多字符串处理函数,用户可以调用 #include ,所有字符串处理函数的实参都是字符数组名,1、合并两个字符串的函数 strcat (str1, str2),char str120=“I am a ”;,char str2 =“boy”;,strcat (str1, str2);,I,a,m,a,0,0,b,o,y,0,I,a,m,a,b,o,y,0,将第二个字符串 str2 接到第一个字符串 str1 后。,注意:第一个字符串要有足够的空间。,空间足够大,2、复制两个字符串的函数 strcpy (str1, str2),char str120=“I am a ”;,char str2 =“boy”;,strcpy (str1, str2);,0,0,a,m,a,I,str1,0,y,o,b,str2,0,0,a,0,y,o,b,str1,strcpy ( str1, “CHINA”);,0,A,N,I,H,C,str1,strcpy (“CHINA”, str1);,str1=str2;,str1=“CHINA”;,字符串正确赋值,均为非法,3、比较两个字符串的函数 strcmp (str1, str2),此函数用来比较str1和str2中字符串的内容。函数对字符串中的ASCII字符逐个两两比较,直到遇到不同字符或0为止。函数值由两个对应字符相减而得。,该函数具有返回值,返回值是两字符串对应的第一个不同的ASCII码的差值。,若两个字符串完全相同,函数值为0。,if ( strcmp (str1, str2)=0), . ,用来判断两字符串是否相等,char str120=“CHINA”;,char str2 =“CHINB”;,cout strcmp (str1, str2)endl;,输出:-1,char str120=“CHINA”;,char str2 =“AHINB”;,coutstrcmp (str1, str2)endl;,输出:2,if (str1= =str2) cout“yesn”;,if (strcmp (str1,str2)= =0) cout“yesn”;,非法,正确,4、求字符串长度的函数 strlen (str1),长度不包括0。,函数参数为数组名,返回值为数组首字母到0的长度。并非数组在内存中空间的大小。,char s80;,strcpy(s, “abcd”);,coutstrlen(s)endl;,输出: 4,0,0,a,0,y,o,b,str1,输出: 3,coutstrlen(str1)endl;,coutsiziof(s)endl;,输出: 80,char str120=“CHINA”;,coutstrlen (str1)endl;,输出:5,char sp =“x69082”;,coutstrlen (sp)endl;,输出:6,char sp =“tv0willn”;,coutstrlen (sp)endl;,输出:3,char str120=“a book”;,coutstrlen (str1)endl;,输出:1,5、 strlwr (str1),将str1中的大写字母转换成小写字母。,6、 strupr (str1),将str1中的小写字母转换成大写字母。,7、函数strncmp(字符串1,字符串2 , maxlen),函数原型为:,int strncmp(char str1 , char str2 ,int m),第三个参数为正整数,它限定了至多比较的字符个数,若字符串1或字符串2的长度小于maxlen的值时,函数的功能与strcmp( )相同。,当二个字符串的长度均大于maxlen的值时,maxlen为至多要比较的字符个数。,coutstrncmp(“China”,“Chifjsl;kf”,3)n;,输出:0,第三个参数为正整数,它限定了至多拷贝的字符个数,若字符串2的长度小于maxlen的值时,函数的功能与strcpy( )相同。,当字符串2的长度大于maxlen的值时,maxlen为至多要拷贝的字符个数。,8、函数strncpy(字符数组名1, 字符串2, maxlen),函数原型为:,void strncmp(char str1 , char str2 ,int m),char s90,s190;,strncpy(s,abcdssfsdfk,3); /A,strncpy(s1,abcdef , 90);/B,coutsendl;,couts1endl;,输出:abc,输出:abcdef,注意,二字符串之间不能直接进行比较, 赋值等操作, 这些操作必须通过字符串函数来实现。,空间足够大,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!