- 全國計算機等級考試教程:二級C語言程序設計
- 全國計算機等級考試教材編寫組
- 2830字
- 2019-11-22 18:55:12
2.5 字符型數據
前面講解的整型和實型與數學計算密切相關。C語言還提供了字符型數據來處理文本信息,例如,對一篇英文文章中的單詞按字母的某一順序進行排序;將某一文件中所有字符的ASCII碼值加上10等。字符型數據就是用來表示英文字母、符號和漢字的數據。
2.5.1 字符變量
字符變量的類型說明符是char,其定義的一般形式如下:
char 變量名1[,變量名2,…];
例如
charc1,c2;c1=′a′;c2=′b′;
這樣就定義了兩個字符型的變量c1和c2,并分別賦值為字符型常量′a′和′b′ 。
說明
字符值是以ASCII碼值的形式存放在變量的內存單元之中的。例如,a的十進制ASCII碼值是97,b的十進制ASCII碼值是98。對字符變量c1賦予a值,即“c1=′a′;”,實際上是在相應的存儲單元中存放97的二進制代碼:
c100100001
在VC6.0中,字符型數據占1字節,因此字符型變量的值實質上是一個8位的整數值,取值范圍一般是 -128~127。char型變量也可以加修飾符unsigned,unsigned char型變量的取值范圍是0~255。
2.5.2 字符常量
學習提示
【理解】轉義字符的形式及功能
什么是字符常量呢?從表現形式上來說,就是用一對單引號括起來的單個字符。
例如
′a′,′b′,′#′,′+′都是合法的字符常量 。
說明
在使用字符常量的時候應該注意,字符常量只能用單引號括起來,不能用雙引號或其他符號。
字符可以是字符集中任意字符,也就是說數字加上單引號就成為字符了。例如,′ 1′和1是不同的,′1′是字符常量,1是數值常量。
對于字符型數據,除了可以直接用單引號來表示以外,如′a′、′ 0′、′A′,也可以用該字符的ASCII碼值表示,例如,十進制數65表示大寫字母A。
除了以上形式的字符常量外,C語言還允許使用一種以特殊形式出現的字符常量,以表示某些非圖形字符,這就是以“\”開頭的轉義字符序列。在前面章節中,曾使用“\n”來表示換行。“\n”實際上是一個字符,它的ASCII碼值為10。常見的以“\”開頭的轉義字符如表2-3所示。
表2-3 轉義字符表

