漢字統計(2030)

漢字統計

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23842    Accepted Submission(s): 13010


Problem Description
統計給定文本文件中漢字的個數。
 

Input
輸入文件首先包含一個整數n,表示測試實例的個數,然後是n段文本。
 

Output
對於每一段文本,輸出其中的漢字的個數,每個測試實例的輸出佔一行。

[Hint:]從漢字機內碼的特點考慮~

 

Sample Input
2 WaHaHa! WaHaHa! 今年過節不說話要說只說普通話WaHaHa! WaHaHa! 馬上就要期末考試了Are you ready?
 

Sample Output
14 9
-------------------------------------------------
注意:
漢字機內碼在計算機的表達方式的描述是,使用二個字節,每個字節最高位一位爲1。 
計算機中, 補碼第一位是符號位, 1 表示爲 負數, 
所以 漢字機內碼的每個字節表示的十進制數都是負數
統計輸入字符串含有幾個漢字,只只需求出字符串中小於0的字符有幾個,將它除以2就得到答案



#include<stdio.h>
#include<string.h>
int main()
{
char s[10000];
int n,i;
while(scanf("%d",&n)!=EOF)
{
getchar();
while(n--)
{
gets(s);
//scanf("%s",s); 在這別用scanf,因爲scanf遇到空格即停止
int count=0;
for(i=0;i<strlen(s);i++)
{
if(s[i]<0) count++;
}
printf("%d\n",count/2);
}


}
return 0;
}




F:2


#include"stdio.h"
#include"string.h"
int main()
{
char s[1000];
int i,j,n,m;
scanf("%d\n",&n);
while(n--)
{
m=0;
gets(s);
j=strlen(s);
for(i=0;i<j;i++)
{
if((s[i]<32)||(s[i]>126))
m++;


}
printf("%d\n",(m+1)/2);


}
return 0;
}


-------------------------------------------------------------------------------------
漢字機內碼
漢字機內碼,又稱“漢字ASCII碼”,簡稱“內碼”,指計算機內部存儲,處理加工和傳輸漢字時所用的由0和1符號組成的代碼。輸入碼被接受後就由漢字操作系統的“輸入碼轉換模塊”轉換爲機內碼,與所採用的鍵盤輸入法無關。機內碼是漢字最基本的編碼,不管是什麼漢字系統漢字輸入方法,輸入的漢字外碼到機器內部都要轉換成機內碼,才能被存儲和進行各種處理。

1具體解釋編輯

漢字在計算機內部其內碼是唯一的。因爲漢字處理系統要保證中西文的兼容,當系統中同時存在ASCII碼和漢字國標碼時,將會產生二義性。例如:有兩個字節的內容爲30H和21H,它既可表示漢字“啊”的國標碼,又可表示西文“0”和“!”的ASCII碼。爲此,漢字機內碼應對國標碼加以適當處理和變換。
國標碼的機內碼爲二字節長的代碼,它是在相應國標碼的每個字節最高位上加“1”,即
漢字機內碼=漢字國標碼+A0A0H
例如,上述“啊”字的國標碼是3021H,其漢字機內碼則是B0A1H。
漢字機內碼的基礎是漢字國標碼
機內碼:爲了避免ASCII碼和國標碼同時使用時產生二義性問題,大部分漢字系統都採用將國標碼每個字節高位置1作爲漢字機內碼。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關係。
漢字機內碼、國標碼區位碼三者之間的關係爲:區位碼(十進制)的兩個字節分別轉換爲十六進制後加2020H得到對應的國標碼;機內碼是漢字交換碼(國標碼)兩個字節的最高位分別加1,即漢字交換碼(國標碼)的兩個字節分別加80H得到對應的機內碼;區位碼(十進制)的兩個字節分別轉換爲十六進制後加A0H得到對應的機內碼。
舉例:機內碼位BEDF,求區位碼
有兩種解法:1.BEDFH-A0A0H=1E3FH=3063D;
2.BEDFH-8080H=3E5FH(國標碼),3E5FH-2020H=1E3FH=3063D.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章