C++基础09 字符类型和ASCII码

字符

如果我们想存字母,例如输入k,能输出k,就需要声明字符类型的变量来存放。

字符是指计算机中使用的字母、数字和符号。例如我们26个大小写字母、数字0~9、和一些特殊的符号“#”、“@”、“+”、“-”等等。

字符类型

字符类型(char)是一种数据类型,和实数类型、整型类似,不同的是一个字符类型变量可存储的内容为单个字符。

字符类型的声明

定义格式:char  a;   // (数据类型) (变量名)

赋值:a = 'k';   //将字符k赋值给变量a

输入:cin >> a;

输出:cout << a;

注意事项

  • 字符类型变量的输入输出均和整数类型、实数类型一致。
  • 输入的是字符,但是赋值的时候不能忘记字符两边的单引号。

训练:巧克力上的字母

小知爸爸出差回来,给小知带回来一些美味的巧克力,细心的小知发现,每块巧克力上面都有一个字符刻在上面,他想把巧克力上的字符记录下来,经过一番操作,他记录了两个字符。

【输入描述】两个字符

【输出描述】两个字符,空格隔开

【样例输入】l v

【样例输出】l v

巧克力上的字母参考代码

#include <iostream>
using namespace std;
int main( )
{
    char a,b;
    cin>>a>>b;
    cout<<a<<"  "<<b;
    return 0;
}

ASCII码

计算机其实是不能直接识别字符的,因为计算机只认识数字。

因此,字符不能直接存储在计算机中,但是可以利用ASCII码(数字)来存储字符。简单的来说,ASCII码就相当于字符对应的数字编号,只要知道编号,就知道是哪个字符了。

举例说明ASCII码

举个小例子,在学校里,每个学生的个人信息都是通过学号来记录的,知道了学号,就知道是哪个学生了,ASCII码就类似于学生学号。

常用字符的ASCII码

ASCII码实例说明

例如:

char a= 'k';

这里字符类型变量a存储的就是代表字符k的ASCII码107,而不是直接存储的字符k。

ASCII的输出

字符是char类型,而ASCII码是int类型

要输出ASCII码,需要把char类型转化成int类型

方法一:

char a= 'k' ;
int x;
x=a;
cout<<x;

方法二:

char a= 'k' ;
cout<<(int)a;

训练:字符对应的ASCII码

小知已经记录完了巧克力上的字符,他还想知道字符所对应的ASCII码,现在他拿出两个字符,请你输出它们所对应的ASCII码的值。

【输入描述】两个字符

【输出描述】一行,两个字符所对应的ASCII码的值,空格隔开

【样例输入】m  3

【样例输出】109 51

字符对应的ASCII码参考代码

#include <iostream>
using namespace std;
int main( )
{
     char a,b;
     cin >> a >> b;
     cout << int(a) <<"  "<<int(b);
     return 0;
}

字符的输出

ASCII码是int类型,而字符是char类型

要输出字符,需要把int类型转化成char类型

方法一:

int a=107;
char b;
b=a;
cout<<b;

方法二:

int a=107;
cout<<(char)a;

训练:转校生的姓名

班级里新来了一个转校生,小知想知道他叫什么名字,但是转校生只告诉他两个数字,让他猜这个转校生的姓名的首字母,如果猜对了,就送小知一份小礼物,已知他的姓名只有两个汉字。

【输入描述】两个数字

【输出描述】一行,两个数字所对应的字母,空格隔开

【样例输入】108  99

【样例输出】l c

转校生的姓名参考代码

#include <iostream>
using namespace std;
int main( )
{
     int a,b;
     cin >> a >> b;
     cout << char(a) <<"  "<<char(b);
     return 0;
}

字符的算术运算

字符类型是可以进行算术运算的,计算机进行计算的时候会自动对字符所对应的ASCII码的值进行相应的运算。

字符的算术运算的例子

例1:

char b= 'a';   
cout<<b+2;

计算的是字符a的ASCII码与2相加的值,所以结果是99。

例1:

cout<< 'b' - 'B';

计算的是两个字符的ASCII码相减的值,结果是32。

训练:补习班的座位

小知和A同学想进一步提升自己的成绩,于是一起报了同一个培优班,培优班开课之前每位学生都分配了一个字符,并告诉学生通过这个字符能够找到座位,但是来到班级之后,发现座位上都是数字,老师告诉他们,数字是字符对应的ASCII码,需要解密找到自己座位,小知想找到两人座位,并想知道他的座位号比A同学大多少。

【输入描述】两个字符

【输出描述】输出有两行,第一行为两个字母所对应的ASCII码,以空格隔开;第二行为第一个字符比第二个字符大了多少。

【样例输入】

b a

【样例输出】

98 97

1

补习班的座位参考代码

#include <iostream>
using namespace std;
int main( )
{
    char a,b;
    cin>>a>>b;
    cout<<(int)a<<" "<<(int)b<<endl;
    cout<<a-b;
    return 0;
}