1. 程式人生 > >題解報告:hdu 2030 漢字統計

題解報告:hdu 2030 漢字統計

中漢字 nbsp for include put 特點 input rep return

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2030

Problem Description 統計給定文本文件中漢字的個數。 Input 輸入文件首先包含一個整數n,表示測試實例的個數,然後是n段文本。 Output 對於每一段文本,輸出其中的漢字的個數,每個測試實例的輸出占一行。
[Hint:]從漢字機內碼的特點考慮~ Sample Input 2 WaHaHa! WaHaHa! 今年過節不說話要說只說普通話WaHaHa! WaHaHa! 馬上就要期末考試了Are you ready? Sample Output 14 9 解題思路:這道題主要考察漢字機內碼
,了解漢字機內碼的特點之後這題就是水題了。漢字采用的是擴展編碼,一般占用2個字節,且其字節第一位為1(ASCII第一位為0(正數)),即漢字的ASCII為負數,所以統計完負數後取一半輸出即輸出為s/2。計算機中,補碼第一位是符號位1表示為負數,所以漢字機內碼的每個字節表示的十進制數都是負數,且漢字占用兩個字節結果要除以2。 AC代碼:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,s;
 6     char c;
 7     cin>>n;
 8
getchar();//吃掉回車符的影響 9 while(n--){ //n個實例 10 s=0; //統計ASCII為負數的漢字 11 while((c=getchar())!=\n){ //讀入一整行 12 if(c<0)s++; 13 } 14 cout<<s/2<<endl; //占兩個字節,將結果除以2 15 } 16 return 0; 17 }

題解報告:hdu 2030 漢字統計