任务2 编制密码——字符型数据
工作任务
编制一个密码器,实现给友军发送加密电报,报文由小写字母a~n组成,在发报时每输入一个字母,输出与其相邻的下一个字母。
思路指导
输入:输入小写字母a~a~n,并存储到变量word中。
输出:加密后的字母存储到变量pass
处理:输入字符型数据,输出加1后的字符型数据。
微课视频
编制密码——字符型数据
相关知识
基本数据类型——字符型数据
(1)字符常量。
C语言中有两种类型的字符常量。
普通字符:用单引号括起来的单个字符,如'%'、'2'、'a'、'A'。
①'a'和'A'不同。
②单引号中的空格符也是一个字符常量。
③字符常量在内存中占一字节,存放的是字符的ASCII值,如,'a'的值是97,'A'的值是65,'2'的值是50。
需要注意的是,除了可以直接从键盘上输入的字符(如英文字母、标点符号、数字、数学运算符等)以外,还有一些字符是无法用键盘直接输入的,例如,“回车”,此时需要采用一种新的定义方式——转义字符,转义字符是以“\”开头的具有特殊含义的字符,常用的转义字符见表2-3。
表2-3 转义字符
(2)字符串常量。
字符串常量是用双引号括起来的零个、一个或多个字符序列,如"Beijing"、"I' m a student"、"%d%d"等都是合法的字符串常量。
因为字符串常量在内存中存储时,依次存放的是串中每个字符和字符串结束标志“\0”,所以字符串在内存中占串字符数+1的存储空间,例如,"Beijing"在内存中占7+1字节。在书写字符串时不必加“\0”,因为“\0”是系统自动加上的。
(3)字符变量。
字符变量用来存放字符常量,即只能存放单个字符,在内存中占1字节的存储空间。其定义方式如下。
也可以在定义时赋值:
注意:C语言中没有字符串变量,不能将一个字符串常量赋给一个字符型变量,例如,char c1="Beijing";是错误的。要想存放一个字符串,必须使用数组。
一个字符常量存放到字符型变量中,实际上存放的是该字符的二进制形式的ASCII值:'A'为65,'B'为66,'a'为97,'b'为98。正是因为字符数据的这种特殊存储形式,使得字符数据和整型数据之间可以进行运算。在输出时,一个字符型数据既可以以字符形式输出,又可以以整数形式输出。
说明
计算机使用特定的整数编码来表示对应的字符。我们通常使用的英文字符编码是美国信息交换标准编码(AmericanStandard Code for Information Interchange,ASCII)。ASCII是一个标准,其内容规定了把英文字母、数字、标点、字符转换成计算机能识别的二进制数的规则,并且得到了广泛认可和遵守。附录2为常用字符与ASCII代码对照表,供大家查阅使用。ASCII大致由以下两部分组成。
(1)ASCII 非打印控制字符。ASCII表上的数字0~31分配给了控制字符,用于控制像打印机等一些外围设备。(参见ASCII表中的0~31)
(2)ASCII打印字符。数字32~127分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。(参见ASCII表中的32~127)。
例2.2 字符型变量的输出
运行结果:
例2.3 大小写字母转换
运行结果:
从ASCII表中可以看到,每个小写字母比大写字母的ASCII值大32,即'a'='A'+32。
任务实施
编制密码程序代码如下。
运行结果如图2-3所示。
图2-3 任务2运行结果
特别提示
(1)字符型数据除转义字符外,其值是由单引号引起来的一个字符。
(2)字符'3'和数字3是不同的。ASCII表规定'3'的值是51。