您好,登錄后才能下訂單哦!
今天小編給大家分享一下C語言中的字符型數據與ASCII碼表有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
字符型常量指單個字符,是用一對單引號及其所括起來的字符表示。
例如:‘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 |
用char定義的變量為字符型變量。
例如:char op; 定義了一個字符型變量op,其數據類型為char型,即字符型數據。
可以對其進行賦值,例如op='*'就是將字符型常量’*‘賦值給變量op。
字符型變量在計算機中是按照ASCII碼的值來存儲的,可以和整形數據進行運算,其運算規格類似,例如:op = '*'+1;,那么op按字符型數據輸出就是’+’,按整型數據輸出就是43。
scanf()和printf()函數進行字符型數據的輸入輸出和整型浮點型的處理方式完全一樣,只是格式控制字符串中相應的格式控制說明為%c
。
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!
注: 此處一定要注意,這里的操作數和運算符之間必須連續輸入,兩者之間不能有空格。
這是因為空格也是一個字符,它會占據運算符的位置,在程序中就會是一個無法識別的運算符。
如上述運行結果第三個。
以上就是“C語言中的字符型數據與ASCII碼表有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。