【C语言】第六章数组(2)课件

PPT
  • 阅读 46 次
  • 下载 0 次
  • 页数 55 页
  • 大小 275.902 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
【C语言】第六章数组(2)课件
可在后台配置第一页与第二页中间广告代码
【C语言】第六章数组(2)课件
可在后台配置第二页与第三页中间广告代码
【C语言】第六章数组(2)课件
可在后台配置第三页与第四页中间广告代码
【C语言】第六章数组(2)课件
【C语言】第六章数组(2)课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 55
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】【C语言】第六章数组(2)课件.ppt,共(55)页,275.902 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44456.html

以下为本文档部分文字说明:

【C语言】第六章数组(2)6.1怎样定义和引用一维数组6.2怎样定义和引用二维数组6.3字符数组1.定义字符数组2.字符数组的初始化3.怎样引用字符数组中的元素4.字符串和字符串结束标志5.字符数组的输入输出6.字符串处理函数7.字符数组应用举例6.3字符数组用来存放字

符数据的数组是字符数组字符数组中的一个元素存放一个字符定义字符数组的方法与定义数值型数组的方法类似1.定义字符数组charc[10];c[0]=‟I‟;c[1]=‟‟;c[2]=‟a‟;c[3]=‟m‟;c[4]=‟‟;c[5]=‟h‟;c[6]=‟a‟;c[7]

=‟p‟;c[8]=‟p‟;c[9]=‟y‟;1.定义字符数组Iamhappyc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]charc[10]={‟I‟,‟‟,‟a‟,‟m

‟,‟‟,‟h‟,‟a‟,‟p‟,‟p‟,‟y‟};charc[10]={‟c‟,‟‟,‟p‟,‟r‟,‟o‟,‟g‟,‟r‟,‟a‟,‟m‟};2.字符数组的初始化Iamhappyc[0]c[1]c[2]c[3

]c[4]c[5]c[6]c[7]c[8]c[9]cprogram\0c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]chardiamond[5][5]={{‟‟,‟‟,‟*‟},{‟‟,‟

*‟,‟‟,‟*‟},{‟*‟,‟‟,‟‟,‟‟,‟*‟},{‟‟,‟*‟,‟‟,‟*‟},{‟‟,‟‟,‟*‟}};2.字符数组的初始化*\0\0**\0****\0*\0\0例6.6输出一个已知的字符串。解题思路:定义一个字符数组,并用“初始化列表”对其赋以初值用

循环逐个输出此字符数组中的字符3.引用字符数组中的元素#include<stdio.h>intmain(){charc[15]={'I','','a','m','','a','','s','t','u

','d','e','n','t','.'};inti;for(i=0;i<15;i++)printf("%c",c[i]);printf("\n");return0;}3.引用字符数组中的元素例6.7输出一个菱形图。解题思路:定义一个字

符型的二维数组,用“初始化列表”进行初始化用嵌套的for循环输出字符数组中的所有元素。3.引用字符数组中的元素#include<stdio.h>intmain(){chardiamond[][5]={{'','','*'},{'

','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)print

f("%c",diamond[i][j]);printf("\n");}return0;}在C语言中,是将字符串作为字符数组来处理的关心的是字符串的有效长度而不是字符数组的长度为了测定字符串的实际长度,C语言规定了字符串结束标志‟\0‟4.字符串和字符串结束标志字符串常

量定义:用双引号(“”)括起来的字符序列。如:“hello”“Mary”“\\aaa\’\n”存储特点:每个字符串尾自动加一个‘\0’作为字符串结束标志例字符串“hello”在内存中hello\0字符串”

hello”的长度是5,但占内存单元是6个字节’\0’代表ASCII码为0的字符从ASCII码表可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨

