6.3字符数组的定义和引用 课件(共18张PPT)—《C语言程序设计》同步教学(电子工业版)

资源下载
  1. 二一教育资源

6.3字符数组的定义和引用 课件(共18张PPT)—《C语言程序设计》同步教学(电子工业版)

资源简介

(共18张PPT)
字符数组、字符串
复 习 导 入
一维数组的定义格式
数据类型 数组名[常量表达式];
二维数组的定义格式
数据类型 数组名[常量表达式1][常量表达式2];
教 学 目 标
掌握字符数组的定义。
掌握字符数组的引用与初始化方法
1
能够正确使用字符数组解决实际问题。
2
培养学生独立思考、解决问题的能力。
3
知识
能力
情感
工作任务
我们在日常生活中有许多密码问题,如银行卡、门禁卡、电子密码等,为了密码的保密,通常是为改密码进行加密变化存储。这个任务就是从键盘上输入一串密码,并进行加密变化,规则是将其中的小写字母转换成大写字母并输出。
思路指导
输入:一串字符
加密变化:将其中的小写字母转换成大写字母
输出:输出加密后的字符。
相关知识
(一)字符数组的定义
1.一维字符数组:
格式:类型说明符 数组名[常量表达式];
例如:char str[10];
定义str为一维字符数组,该数组包含10个元素,最多可以存放10个字符型数据。
相关知识
(一)字符数组的定义
2.二维字符数组:
格式:类型说明符 数组名[常量表达式1][常量表达式2];
例如:char a[3][20];
定义a为二维字符数组,该数组有3行,每行20列,该数组最多可以存放60个字符型数据。
相关知识
(二)字符数组初始化
字符数组的初始化方式与其它类型数组的初始化方式类似。
1.逐个元素赋初值
char ch[5]={ H , e , l , l , o };
例 char ch[5]={‘H’,’e’,’l’,’l’,’o’};
ch[0]
H
e
l
l
o
逐个字符赋值
ch[1]
ch[2]
ch[3]
ch[4]
相关知识
如果初值的个数多于数组元素的个数,则按语法错误处理。
比如: char ch[5]={ H , e , l , l , o , ! };
如果初值的个数少于数组元素的个数,则C编译系统自动将未赋初值的元素定为空字符(即ASCII码为0的字符: \0 )。
比如: char ch[7]={ H , e , l , l , o };
有问题!
例 char ch[7]={‘H’,’e’,’l’,’l’,’o’};
ch[0]
H
e
l
l
o
ch[1]
ch[2]
ch[3]
ch[4]
ch[5]
ch[6]
\0
\0
相关知识
如果省略数组的长度,则系统会自动根据初值的个数来确定数组的长度。
例如: char c[]={ H , o , w , , a , r , e , , y , o , u , }; 数组c的长度自动设定为12。
当定义的数组为字符型时,输入单个字符的格式符应该为“%c”。
例如: char s[10];
int i=0;
for (i=0;i<10;i++) //循环输入字符数组元素
scanf ("%c", &s[i]);
相关知识
2.用字符串常量给字符数组赋初值
字符串常量是用双引号括起来的一串字符。
在C语言中,将字符串作为字符数组来处理,即用一个 一维数组来存放一个字符串。
C语言系统在处理字符串时,一般会在其末尾自动添加一个 \0 作为结束符。
相关知识
例 如:
char c[]={"china"};
char c[]="china";
以字符串方式赋值时,必须保证数组元素个数>=字符个数+1(字符串后面自动加上一个’\0’)
char c[6]="china";
char c[5]="china";
相关知识
字符串可以整体输入或输出,即用格式符“%s”控制字符串的输入与输出。
(1)用"%s"格式符读入字符串时,scanf函数中的地址项是数组名,不要在数组名前加取地址符号 & ,因为数组名本身就是地址。
(2)用"%s"格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素。
(3)以scanf ("%s", 数组名);形式读入字符串时,遇空格或回车都表示字符串结束,系统只是将第一个空格或回车前的字符置于数组中。
char a[6];
scanf(“%s”,a); printf(“%s”,a);
相关知识
字符常量和字符串的区别:
(1)字符常量是用单引号引起来的一个字符为字符常量。
如:’a’字符常量;
(2)字符串是用双引号引起来的一个或一串字符。
如:"hello"字符串;
(3)字符常量使用简单变量存储和处理,而字符串在C语言中,只能使用字符数组存储和处理。
如:变量:x=’a’; 数组:char ch[6]="china";
任务实施
#include
void main ( )
{char s[10];
int i=0;
printf("请输入字符回车结束:\n");
for (i=0;i<10;i++) //循环输入字符数组元素然后加密
{scanf ("%c", &s[i]);
if (s[i]=='\n') break;
else if (s[i]>= 'a'&&s[i]<= 'z') s[i]-=32;
}
s[i]='\0'; //为字符数组加结束标志变为字符串
printf("加密后:\n");
for (i=0;s[i]!='\0';i++) //输出加密字符串
printf ("%c", s[i]);
printf ("\n");}
任务实施
课 堂 总 结
谢谢大家!

展开更多......

收起↑

资源预览