博客
关于我
第19节 字符数据及字符类型
阅读量:311 次
发布时间:2019-03-03

本文共 3198 字,大约阅读时间需要 10 分钟。

一.字符常量

用单引号括起来的一个字符,如’a’,’#’,’%’,‘D’

#include 
int main(){ char c1, c2; c1 = 'a'; c2 = 'b'; printf("%c %c", c1, c2);}

二.字符当数字用

#include 
int main(){ char c1, c2; int i = 100; c1 = 'a'; i = i - c1; printf("c1:%c\n", c1); printf("c1:%d,i:%d\n", c1, i); c2 = c1 + 4; printf("c2:%c\n", c2);}运行结果:c1:ac1:97,i:3c2:e

三.ASCII码对照表

在这里插入图片描述

类型 字节 范围
[signed] char 1 -128~127
unsigned char 1 0~255

四.字符数据的输入输出

①scanf()/sanf_s() 和 printf()

#include 
int main(){ int x, y, z; char ch; scanf_s("%d%c%d", &x,&ch,2, &y); z = x + y; printf("%d%c%d=%d\n", y, ch, x, z);}运行结果:1+22+1=3

scanf_s函数输入字符型时,要写长度参数

②getchar()和putchar()

#include 
int main(){ char c; c = getchar(); //输入大写字母 putchar(c + 32); //显示小写字母 putchar('\n');}运行结果:Aa

五.获得缓存区中的输入数据

#include 
int main(){ char c1, c2; c1 = getchar(); c2 = getchar(); printf("%c %c\n", c1, c2); printf("%d %d\n", c1, c2); return 0;}输入不同,显示不同结果:输入abc
<回车>
abca b97 98输入a
<回车>
aa97 10

未显示字符c存入缓冲区

六.以\开头的字符序列----转义字符常量

例如: '\n’是一个字符,代表"换行"符

诸多“控制字符”在程序中无法用一般形式的字符表示,要采用转义字符

所有的转义字符和所对应的意义

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 7
\b 退格(BS),将当前位置移到前一列 8
\f 换页 (FF),j将当前位置移到下页开头 12
\n 换行(LF),将当前位置移到下一行开头 10
\r 回车(CR),将当前位置移到本行开头 13
\t 水平制表(HT),跳到下一个TAB位置 9
\v 垂直制表(VT) 11
\ 代表一个反斜线字符’’ 92
代表一个单引号字符 39
" 代表一个双引号字符 34
\0 空字符(NULL) 0
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制数所代表的任意字符 二位16进制

七.转义字符用法示例

#include 
int main(){ printf("%.4f%.4f%.4f\n", 1.01, 2.2334, 3.4); printf("%.4f\t%.4f\t%.4f\n", 1.01, 2.2334, 3.4);}运行结果:1.01002.23343.40001.0100 2.2334 3.4000
#include 
int main(){ printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");}运行结果:Thisisa testShe said, "How are you?"
#include 
int main(){ printf("笑脸:\001\n"); printf("红黑桃:\003\t\006\n"); printf("听个响:\a\n"); \\ \007 \7效果相同 printf("换几行:a\012 b\n c\x0A d\n"); printf("看字母:AB\n"); printf("再看字母:\101\102\n"); printf("再看字母:\101\b\102\n"); printf("还看字母:\101\r\102\n");}运行结果:笑脸: /缺少字体显示方框红黑桃: /缺少字体显示方框听个响: /been响铃一声换几行:a b c d看字母:AB再看字母:AB再看字母:BB看字母:A

八.ASCII编码与汉字编码的区别

ASCII编码:①标准只需要7位 ②实际占用1字节 ③最高位为0

"汉字"编码:①每个汉字2字 ②为和西文混合使用,每字节最高位均为1

九.字符串常量及存储

1.用双引号括起来的部分就是字符串常量
如:“abc”,“hello”,“a+b”,“He Lijian”
2.字符串常量"abc"在内存中占4个字节,而不是3字节

a b c \0

3.编译系统会自动加一个’\0’作为字符串结束标志

4.’\0’不是字符串的一部分,它只作为字符串的结束标志.如printf(“abc”);输出3个字符abc,不包’\0’;
5.“丁进"占5个字节
6.空字符串” "占1个字节
7.辨析:
① "a"和’a’的区别
char c;
c=‘a’; //正确
c=“a”; //错误
‘a’,“a”; //正确
‘aa’,“aa”; //有错误
②字符串常量"abc\n"包含4个字符,占5个字节

a b c \n \0

③分析"abc\\n"与"abc\\\n"的存储方式

a b c \ n \0
a b c \ \n \0

实践项目

1.输入一个小写字母,输出对应的大写字母和ASCII码

#include 
int main(){ char ch; printf("输入一个小写字母: "); scanf_s("%c", &ch,1); ch = ch - 32; printf("与对应的大写字母: %c\n",ch); printf("大写字母 ASCII码: %d\n", ch);}运行结果:输入一个小写字母: a与对应的大写字母: A大写字母 ASCII码: 65

2.利用\t对齐输出项

#include 
int main(){ printf("Name\tAge\tSalary\taddr\n"); printf("Tom\t%d\t%6.1f\t%s\n", 20, 314.2, "NewYork"); printf("Jerry\t%d\t%6.1f\t%s\n", 22, 7876.4, "BingJing"); printf("Blotu\t%d\t%6.1f\t%s\n", 9, 5.5, "ShangHai"); return 0;}运行结果:Name Age Salary addrTom 20 314.2 NewYorkJerry 22 7876.4 BingJingBlotu 9 5.5 ShangHai

转载地址:http://cjqm.baihongyu.com/

你可能感兴趣的文章
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
查看>>
no connection could be made because the target machine actively refused it.问题解决
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>
No module named 'crispy_forms'等使用pycharm开发
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>