C语言-字符型数据与ASCII码表
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 | 0x48 | |
| 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(文件分隔符) | 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 | 0x6F | |
| 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 chint 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!
注: 此處一定要注意,這里的操作數和運算符之間必須連續輸入,兩者之間不能有空格。這是因為空格也是一個字符,它會占據運算符的位置,在程序中就會是一個無法識別的運算符。如上述運行結果第三個。
參考 C語言程序設計(第4版)/何欽銘,顏暉
例題及課后習題參考程序https://gitee.com/sgxgitee/mooc-c
總結
以上是生活随笔為你收集整理的C语言-字符型数据与ASCII码表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WordPress简单好看的线报主题ba
- 下一篇: C语言程序100例之C#版-029