漢字機內碼在計算機的表達方式的描述是,使用二個字節,每個字節最高位一位為1.
計算機中,補碼第一位是符號位,1 表示為負數,所以 漢字機內碼的每個字節表示的十進制數都是負數
所以這題也就可以簡化為輸入字符串判斷其中字符轉化為十進制數是否小於零.
注意:漢字是有兩個小於零的字符組成,所以在統計結果的時候就要將count除以2了.
#include <stdio.h>
int main( void)
{
int count;
char c;
while( 1){
count = 0;
while ((c = getchar()) != ' \n ') // 逐個判斷字符,漢字的是兩個字符
{
if (c < 0)
count++;
}
printf( " %d\n ", count / 2);
}
return 0;
}
int main( void)
{
int count;
char c;
while( 1){
count = 0;
while ((c = getchar()) != ' \n ') // 逐個判斷字符,漢字的是兩個字符
{
if (c < 0)
count++;
}
printf( " %d\n ", count / 2);
}
return 0;
}
getchar()函數:從stdio流中讀字符,相當於getc(stdin),它從標准輸入里讀取下一個字符.
getchar有一個int型的返回值.當程序調用getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩沖區中.直到用戶按回車為止(回車字符也放在緩沖區中).當用戶鍵入回車之后,getchar才開始從stdin流中每次讀入一個字符.getchar函數的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待后續getchar調用讀取.也就是說,后續的getchar調用不會等待用戶按鍵,而直接讀取緩沖區中的字符,直到緩沖區中的字符讀完為后,才等待用戶按鍵.
注意:如果輸入的是中文字符,由於漢字是兩個字節,所以getchar()函數對漢字要處理兩次.比如我輸入2個漢字,getchar()處理4次,返回4個值,由於是中文返回的肯定是負數.
什么是漢字機內碼?
答:機內碼,就是用二個字節,最高位為1,用它來表示一個漢字,在用到這個字時,系統按這個編號去找它的點陣信息,然后把它顯示出來
