博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第19节 字符数据及字符类型
阅读量:309 次
发布时间:2019-03-03

本文共 3208 字,大约阅读时间需要 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/

你可能感兴趣的文章