漢字統計-漢字內碼-HDOJ2030

漢字機內碼在計算機的表達方式的描述是,使用二個字節,漢字的每個字節都是<0的。每個字節最高位一位爲1。 
計算機中,補碼第一位是符號位,1表示爲負數,所以漢字機內碼的每個字節表示的十進制數都是負數。
這題正如提示的那樣,從漢字機內碼的特點考慮,很顯然我們都知道,一個漢字佔兩個字節,但由於我們對漢字在ASCII不太瞭解,可能這題不好做,但是其實很好做,在ASCII中有128中字母,都有了各自的相應的數字對應,這麼說來在漢字一定是沒有對應的吧,那麼一定是負的,這就無須解釋了。

因爲不知道所要輸入的一行字符串會有多長則不能通過定義一個字符數組來接受所輸入的一行字符,可以通過e=getchar())!='\n'語句來不停的接收字符,並且邊接收邊判斷if(e<0)如果小於0則表明接收的是一個漢字的一半(漢字佔兩個字符),然後計數器加一,最終漢字的個數是計數器值的一半!!

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;


int main()
{

    int n,i,j,k,l;

    cin>>n;
    getchar();
    while(n--)
    {
        char e;
        int sum=0;
        while((e=getchar())!='\n')
            if(e<0)
                sum++;
        cout<<sum/2<<endl;
    }
    return 0;
}


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