




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础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-2025学年数学三下期末经典模拟试题含解析
- 辽宁省新宾县联考2024-2025学年初三四模英语试题试卷含答案
- 西藏省重点中学2025年中考语文试题5月冲刺题含解析
- 江西应用工程职业学院《医疗器械注册与质量管理》2023-2024学年第一学期期末试卷
- 吉林工程技术师范学院《医学昆虫学》2023-2024学年第一学期期末试卷
- 江西2025年数学三下期末达标检测模拟试题含解析
- 四川西南航空职业学院《家具展示设计》2023-2024学年第二学期期末试卷
- 昆山登云科技职业学院《冶金学术基础英语》2023-2024学年第一学期期末试卷
- 郑州旅游职业学院《通信工程专业导论》2023-2024学年第一学期期末试卷
- 开封大学《学前儿童社会活动设计与指导》2023-2024学年第二学期期末试卷
- 微观经济学(山东大学)知到智慧树章节测试课后答案2024年秋山东大学
- 2024年司法考试刑法真题及答案
- 2023“原理”练习题题库
- 2024年高考真题-政治(江苏卷) 含答案
- 文勘土方施工方案
- 港航实务 皮丹丹 教材精讲班课件 52-第2章-2.5.3-铺面面层施工-2.5.4-铺面连接施工-2.5.5-堆场构筑物施工
- 危险品仓储危险品贮运车辆考核试卷
- 中国超级计算行业市场运行态势及发展趋向研判报告
- 小学数学小专题讲座《数学教学生活化-》
- 高校元宇宙实验室建设与运营方案
- DB1331-T 067-2023 用户配电室安全管理规范
评论
0/150
提交评论