版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础C语言程序设计2016.12第
11讲字符串上一节内容回顾intx[]={4,3,2,1},q;int*p=&x[1];q=(*--p)++;q的值为多少,*p的值为多少?q=4,x[0]=5,*p=5上一节内容回顾inta[4][4];int(*p)[4]=a;
for(i=0;i<2;i++)
for(j=0;j<4;j++)
scanf("%d",(a+i)+j);以下均是合法的地址:*(a+i)+j&a[i][j]a[i]+j*(p+i)+j上一节内容回顾
下面程序的输出结果是?inta[3]={1,2,3};intb[3];int*p,*q,i;for(p=a+2,q=b;p>=a;p--,q++)q=p;for(i=0;i<3;i++)printf(“%d”,*q++);*q=*p;q=b;字符串本讲
要点字符数组指向字符串的指针变量字符串处理函数程序举例字符串字符字符常量用单引号括起来的字符在ASCII表中对应的整数值‘z’代表的是字符z在ASCII表中对应的整数值122字符变量实际上是单字节整型变量,一般存储一个整数表示其在ASCII表中对应的字符字符串字符串作为一个整体的字符序列可以包含字母,数字和特殊字符(*,/,$等)字符串常量用双引号括起来例如:"Hello"字符串在C语言中,字符串是以空字符(’\0’)结束的字符数组字符串与字符数组有区别字符串必须以’\0’结尾字符串从字符数组的第一个元素开始,到第一个’\0’结束字符串的长度和内容都不包括’\0’charname[20];BillGates\0?????????字符串给字符数组的全部元素赋初值chara[5]={‘C’,’h’,’i’,’n’,’a’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘n’‘a’这个字符数组没有以‘\0’结尾,不是字符串字符串给字符数组的部分元素赋初值chara[5]={‘C’,’h’,’i’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘\0’‘\0’缺省的初值为‘\0’字符串给全部元素赋初值时,可以不指定长度chara[]={‘C’,’h’,’i’,’n’,’a’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘n’‘a’依然不是字符串字符串chara[]=“China”;用字符串常量给字符数组赋初值也可以不指定数组长度chara[6]=“China”;a[0]a[1]a[2]a[3]a[4]a[5]‘C’‘h’‘i’‘n’‘a’‘\0’来自字符串常量的结束字符‘\0’。字符串字符串的输入输出有以下方式:逐个字符输入输出%c作为整体一次输入输出%s用字符串输入输出函数getsputs字符串用%c逐个字符的输入输出#include<stdio.h>#defineMAX5voidmain(){intn;charc[MAX];for(n=0;n<MAX;n++)scanf("%c",&c[n]);for(n=0;n<MAX;n++)printf("%c",c[n]);}字符串用%s实现字符串作为整体一次性的输入输出#include<stdio.h>#defineMAX5voidmain(){charc[MAX];scanf("%s",c);printf("Showc:\n");printf("%s",c);}输入和输出项都是数组名在输入时,空格、制表符和换行符都被作为字符串的分隔符,不被读入在输出时,一旦遇到‘\0’就结束字符串用标准库提供的输入输出函数#include<stdio.h>#defineMAX5voidmain(){charc[MAX];
gets(c);printf("Showc:\n");
puts(c);}用gets()输入时,换行符被作为数据的分隔符,不被读入但是,空格和制表符可以被读入puts()在输出字符串后自动换行,即加一个’\n’字符串例.输入一行字符,单词之间用空格隔开,统计其中有多少个单词Iamfrom…\0算法:逐一检测字符,遇到第一个非空格字符即为一个单词的开始,再次遇到空格就表示最新的单词结束定义一个标记变量记住当前字符的前一个字符(最近检测的)是否是空格字符串i=0word=0c=s[i]!=‘\0’c==‘’word=0i++word==0word=1num++NYNYNY定义标记变量word0期待新单词出现1正在检测单词期待单词的结束字符串#include<stdio.h>voidmain(){charc,s[81];inti,num,word;printf("Inputasentence:\n");
gets(s);num=word=i=0;printf("Thereare%dwordsinthissentence.\n",num);}????while((c=s[i])!='\0'){if(c=='')word=0;elseif(word==0){word=1;num++;}i++;}字符串字符串处理库字符串处理库:<string.h>字符串处理函数strcat(string1,string2)字符串连接,结果存在1中strcpy(string1,string2)字符串拷贝from2to1strcmp(string1,string2)字符串比较,相等返回0strlen(string)字符串长(不包括‘\0’)strlwr(string)将字母全小写strupr(string)将字母全大写字符串例.任意输入两个字符串,将它们连接成一个字符串,不使用strcat函数abc\0xyz\0abcxyz\0字符串#include<stdio.h>voidmain(){charstr1[81],str2[81],str[161];inti,j;gets(str1);gets(str2);for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';i++,j++)str[i]=str2[j];
str[i]='\0';printf("\nNow,yougetanewstring:\n%s\n",str);}指针与字符串字符串char*p;p=″WuhanChina″;printf
(”%s”,p);chars[80];s=″WuhanChina″;printf
(”%s”,s);字符串用字符指针指向一个字符串
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。#include<stdio.h>voidmain(){char*p=″WuhanChina″;
printf
(”%s”,p);}p为字符串指针变量,存放的是首字符的地址,不是整个字符串通过移动指针变量,可获得字符串的其他字符字符串对字符串中字符的存取,可以用下标方法,也可以用指针方法字符串例.将字符串a复制为字符串b
#include<stdio.h>voidmain(){chara[]=″Iamaboy.″,b[20];
inti;
for(i=0;*(a+i)!=′\0′;i++)
*(b+i)=*(a+i);*(b+i)=′\0′;//字符串的结束标记for(i=0;b[i]!=′\0′;i++)
printf(″%c″,b[i]);}字符串{chara[]=″Iamaboy.″,b[20],*p1,*p2;
inti;
p1=a;p2=b;
for(;*p1!=′\0′;p1++,p2++)*p2=*p1;*p2=′\0′;printf(″stringais:%s\n″,a);
printf(″stringb
is:″);for(i=0;b[i]!=′\0′;i++)
printf(″%c″,b[i]);}必须保证使指针变量p1和p2同步移动字符串对使用字符指针变量和字符数组的讨论虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈,主要有以下几点:字符串(1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),决不是将字符串放到字符指针变量中。字符串(2)指针变量的值是可以改变的,如:例.改变指针变量的值#include<stdio.h>voidmain(){char*a=″IloveChina!″;
a=a+7;
printf(″%s″,a);}程序举例字符串例.输入一字符串,内有若干个字符,要求程序将字符串中所有非数字和字母删除#include<stdio.h>voidmain(){charstr[81],*p,str2[81],*q;gets(str);for(p=str,q=str2;*p!=‘\0’;p++)if(???)
????;
*q=‘\0’;puts(str2);}if(*p>=‘0’&&*p<=‘9’)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024中国外运华南限公司园招聘20人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国人民财产保险股份限公司毕节分公司招聘理赔人员7人(贵州)易考易错模拟试题(共500题)试卷后附参考答案
- 2024中信证券浙江分公司钱江校园招聘50人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上海磁浮交通发展限公司招聘150人易考易错模拟试题(共500题)试卷后附参考答案
- 《城域网建设及应用》课件
- 癌症的中医思路课件
- 2024年度美欧达电热水器区域代理加盟协议
- 2024年度电梯应急照明系统安装合同
- 2024年度新型农业经营主体贷款担保合同
- 银行营业场所安全管理制度
- 展览馆陈列展柜制作施工方案及施工工艺方法
- 鱼类洄游(总)详细版课件
- 学会换位思考-共建和谐人际关系课件
- 2020年华医网继续教育学习 坚定职业信仰,改善医疗服务试题及答案
- YB∕T 5308-2011 粉末冶金用还原铁粉
- 小学数学专题讲座:小学数学计算能力的培养知识讲稿课件
- 西格斯雾化器操作维护课件
- 硫酸密度、浓度对照表
- 相似三角形的应用举例课件
- 呼吸机使用考试题及答案
- 关联词专题复习课件
评论
0/150
提交评论