字符★字符型讲解★ASCII码(最全讲解,亿字干货)

字符★字符型讲解★ASCII码(最全讲解,亿字干货)本文详细介绍了字符型数据在 C C 中的使用 包括字符型变量的声明 赋值以及 ASCII 码的概念

大家好,欢迎来到IT知识分享网。

一、★字符型 讲解

        字符型用char作为标识符。字符型常量必须用单引号括起来,字母作为字符型时,大小写是不等价的,并且字符型只允许单引号中有一个字符。如果有多个字符则是字符串类型string,前后必须加双引号。

        int、double等类型,在读入时,碰到空格、回车之类的是不影响读入的。

        但是在字符读入时,就需要注意这些了,因为空格、回车等都属于字符类型,如果是字符读入时,它们也是读入的一部分,需要注意。

        字符类型是一类比较特殊的字符。所有的字母、数字、符号、控制符(空格、回车之类的)都在字符范围之内,可以说键盘能输入的内容都可以当做字符处理。

        所以,学完字符后,数字的概念就有两种表达方式了:字符数字和以前使用的纯粹的数字。有什么区别呢?

        计算机在设计的时候,就给每个字符设置了唯一的ASCII码,可以理解为每个字符都有自己的身份证编码,这个编码是统一的(见下表)。这个编码是数字,编码的数字对应的就是字符。

        比如: ‘A’的ASCII值是65,如果你把65赋值给一个字符变量,就是 ‘A’;

        如果你把 ‘A’赋值给一个整型变量,就是65;

比如下面的程序:

#include <cstdio> #include <iostream> using namespace std; char c1; //定义字符型 int a; int main() { c1 = 'A'; //给c1赋值一个字符。注意字符前后加单引号 a = 'A'; printf("%d %d %c", c1, a, a); return 0; } 

         ‘1’和 1 是不一样的, ‘1’的ASCII值是49,1就是1,两个值是不等价的。在使用的时候要注意转换。

#include <cstdio> #include <iostream> using namespace std; char c1; //定义字符型 int a; int main() { c1 = '1'; //给c1赋值一个字符。注意字符前后加单引号 a = c1 - '0'; //或者如果你知道字符 '0' 的ASCII值是48,也可以这么写: a=c1-48; printf("%c %d", c1, a); //前面是字符数字,用%c格式符,后面是纯数字,用%d return 0; } 

下面来看下字符的读入方式:

样例:读入两个字符,字符之间用空格隔开,判断两个字符是否相等,等则输出“Equ”,否则输出“Not Equ” C语言格式一:

#include <cstdio> #include <iostream> //2510 using namespace std; char c1, c2; //定义字符型 int main() { scanf("%c %c", &c1, &c2); //字符型的格式符是%c 。注意两个%c中间有加了个空格 //这个空格用来就是对应读入的两个字符中间的空格 if (c1 == c2) //比较两个字符是否相等 printf("Equ"); else printf("Not Equ"); return 0; } 

C语言格式二:使用getchar()

getchar()的读入速度非常快,在有些题目输入数据很大的时候还必须用getchar()来优化读入速度。

#include <cstdio> #include <iostream> //2510 using namespace std; char c1, c2; //定义字符型 int main() { c1 = getchar(); //读入第一个字符 c2 = getchar(); //读入的第二个字符是中间的空格,必须处理 c2 = getchar(); // c2再读入一次,这次读到的才是第三个需要的字符 if (c1 == c2) //比较两个字符是否相等 printf("Equ"); else printf("Not Equ"); return 0; } 

C++ 语言格式:

#include <cstdio> #include <iostream> //2510 using namespace std; char c1, c2; //定义字符型 int main() { cin >> c1 >> c2; // cin语句比较特殊,它会自动忽略空白字符,所以用cin读入时可以像整数 //那样正常读入。但是如果题目要求空格也要读入时就不能用cin了 if (c1 == c2) //比较两个字符是否相等 printf("Equ"); else printf("Not Equ"); return 0; } 

 二、例题

        找出混在字母代码里的数字字符。

提示:除了使用while循环,本题也可以使用for循环来控制读入for (char c = getchar(); c != ‘?’; c = getchar()){

循环语句。。。 } } 

输入有一行字符,以‘?’结尾。

按顺序输出其中的数字

输入样例 1 

sdlkfsjdkf45kldksfjlksdfk6dksfjsdkf7lkdfksd?

输出样例 1

4567

出题人及讲解人:ptyz — lzy老师

三、代码讲解

思路

        定义一个字符,每次输入,如果字符的ASCII码在’0′(48)至’9′(57)之间,输出;否则继续输入字符。

(也可以用字符串来做)

代码一 

        ——摘自zyc

#include<bits/stdc++.h> using namespace std; int main(){ std::ios::sync_with_stdio(false); for(char c=getchar();c!='?';c=getchar()) if(c>='0'&&c<='9')cout<<c; }

代码二

#include<bits/stdc++.h> using namespace std; int main() { char a=0; while(a!='?') { a=getchar(); if(a>='0'&&a<='9')cout<<a; } return 0; }

四、ASCII码表

注:32至127是可显示字符

字符★字符型讲解★ASCII码(最全讲解,亿字干货)

        

        讲解、出题不易,请顺手点个赞吧,谢谢 O(∩_∩)O!

                ——Turingxu原创

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112732.html

(0)
上一篇 2026-01-16 13:45
下一篇 2026-01-16 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信