专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测

| 41页
| 1人阅读
| 0人下载
精品

内容正文:

考纲讲练测 AI职教 zhijiao.xkw.com 专题10字符数组的定义及引 用 山东省春季高考软件与应用技术类 得岗明本号到为山乐有身德、)界作等指用校术典《得寓得序会计用积号的场得》。产售 程■山质量看零专散件与用技术是专业号试关明(C得■理传设计分》国写。精在对标重用强周度点 是年其准位期.等表进这量量量交重静.然习三大纪装表学文特,些身九大装心乌节1专树接.进进 号海织植进,这其节,有想横树凯、望越均,进业小三立地,每这产修一感一雕国 县此数修与复更典,处力生女高层铺量自点, A职教 zhijiao.xkw.com 酮 考点解读 考纲要求 掌握字符数组的定义及引用 考查重点 定义与初始化、八0'结束标志 %s/gets/puts的整体输入输出 strlen、strcpy、strcat、strcmp 考情分析与循环、数组结合紧密,选择、读程序题中常见 AI职教 zhijiao.xkw.com 鼠 思维导图 ·char数组名[常量表达式] 数组的定义 每个元素占1个字节 元素存字符或ASCII码值 下标0~长度减1,越界不检查 字符串以10'(ASCII0)结束 字符串与八0 ·字符串常量长=字符数+1 '0'的值是48,不是结束标志 字符数组 ·没有八0'就不是字符串 的定义及引用 ·逐字符用花括号赋值 直接写字符串常量最省事 数组的初始化 省略长度=字符数+1 ·未赋值的元素一律为10 ·scanf("%s",s)不加& %s、puts遇10'就停 输入输出与函数 gets只以回车结束、可含空格 strlen strcpy strcat/strcmp AI职教 zhijiao.xkw.com 知识梳理 从数值数组到字符数组 维数组与字符数组的区别 比较项 数值数组 字符数组 ·前面数组装的是数值 元素类型 int、float 只有char ·文字也要成批处理 每个元素4或8字节 1个字节 ·C没有字符串类型 定义示例 int a[10]; char s[10]; ·字符串靠字符数组存放 存放内容 数值 字符、字符串 ·元素类型固定为char 典型问题 求和、最值 串长、比较 AI职教 zhijiao.xkw.com 知识梳理 字符数组的定义形式 程序段:几种合法的字符数组定义 char s[6]; /*6个元素*/八 ·char数组名[常量表达式]: char s1[10]; /*10个元素*/ ·与一维数组的写法相同 /*s[6]~s[5],最大下标是5*/ ·方括号里是能装多少字符 int n 10; ·长度必须是常量表达式 char t[n]; /*错:长度是变量*/ ·下标仍从0开始 AI职教 zhijiao.xkw.com 知识梳理 每元素一个字符、占一个字节 容量与最多可存字符数 定义 个数最多字符 字节 ·char每个元素1个字节 char s[6]; 6 5 6 ·元素存一个字符 char s1[10]; 10 9 10 ·也可以赋ASCII码值 char s2[20] 20 19 20 ·占用字节=元素个数 char s3[15]; 15 14 15 ·长度6最多存5个字符 AI职教 zhijiao.xkw.com 酮 知识梳理 字符串以八0结束 程序段:字符串常量的存储与三个长度 /*"perfect"在内存中:*/ ·\0'是串结束标志 /p er f e c t\0 * ·ASCII值为0,不显示 /*有效7个,共占8字节*/ ·字符串常量末尾自动加 char s[10]"fashion"; 。"perfect"占8个字节 /*数组长10、串长7*/ ·串长只数有效字符 AI职教 zhijiao.xkw.com 知识梳理 字符串常量与字符数组 两者的关系 比较项 ·常量不能改、数组能改 perfect" char s[8] 有效字符 7 7 ·数组是容器、串是内容 末尾\0 系统自动加 系统自动加 。'a'占1个字节 占用字节 8 8 ·"a"占2个字节 能否修改 不能 能 。""占1字节、串长0 写法 常量 s或s[i] AI职教 zhijiao.xkw.com 酮 知识梳理 三种“零”不能混 三个容易搞混的写法 ◆\0':转义字符,ASC1I0,串结束标 ●\0' 是结束标志,值0 志 ·'0'是数字字符,值48 ◆'0':数字字符,ASC1I48,能显示 ·0是整数,与字符无关 ◆0:整型常量,与字符无关 ·结束判断只能写八0 ◆s[i门=八0':正确的结束判断写法 ·写成'0'永远不结束 ◆s[i们='0':错:永远等不到结束 AI职教 zhijiao.xkw.com 知识梳理 逐字符初始化 程序段:逐字符的全部赋值与部分赋值 char s1[10]={'a','b','c'}; 。每个字符用单引号括起 /*前3个赋值,后7个为八*/ ·一个字符对一个元素 char s2[4]={'a','b','c','d'}; ·写满时末尾没有\0 /*写满4个,没有八\0·*/ ·没写满的元素为八0 char s3[6]={'C','h','i','n','a'; ·初值个数不能超过长度 /*5个字符,末位是\0'*/ AI职教 zhijiao.xkw.com 知识梳理 用字符串常量初始化 程序段:用字符串常量初始化与两条硬约束 char s2[10]{"fashion"}; ·花括号里写字符串常量 char s3[10]="fashion";/*等价*/ ·花括号可以省略 char s4[]"perfect"; /*长8*/ ·八0'由系统自动添加 /*char s5[5]="he11o";错*/ ·省略长度=字符数十1 char s6[10]; ·长度不能小于字符数十1 /*s6="fashion";错:整体赋值*/ AI职教 zhijiao.xkw.com 知识梳理 元素的引用与下标 程序段:元素引用与ASCI川码运算 char s[10]"Fashion"; 。形式:数组名[下标] s[0]='f'; /*改小写*/ ·下标从0到长度减1 printf("%c",s[]);/*一个字符*/ ·单个元素同普通变量 printf("%d",s[]);/ASCII * ·能赋值、能运算、能比较 s[1]=s[1]+32;/*转小写*/ ·下标越界不检查 AI职教 zhijiao.xkw.com 酮 知识梳理 沿着\0'遍历字符数组 程序段:自己求串长并逆序输出 char s[20]"China"; ·条件写s[i]!=\0 int i,n =0; ·不用事先数长度 for(i=0;s[i]!=\0';i+)n++; ·求串长:循环计数 for(i=n-1;i>=0;i--) ·逆序:从n-1往回走 printf("%c",s[i]); ·复制:连\0'一起搬 /*输出anihC*/ AI职教 zhijiao.xkw.com 鼠 知识梳理 分类统计与大小写转换 五个必背写法 ◆判断数字:s[i]>='0'&&s[i]<='9' 。数字:'0'心9 ◆判断大写:s[i]>='A'&s[i门<='Z ·大写:'A'~Z ◆判断小写:s[i]>='a'&s[i]<='z ·小写:'a'心'z ◆转大写:s[i]=s[i]-32 ·大小写相差32 ◆转小写:s[i]=s[i门]+32 ·区间判断不能连写 AI职教 zhijiao.xkw.com 鼠 知识梳理 %s整体输入:不加& 程序段:%s输入的写法与结束标志 char s[10]; ·scanf加%s读一个串 scanf("%s",s); /*对:不加&*/ ·数组名就是首地址 /*输入thank you,只读到thank*/ ·输入项不能再写& /*scanf("%s",&s);错:多写&*/ ·遇空格、回车就结束 ·长度10最多读9个 AI职教 zhijiao.xkw.com 知识梳理 printf与puts整体输出 程序段:%s、puts、gets的用法 char s1[10]"hello!\0ab"; ·%s输出遇\0'就停 printf("%s",s1);/hello!* ·输出项要写数组名 puts(s1); /*输出后换行*/ ·puts输出后自动换行 char s[20]3 ·gets以回车结束、可含空格 gets(s); /*可含空格*/ ·没有\0'会输出乱码 AI职教 zhijiao.xkw.com 知识梳理 四个字符串处理函数 作用与参数要求 函数 作用 函数值 ·用前包含string.h strlen(s) 求串长 字符个数 ·strlen求串长 strcpy(s1,s2) 复制到s1 s1首地址 ·strcpy复制、strcat连接 strcat(s1,s2) 接到末尾 s1首地址 ·strcmp比较内容大小 strcmp(s1,s2) 比较内容 负/零/正 ·返回值负、零、正 AI职教 zhijiao.xkw.com 知识梳理 易错写法与后果 五类常见错法 ·长度要给\0'留位置 错误写法 后果 char s[5]="hello"; 初值超长 ·数组名不能整体赋值 s ="abc"; 数组名不能赋值 ·%s的参数是数组名 scanf ("%s",&s); 多写了& ·内容比较用strcmp printf("%s",s[o]) 应写数组名 ·字符串不能相加 if (s1 s2) 比较的是地址 AI职教 zhijiao.xkw.com 背诵环节 1.字符数组的定义形式是什么?字符串的结束标志是哪个字符? 【答案】char数组名[常量表达式];,元素类型char、每元素1个字节;字符串以 \0'(ASCII值0)为结束标志,系统自动加在常量末尾。 2.字符数组的初始化有哪几种写法?没有赋值的元素是什么值? 【答案】逐字符用花括号赋值,或直接写字符串常量,两种都能省略长度;没赋到的元素一 律为\0',逐字符写满时末尾没有\0'。 AI职教 zhijiao.xkw.com 背诵环节 3.数组长度与字符串长度有什么区别?"perfect"占几个字节? 【答案】数组长度是容量,字符串长度是\0'前的字符个数;"perfect"有7个字符、 占8个字节,数组长度至少要到8。 4. scanf加%s与gets输入字符串有什么区别?用%s时要不要写 &? 【答案】%s遇空格、制表符或回车就结束,读不到空格;gets只以回车结束。用%s时 写数组名、不能再加&。 AI职教 zhijiao.xkw.com 背诵环节 5.puts 与 printf("%s")有什么区别?用%s输出时遇到什么就停? 【答案】两者都遇第一个'\0'就停止输出,区别只在puts输出完自动换行;%s的输出 项要写数组名,不写元素。 6. strlen、strcpy、strcat、strcmp各有什么作用?使用前要包含哪个 头文件? 【答案】strlen求串长,strcpy复制整串,strcat 接到末尾,strcmp比较内容(负、 零、正);用前要先包含string.h。 AI职教 zhijiao.xkw.com 酮 常考题 1.字符数组的每一个元素只能存放一个字符。() 【答案】√ 【解析】元素占1字节,放一个字符。 2.字符串常量 "China”在内存中占用5个字节。() 【答案】× 【解析】占5+1=6个字节。 A职教 zhijiao.xkw.com 常考题 3.用 scanf("%s",s)给char s[10];输入时最多能接收9个字符。 () 【答案】√ 【解析】留1个位置给\0',最多9个。 4.执行char s[]="China";之后,数组长度与s strlen(s) 分别是 ()。 A、6和5 B、5和5 0、6和6 D、5和6 【答案】A 【解析】长度6(含\0'),strlen为5。 AI职教 zhijiao.xkw.com 酮 常考题 5.执行char s[]="abc";之后,s[3]中存放的字符是 【答案】0 【解析】末位是系统加的\0'。 6.若char s[10]="progr am'";,则strlen(s)的值是 【答案】7 【解析】只数有效字符:7个。 AI职教 zhijiao.xkw.com 酮 常考题 7.下列字符数组的定义中,能正确存放字符串"hel lo”的是()。 A、char s[5]={'h','e','I','I','o'}; B、char s[5]="hel lo"; C、char s[6]="hel lo"; D、char s[4]="hel lo"; 【答案】C 【解析】5个字符+八0',长度至少6。 AI职教 zhijiao.xkw.com 酮 常考题 8.下列输入语句中,能够读入一串含空格的文字的是()。 A、scanf("%s",s); B、gets(s); C、scanf("%c",s); D、printf("%s",s); 【答案】B 【解析】gets以回车结束,可含空格。 AI职教 zhijiao.xkw.com 鼠 模拟题 1.(单项选择题)若有定义char s[6];,则该数组占用的字节数是 ()。 A、1 B、5 C、6 D、12 【答案】C 【解析】char每元素1 字节,共6字节。 2.(判断题)执行char s[10]={'a','b','c};之后,s[3]~s[9] 的值 都是八0'。() 【答案】√ 【解析】未赋值的元素自动为\0'。 AI职教 zhijiao.xkw.com 模拟题 3.(单项选择题)要判断两个字符串的内容是否相等, 正确的写法是 ()。 A、if(s1==s2) B if (strcmp(s1,s2)==0) C,if (strlen(s1)==strlen(s2))D,if (s1[0]==s2[0]) 【答案】B 【解析】strcmp 返回0表示相等。 4.(填空题)字符串"a\tbn"的串长是 【答案】4 【解析】转义字符各算1个,共4个。 AI职教 zhijiao.xkw.com 模拟题 5.(判断题)执行char s[10]="abc";之后,可以用s="xyz";换掉它的 内容。() 【答案】× 【解析】数组名是地址常量,不能整体赋值。 6.(填空题)若char s]="abcde";,则s[4]中存放的字符是 【答案】e 【解析】下标从0起,s[4是第5个字符。 AI职教 zhijiao.xkw.com 鼠 模拟题 7.(单项选择题)下列初始化中,数组末尾没有八0'的是()。 A、char s[5]={'a','b','c','d','e'}; B、char s[5]={'a','b'}; C、char s[5]="abc"; D、char s[]="abc"; 【答案】A 【解析】写满全部元素,没有\0'。 AI职教 zhijiao.xkw.com 酮 模拟题 8. (单项选择题)执行char s1[20]="abc",s2[]="xyz";strcat(s1,s2); 后s1的内容是()。 A、abc B、XyZ C、abcxyz D、xyzabc 【答案】C 【解析】接到末尾:abcxyz。 AI职教 zhijiao.xkw.com 模拟题 9.(单项选择题)语句printf("%s",s[0]);的错误原因是()。 A、%s只能输出字符串常量 B、输出项应写数组名,s[0]是一个字符 C、格式符应改成%f D、数组名不能出现在 printf中 【答案】B 【解析】%s要地址,应写数组名。 AI职教 zhijiao.xkw.com 课堂练习 1.字符数组的元素也可以用整型值赋值,存入的是该值对应的字符。 【答案】√ 【解析】存的是ASC1I码对应的字符。 2.strlen("abc")与strlen("abc\Odef")的函数值相同。() 【答案】√ 【解析】遇第一个\0'就停,都是3。 AI职教 zhijiao.xkw.com 课堂练习 3.用%s输出一个不含八0'的字符数组,会输出数组之外的内容。 () 【答案】√ 【解析】找不到八0'就继续往后读。 4.执行 char s[]="perfect'";之后,数组的长度是8。() 【答案】√ 【解析】7个字符+\0'=8。 AI职教 zhijiao.xkw.com 鼠 课堂练习 5.下列字符串常量中,长度为1的是()。 A、"A" B、"" C、"\0" D、"AB" 【答案】A 【解析】只有一个字符A,串长1。 6.char s[20];gets(s);输入thank you并回车后,strlen(s)l 的值是 ()。 A、5 B、6 C、9 D、不确定 【答案】C 【解析】gets 读入含空格的9个字符。 AI职教 zhijiao.xkw.com 鼠 课堂练习 7.下列函数中,用来比较两个字符串内容大小的是( )。 A、strlen B、strcpy C、strcat D、strcmp 【答案】D 【解析】strcmp 按ASCII码比较内容。 8.执行char s[10]="hello";,则strlen(s) 的值是( )。 A、4 B、5 C、6 D、10 【答案】B 【解析】只数5个有效字符。 AI职教 zhijiao.xkw.com 课堂练习 9.要从键盘读入一个不含空格的单词,可用的语句是()。 A、scanf("%s",s); B、scanf("%s",&s); C、gets(&s); D、scanf("%c",s); 【答案】A 【解析】数组名即首地址,不加&。 10.执行char s[8]="beijing'",之后,s[7]中存放的字符是 【答案】\0 【解析】7个字符后是\0'。 AI职教 zhijiao.xkw.com 课堂练习 11.对strcpy(s1,s2)与s1=s2的说法,正确的是()。 A、两者完全等价 B、 strcpy复制内容,赋值号对数组名非法 C、s1=s2会把内容复制过去 D、strcpy ,只能复制字符串常量 【答案】B 【解析】复制内容用strcpy,数组名不能赋值。 AI职教 zhijiao.xkw.com 课堂练习 12.下表列出3段定义及用puts输出的结果,判断正确的是()。 序号 定义 puts的输出 1 char s[10]="ab\Ocd"; ab 2 char s[4]={'a','b,'c','d'}; abcd 3 char s[]=""; (空行) A、序号1只输出ab B、序号2输出可确定 C、序号3会报错 D、puts输出后不换行 【答案】A 【解析】遇\0'停:序号1只输出ab。 AI职教 zhijiao.xkw.com 课堂小结 1.字符数组的定义与存储:char数组名[常量表达式];每元素1字节,下标从 0起;字符串以\0'(ASCII0)结束,常量占“字符数+”字节 2.字符数组的初始化:逐字符赋值或直接用字符串常量赋值,两种都能省略长度;未赋 值元素为\0',长度须≥字符数+1,定义后不能整体赋值 3.字符数组元素的引用:数组名[下标],单个元素同普通char 变量;循环条件写 s[i]!=八0',可求串长、逆序、复制、分类统计与大小写转换 4.整体输入输出与字符串处理函数:scanf("%s",s)遇空白结束且不加&;%s 与puts遇'\O'停,puts换行;gets可读空格;strlen/,strcpy/strcat/.strcmp A职教 zhijiao.xkw.com ◆◆ 感谢观看

资源预览图

专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第1页
1
专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第2页
2
专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第3页
3
专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第4页
4
专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第5页
5
专题10 字符数组的定义及引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第6页
6

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。