大家好,欢迎来到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是可显示字符
讲解、出题不易,请顺手点个赞吧,谢谢 O(∩_∩)O!
——Turingxu原创
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112732.html