别的标志4.字符串和字符串结束标志charc[]={”Iamhappy”};可写成charc[]=”Iamhappy”;相当于charc[11]={”Iamhappy”};4.字符串和字符串结束标志Iamhappy\0charc[10]={

”China”};可写成charc[10]=”China”;从c[5]开始,元素值均为\0只显示printf(”%s”,c);4.字符串和字符串结束标志China\0\0\0\0\0chars4[]={"string!"};或chars4[]="string!";等价于:chars4[8]={‘s

’,’t’,’r’,’i’,’n’,’g’,’!’,’\0’};在字符数组S4中保存了一个字符串charname[2][6]={{”John”},{”Marry”}};charname[][6]={”John”,”Marry”};注意:二维字符数组可以看做是包含多个字符串的一维数组

name数组可以看成包含name[0]、name[1]两个字符串的一维数组。注意:字符数组最常用的功能,就是用它来保存字符串,如保存姓名、地址、班级、专业等等例:charname[20];charaddress[50

];charcountry[10][20];字符数组的输入输出可以有两种方法:逐个字符输入输出(%c)整个字符串一次输入输出(%s)输出的字符中不包括结束符‟\0‟用%s输出字符串时,print

f函数中的输出项是字符数组名,不是数组元素名6.3.5字符数组的输入输出如果一个字符数组中包含多个‟\0‟,则遇第一个‟\0‟时输出就结束可以用scanf函数输入一个字符串scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符

数组的长度6.3.5字符数组的输入输出charc[6];scanf(”%s”,c);China↙系统自动在China后面加一个‟\0‟6.3.5字符数组的输入输出charstr1[5],str2[5],str3[5];scanf(”%s%

s%s”,str1,str2,str3);Howareyou?↙6.3.5字符数组的输入输出How\0\0str1are\0\0str2you?\0str3在C函数库中提供了一些用来专门处理字符串的函数,使用方便6.3.6善于使用字符串处理函数1.pu

ts函数----输出字符串的函数其一般形式为:puts(字符数组)作用是将一个字符串输出到终端charstr[20]=”China”;puts(str);输出China6.3.6善于使用字符串处理函数2.gets函数----输入字符串的函数其一般形式为:gets(字符

数组)作用是输入一个字符串到字符数组charstr[20];gets(str);Computer↙6.3.6善于使用字符串处理函数3.strcat函数----字符串连接函数其一般形式为:strcat(字符

数组1,字符数组2)其作用是把两个字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中6.3.6善于使用字符串处理函数使用字符串函数时,在程序开头用#include<string.h>3.strcat函数----字符串连接函数charstr1[3

0]=”People”;charstr2[]=”China”;printf(”%s”,strcat(str1,str2));输出:PeopleChina6.3.6善于使用字符串处理函数要足够大4.strcpy和strncpy函数-字符串复制strcpy一般形式为:str

cpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串处理函数China\0\0\0\0\0str14.strcpy和strncpy函数-

字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);6.3.6善于使用字符串处理函数Chin

a\0\0\0\0\0str1要足够大4.strcpy和strncpy函数-字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr1[10],str2[]=”China”;st

rcpy(str1,str2);6.3.6善于使用字符串处理函数数组名形式4.strcpy和strncpy函数-字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去charstr1[10],str2[]=”China”;st

rcpy(str1,str2);6.3.6善于使用字符串处理函数数组名或字符串常量4.strcpy和strncpy函数-字符串复制strcpy一般形式为:strcpy(字符数组1,字符串2)作用是将字符串2复

制到字符数组1中去charstr1[10],str2[]=”China”;strcpy(str1,str2);相当于strcpy(str1,”China”);6.3.6善于使用字符串处理函数4.strcpy和strncpy函数-字符串复制ch

arstr1[10],str2[]=”China”;str1=”China”;错误str1=str2;错误6.3.6善于使用字符串处理函数4.strcpy和strncpy函数-字符串复制可以用strncpy函数将字

符串2中前面n个字符复制到字符数组1中去strncpy(str1,str2,2);作用是将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符复制的字符个数n不应多于str1中原有的字符6.3.6善于使用字符串处理函数5.strcmp函数----字符串比较函数其