【例2-3】轉義字符的使用。
程序代碼
#include<stdio.h>
void main(?。?/p>
{ int a,b,c;/*定義了3個變量*/
a=0;
b=1;
c=2;/*分別對單個整型變量賦初值*/
printf("%d\n\t%d-%d\n>>%d-%d\
t\b%d\n",a,b,c,a,b,c);
/*輸出3個整型變量的值*/
}
根據“printf("%d\n\t%d-%d\n>>%d-%d\t\b%d\n",a,b,c,a,b,c);”語句,并結合表2-3,一起來分析程序的輸出結果。
●程序在第1列輸出a值0之后遇到轉義字符“\n”,回車換行。
●遇到轉義字符“\t”,于是跳到下一制表位置,再輸出b值1。
●輸出一個字符“-”,緊接著再輸出c值2。
●又遇到轉義字符“\n”,因此再回車換行。
●輸出兩個“>”字符之后又輸出 a值0。
●再輸出字符“-”,又輸出b值1。
●再次遇到轉義字符“\t”,跳到下一制表位置,但下一轉義字符“\b”又使退回一格,最后輸出c值2。
程序的輸出結果如下:
0
1-2
>>0-2
請注意
字符變量的取值是字符常量,也就是說字符變量用于存放一個字符常量(切記,不要以為在一個字符型變量中可以存放一個字符串,即包括若干個字符)。
2.5.3 字符型數據的運算
學習提示
【理解】字符型數據的運算原理
C語言把字符型數據當作一個較小的整型數據,可以像使用整型量一樣使用它,下面來看一個例子。
【例2-4】對字符變量的運算。
程序代碼
#include<stdio.h>
void main(?。?/p>
{ char c1=′a′;/*定義一個字符變量c1,
并且初始化為字符常量a*/
char c2;/*定義一個字符變量c2*/
c2=c1-(′a′-′A′);
printf("% c\n",c2);
/*輸出字符變量c2*/
}
分析程序可知,程序中的“′a′-′A′”是大小寫字母之間的差值,參加運算的是兩個字符所對應的ASCII碼值“97”和“65”,故運算結果為32。也可以把語句寫成“c2=c1-32;”,其效果是一樣的。最終程序的運行結果是輸出字符“A”。
C語言允許對整型變量賦予字符值,也允許對字符變量賦予整型值。在輸出時,可以將字符變量按整型量輸出,也可以將整型量按字符量輸出。
例如
printf("%d",′A′);
程序運行結果為65,即輸出的是字符“A”的ASCII碼值。
2.5.4 字符串常量
C語言除了允許使用字符常量外,還允許使用字符串常量。字符串常量是用一對雙引號("")括起來的零個或多個字符的序列。
例如
"CHINA"和 "0123456789"都是字符串常量。
在存儲字符串常量時,由系統在字符串的末尾自動加一個“\0”作為字符串的結束標志。
如果有一個字符串為“CHINA”,則它在內存中的實際存儲如圖2-2所示。

圖2-2 字符串常量在內存中的存儲
最后一個字符“\0”是系統自動加上的,即字符串“CHINA”占用了6個字節的內存空間。
有很多人不能理解′a′和"a"的區別,那是因為他們不能正確理解字符常量和字符串常量的區別。下面就從表示方法、內存中的存儲方式等方面來對二者進行比較。
字符常量使用單引號,而字符串常量使用雙引號。例如,′a′表示的是字符常量,而"a"則表示的是只有一個字符長度的字符串常量。
二者在內存中的存儲也不同,字符常量存儲的是字符的ASCII碼值,而字符串常量除了要存儲有效的字符外,還要存儲一個“字符串結束標志(\0)”,以便系統判斷字符串是否結束。例如,字符常量′a′在內存中占一個字節,其存儲形式如圖2-3所示。
而字符串常量占用的字節數是字符串的總長度加1。額外增加的一個字節用于存放字符“\0”。其在內存中的存儲形式如圖2-4所示。

圖2-4 字符串常量在內存中的存儲
在實際應用時,可以把一個字符常量賦予一個字符型變量,但不能把一個字符串常量賦予一個字符變量。在 C語言中沒有相應的字符串變量。但是可以用一個字符數組來存放一個字符串常量。字符數組將在數組一章介紹。
真題演練
【例1】已知大寫字母“A”的ASCII碼值是65,小寫字母“a”的ASCII碼值是97。以下不能將變量c中的大寫字母轉換為對應小寫字母的語句是( )。
A)c=(′A′+c)% 26- ′a′
B)c=c+32
C)c=c- ′A′+′a′
D)c=(c- ′A′)% 26+′a′
【解析】根據題意可知,小寫字母比與之對應的大寫字母的ASCII碼值大32。選項A中,字符A加上c表示的大寫字符再對字母個數26取余,本身這個表達式沒有任何含義,所以選擇選項A。
【答案】A
【例2】下面選項中合法的字符常量是(?。?。
A)"X"
B)′X′
C)′abc′
D)′\′
【解析】字符常量是用單引號括起來的一個字符。選項A中,使用雙引號,故錯誤;選項 C中,字符常量只能是單個字符,不能是一串字符,故錯誤;選項D中,以反斜線“\”開頭的是轉義字符。因此選項B正確。
【答案】B
【例3】若有定義語句:charc=′\101′;,則變量c在內存中占(?。?。
A)1個字節
B)2個字節
C)3個字節
D)4個字節
【解析】本題考查字符變量的存儲空間,每個字符變量被分配一個字節的內存空間。因此選項 A正確。
【答案】A
【例4】若有以下程序:
#include<stdio.h>
main(?。?/p>
{ charc1,c2;
c1=′C ′+′ 8′- ′3′;c2=′ 9′- ′ 0′;
printf("%c%d\n",c1,c2);
?。?/p>
則程序的輸出結果是(?。?。
A)H ′ 9′
B)H9
C)F ′ 9′
D)表達式不合法,輸出無定值
【解析】本題考查字符變量以及printf( )函數相關知識。字符變量c1被賦值為“′C ′+′ 8′- ′3′”,即ASCII碼值的運算,67+54-49=72,即“′H′”;字符變量c2被賦值為“′9′- ′0′”,但輸出時需要注意的是,c1以字符變量輸出,而c2是以十進制整型變量輸出。因此選項B正確。
【答案】B
- 2020年3月全國計算機等級考試《四級軟件工程》復習全書【核心講義+歷年真題詳解】
- 全國計算機等級考試一本通:一級計算機基礎及MS Office應用
- 計算機應用技能實戰:全國計算機等級考試一級MS Office
- 2014年全國計算機等級考試3年真題精解與過關全真訓練題:二級公共基礎知識
- 5天通過職稱計算機考試(考點視頻串講+全真模擬):Excel 2003中文電子表格(第2版) (全國專業技術人員計算機應用能力考試指導叢書)
- 大學計算機應用基礎教程實驗指導
- 全國計算機等級考試模擬考場二級Python
- 全國計算機等級考試真題匯編與專用題庫:二級MS Office高級應用
- 全國職稱計算機考試標準教材與專用題庫:中文Windows 7操作系統
- 全國計算機等級考試《二級公共基礎知識》【教材精講+真題解析】講義與視頻課程【12小時高清視頻】
- 數據結構搶分攻略:真題分類分級詳解(第2版)
- 2020年3月全國計算機等級考試《二級Visual Basic語言程序設計》歷年真題與模擬試題詳解
- 軟件設計師考前突破:考點精講、真題精解、難點精練
- PMP項目管理認證學習指南(第4版)
- 全國計算機等級考試教程:一級計算機基礎及WPS Office應用