C语言程序设计任务驱动式教程(第2版)(微课版)
上QQ阅读APP看书,第一时间看更新

任务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。