汉字统计-汉字内码-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;
}


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