专题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
◆◆
感谢观看