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

一、★字符型 讲解

        字符型用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)之间,输出;否则继续输入字符。

(也可以用字符串来做)

代码一 

        ——摘自zyc200156

#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是可显示字符

        

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

                ——Turingxu原创

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值