开发者

C语言中的字符型数据与ASCII码表

开发者 https://www.devze.com 2023-01-29 10:53 出处:网络 作者: passxgx
目录1、字符型常量2、字符型变量3、字符型数据的输入输出(1)scanf()和prjsintf()函数输入输出字符(2)字符输入函数getchar()总结1、字符型常量
目录
  • 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(空操作)00x00@640x40
    SOH(标题开始)10x01A650x41
    STX(正文开始)20x02B660x42
    ETX(正文结束)30x03C670x43
    EOT(传输结束)40x04D680x44
    ENQ(请求)50x05E690x45
    ACK(收到通知)60x06F700x46
    BEL(响铃)70x07G710x47
    BS(退格)80x08H720xjs48
    HT(水平制表符)90x09I730x49
    LF(换行)100x0AJ740x4A
    VT(垂直制表符)110x0BK750x4B
    FF(换页)120x0CL760x4C
    CR(回车)130x0DM770x4D
    SO(不用切换)140x0EN780x4E
    SI(启用切换)150x0FO790x4F
    DLE(数据链路转义)160x10P800x50
    DC1(设备控制1)170x11Q810x51
    DC2(设备控制2)180x12R820x52
    DC3(设备控制3)190x13S830x53
    DC4(设备控制4)200x14T840x54
    NAK(拒绝接收)210x15U850x55
    SYN(同步空闲)220x16V860x56
    ETB(结束传输块)230x17W870x57
    CAN(取消)240x18X880x58
    EM(媒介结束)250x19Y890x59
    SUB(代替)260x1AZ900x5A
    ESC(换码(溢出))270x1B[910x5B
    FS(文件分隔js符)280x1C\920x5C
    GS(分组符)290x1D]930x5D
    RS(记录分隔符)编程客栈300x1E^940x5E
    US(单元分隔符)310x1F_950x5F
    (space)(空格)320x20`960x60
    !330x21a970x61
    "340x22b980x62
    #350x23c990x63
    $360x24d1000x64
    %370x25e1010x65
    &380x26f1020x66
    390x27g1030x67
    (400x28h1040x68
    )410x29i1050x69
    *420x2Aj1060x6A
    +430x2Bk1070x6B
    ,440x2Cl1080x6C
    -450x2Dm1090x6D
    .460x2En1100x6E
    /470x2Fo1110x6FutwMPjh
    0480x30p1120x70
    1490x31q1130x71
    2500x32r1140x72
    3510x33s1150x73
    4520x32t1160x74
    5530x35u1170x75
    6540x36v1180x76
    7550x37w1190x77
    8560x38x1200x78
    9570x39y1210x79
    :580x3Az1220x7A
    ;590x3B{1230x7B
    <600x3C|1240x7C
    =610x3D}1250x7D
    >620x3E~1260x7E
    ?630x3FDEL(删除)1270x7F

    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!

    注: 此处一定要注意,这里的操作数和运算符之间必须连续输入,两者之间不能有空格。

    这是因为空格也是一个字符,它会占据运算符的位置,在程序中就会是一个无法识别的运算符。

    如上述运行结果第三个。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号