一般形式为strcmp(字符串1,字符串2)作用是比较字符串1和字符串2strcmp(str1,str2);strcmp(”China”,”Korea”);strcmp(str1,”Beijing”);6.3.6善于

使用字符串处理函数5.strcmp函数----字符串比较函数字符串比较的规则是:将两个字符串自左至右逐个字符相比,直到出现不同的字符或遇到‟\0‟为止如全部字符相同,认为两个字符串相等若出现不相同的字符,则以第一对不相同的字

符的比较结果为准6.3.6善于使用字符串处理函数5.strcmp函数----字符串比较函数”A”<”B””a”>”A””computer”>”compare””these”>”that””1A”>”$

20””CHINA”>”CANADA””DOG”<”cat””Tsinghua”>”TSINGHUA”6.3.6善于使用字符串处理函数5.strcmp函数----字符串比较函数比较的结果由函数值带回如果字符串1=字符串2,则函数

值为0如果字符串1>字符串2,则函数值为一个正整数如果字符串1<字符串2,则函数值为一个负整数6.3.6善于使用字符串处理函数5.strcmp函数----字符串比较函数if(str1>str2)printf(”yes”);错误if(strcmp(str1,str2)>0)print

f(”yes”);正确6.3.6善于使用字符串处理函数6.strlen函数----测字符串长度的函数其一般形式为:strlen(字符数组)它是测试字符串长度的函数函数的值为字符串中的实际长度6.3.6善于使用字符串

处理函数6.strlen函数----测字符串长度的函数charstr[10]=”China”;printf(”%d”,strlen(str));输出结果是5也可以直接测试字符串常量的长度strlen(”China”);6.3.6善于使用字符串处理函数7.strlw

r函数----转换为小写的函数其一般形式为strlwr(字符串)函数的作用是将字符串中大写字母换成小写字母6.3.6善于使用字符串处理函数8.strupr函数----转换为大写的函数其一般形式为strupr(字符串)函数的作用是将字符串中小写字母换成大

写字母6.3.6善于使用字符串处理函数例6.8输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。解题思路:问题的关键是怎样确定“出现一个新单词了”从第1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1,最后得到的nu

m的值就是单词总数6.3.7字符数组应用举例判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num累加1

如果当前字符为非空格而其前面的字符也是非空格,则num不应再累加16.3.7字符数组应用举例用变量word作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1前面一个字符是否空格可以从word的值看出来,若word等于0,则

表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格6.3.7字符数组应用举例当前字符Iamaboy.是否空格否是否否是否是否否否否word原值01011010111新单词开始否是否是否否是否是否否

否word新值10110101111num值11222334444Yc=空格word=0Nword=0Yword=1num++Nif(c=='')word=0;elseif(word==0){word=1;num++;}……charstr

ing[81],c;inti,num=0,word=0;gets(string);for(i=0;(c=string[i])!=„\0‟;i++)if(c==„‟)word=0;elseif(word==0){wo

rd=1;num++;}printf(“%dwords\n”,num);……一定要设初始值……charstring[81],c;inti,num=0,word=0;gets(string);for(i=0;(c=string[i])!=„\0‟;i++)if(c==„‟)word=0;else

if(word==0){word=1;num++;}printf(“%dwords\n”,num);……相当于c=string[i];c!=‘\0’例6.9有3个字符串,要求找出其中最大者。解题思路:设一个二维的字符数组s

tr,大小为3×10。每一行存放一个字符串charstr[3][10];for(i=0;i<3;i++)gets(str[i]);China\0\0\0\0\0str[0]Japan\0\0\0\0\0str[1]India\0

\0\0\0\0str[2]可以把str[0],str[1],str[2]看作3个一维字符数组,可以把它们如同一维数组那样进行处理经过三次两两比较,就可得到值最大者,把它放在一维字符数组string中if(strcmp(str[0],str[1])>0)strcpy

(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);#include<stdio.h>#include

<string.h>intmain(){charstr[3][10];charstring[10];inti;for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(str

ing,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf("\nthelargest:\n%

s\n",string);return0;}

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?