目录
- 1、字符型常量
- 2、字符型变量
- 3、字符型数据的输入输出
- (1)scanf()和prjsintf()函数输入输出字符
- (2)字符输入函数getchar()
- 总结
1、字符型常量
字符型常量指单个字符,是用一对单引号及其所括起来的字符表示。
例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。
C语言的字符使用的就是ASCII字符集,总共有128个,每个相应的ASCII码都表示一个字符:
(1)每一个字符都有唯一的次序值,即ASCII码。
(2)数字’0’,‘1’,‘2’,…,‘9’、大写字母’A’,‘B’,‘C’,…,‘Z’、小写字母’a’,‘b’,‘c’,…,'z’的ASCII都是升序连续排列的。
注: 数字和数字字符不一样的,带单引号的是字符,例如:1是整型数字,而’1’是字符,其ASCII码是49,即按整型输出的话就是49,按字符型数据输出就是1。
ASCII码表:
符号(解释) | 十进制 | 十六进制 | 符号(解释) | 十进制 | 十六进制 | |
---|---|---|---|---|---|---|
NULL(空操作) | 0 | 0x00 | @ | 64 | 0x40 | |
SOH(标题开始) | 1 | 0x01 | A | 65 | 0x41 | |
STX(正文开始) | 2 | 0x02 | B | 66 | 0x42 | |
ETX(正文结束) | 3 | 0x03 | C | 67 | 0x43 | |
EOT(传输结束) | 4 | 0x04 | D | 68 | 0x44 | |
ENQ(请求) | 5 | 0x05 | E | 69 | 0x45 | |
ACK(收到通知) | 6 | 0x06 | F | 70 | 0x46 | |
BEL(响铃) | 7 | 0x07 | G | 71 | 0x47 | |
BS(退格) | 8 | 0x08 | H | 72 | 0xjs48 | |
HT(水平制表符) | 9 | 0x09 | I | 73 | 0x49 | |
LF(换行) | 10 | 0x0A | J | 74 | 0x4A | |
VT(垂直制表符) | 11 | 0x0B | K | 75 | 0x4B | |
FF(换页) | 12 | 0x0C | L | 76 | 0x4C | |
CR(回车) | 13 | 0x0D | M | 77 | 0x4D | |
SO(不用切换) | 14 | 0x0E | N | 78 | 0x4E | |
SI(启用切换) | 15 | 0x0F | O | 79 | 0x4F | |
DLE(数据链路转义) | 16 | 0x10 | P | 80 | 0x50 | |
DC1(设备控制1) | 17 | 0x11 | Q | 81 | 0x51 | |
DC2(设备控制2) | 18 | 0x12 | R | 82 | 0x52 | |
DC3(设备控制3) | 19 | 0x13 | S | 83 | 0x53 | |
DC4(设备控制4) | 20 | 0x14 | T | 84 | 0x54 | |
NAK(拒绝接收) | 21 | 0x15 | U | 85 | 0x55 | |
SYN(同步空闲) | 22 | 0x16 | V | 86 | 0x56 | |
ETB(结束传输块) | 23 | 0x17 | W | 87 | 0x57 | |
CAN(取消) | 24 | 0x18 | X | 88 | 0x58 | |
EM(媒介结束) | 25 | 0x19 | Y | 89 | 0x59 | |
SUB(代替) | 26 | 0x1A | Z | 90 | 0x5A | |
ESC(换码(溢出)) | 27 | 0x1B | [ | 91 | 0x5B | |
FS(文件分隔js符) | 28 | 0x1C | \ | 92 | 0x5C | |
GS(分组符) | 29 | 0x1D | ] | 93 | 0x5D | |
RS(记录分隔符)编程客栈 | 30 | 0x1E | ^ | 94 | 0x5E | |
US(单元分隔符) | 31 | 0x1F | _ | 95 | 0x5F | |
(space)(空格) | 32 | 0x20 | ` | 96 | 0x60 | |
! | 33 | 0x21 | a | 97 | 0x61 | |
" | 34 | 0x22 | b | 98 | 0x62 | |
# | 35 | 0x23 | c | 99 | 0x63 | |
$ | 36 | 0x24 | d | 100 | 0x64 | |
% | 37 | 0x25 | e | 101 | 0x65 | |
& | 38 | 0x26 | f | 102 | 0x66 | |
’ | 39 | 0x27 | g | 103 | 0x67 | |
( | 40 | 0x28 | h | 104 | 0x68 | |
) | 41 | 0x29 | i | 105 | 0x69 | |
* | 42 | 0x2A | j | 106 | 0x6A | |
+ | 43 | 0x2B | k | 107 | 0x6B | |
, | 44 | 0x2C | l | 108 | 0x6C | |
- | 45 | 0x2D | m | 109 | 0x6D | |
. | 46 | 0x2E | n | 110 | 0x6E | |
/ | 47 | 0x2F | o | 111 | 0x6FutwMPjh | |
0 | 48 | 0x30 | p | 112 | 0x70 | |
1 | 49 | 0x31 | q | 113 | 0x71 | |
2 | 50 | 0x32 | r | 114 | 0x72 | |
3 | 51 | 0x33 | s | 115 | 0x73 | |
4 | 52 | 0x32 | t | 116 | 0x74 | |
5 | 53 | 0x35 | u | 117 | 0x75 | |
6 | 54 | 0x36 | v | 118 | 0x76 | |
7 | 55 | 0x37 | w | 119 | 0x77 | |
8 | 56 | 0x38 | x | 120 | 0x78 | |
9 | 57 | 0x39 | y | 121 | 0x79 | |
: | 58 | 0x3A | z | 122 | 0x7A | |
; | 59 | 0x3B | { | 123 | 0x7B | |
< | 60 | 0x3C | | | 124 | 0x7C | |
= | 61 | 0x3D | } | 125 | 0x7D | |
> | 62 | 0x3E | ~ | 126 | 0x7E | |
? | 63 | 0x3F | DEL(删除) | 127 | 0x7F |
2、字符型变量
用char定义的变量为字符型变量。
例如:char op; 定义了一个字符型变量op,其数据类型为char型,即字符型数据。
可以对其进行赋值,例如op='*'就是将字符型常量’*‘赋值给变量op。
字符型变量在计算机中是按照ASCII码的值来存储的,可以和整形数据进行运算,其运算规格类似,例如:op = '*'+1;,那么op按字符型数据输出就是’+’,按整型数据输出就是43。
3、字符型数据的输入输出
(1)scanf()和printf()函数输入输出字符
scanf()和printf()函数进行字符型数据的输入输出和整型浮点型的处理方式完全一样,只是格式控制字符串中相应的格式控制说明为%c
。
(2)字符输入函数getchar()
getchar()函数可以从键盘输入一个字符。其一般用法为:
char ch;ch = getchar();
这句话就是从键盘输入一个字符,并将其赋给变量ch。
(3)字符输出函数putchar()
putchar()函数是输出一个字符。其一般用法为:
putchar(输出参数);
输出参数是字符型变量或者字符型常量。
注: 使用getchar()函数和putchar()函数同样需要先包含头文件#include <stdio.h>
函数getchar()和putchar()分别只能输入和输出一个字符,若要处理多个字符的输出和输出,那么一般需要采用循环的方式多次调用该函数。
例如下面的代码为输入8个字符,然后将这8个字符再输出,每两个字符中间添加一个’-’。
#include <stdio.h> int main(void) { char ch int first = 1, k; /*first的值表示将要处理的是否为输入的第一个字符*/ printf("Enter 8 characters:"); for (k=1; k<=8; k++) { ch = getchar(); /*变量ch接收从键盘输入的一个字符*/ if (first == 1) { putchar(ch); /*输出存放在变量ch中的字符*/ first = 0; /*处理完第1个字符,清楚标志位*/ } else { /*处理第2个及以后的字符*/ putchar('-'); /*输出字符常量'-'*/ putchar(ch); 开发者_开发教程 /*输出存放在变量ch中的字符*/ } } }
运行结果:
Enter 8 characters:gorgeous
g-o-r-g-e-o-u-s
例:四则运算
求解简单的四则运算表达式。输入一个形如 "操作数 运算符 操作数"的四则运算表达式,输出运算结果,要求对除数0的情况做特别处理。
#include <stdio.h> int main(void) { double value1, value2; char op; printf("Type in an expression:"); scanf("%lf%c%lf", &value1, &op, &value2); if (op == '+'){ /*判断运算符是否为'+'*/ printf("=%.2f\n", value1+value2); /*对操作数做加法操作*/ } else if (op == '-'){ /*否则判断运算符是否为'-'*/ printf("=%.2f\n", value1-value2); } else if (op == '*'){ /*否则判断运算符是否为'*'*/ printf("=%.2f\n", value1*value2); } else if (op == '/'){ /*否则判断运算符是否为'/'*/ if (value2 != 0){ printf("=%.2f\n", value1/value2); } else { /*对除数为0作特殊处理*/ printf("Divisior can not be 0!\n"); } } else { printf ("Unknown operator!\n"); /*运算符输出错误*/ } return 0; }
运行结果:
Type in an expression:8.65+3.29
=11.94
Type in an expression:76.9/0
Divisior can not be 0!
Type in an expression:47.2 - 76
Unknown operator!
注: 此处一定要注意,这里的操作数和运算符之间必须连续输入,两者之间不能有空格。
这是因为空格也是一个字符,它会占据运算符的位置,在程序中就会是一个无法识别的运算符。
如上述运行结果第三个。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
精彩评论