其他分享
首页 > 其他分享> > HDU2030 汉字统计【文本处理】

HDU2030 汉字统计【文本处理】

作者:互联网

汉字统计
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 85598 Accepted Submission(s): 45932

Problem Description
统计给定文本文件中汉字的个数。

Input
输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。

Output
对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。

[Hint:]从汉字机内码的特点考虑~

Sample Input
2
WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa!
马上就要期末考试了Are you ready?

Sample Output
14
9

Author
lcy

Source
C语言程序设计练习(五)

问题链接HDU2030 汉字统计
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
  汉字机内码使用两个字节存储,即一个汉字由2个字节组成。为了区别于英文字母编码,汉字编码的每个字节其最高二进制位为1,即每个字节都是<0的。C/C++语言中,字符类型也是整数类型的一种,采用补码表示。补码最高位为1,其值为负。
  这个问题把输入当作字符流来处理是最为简单快捷的。
  需要注意的是,现在的汉字多用Unicode表示,其编码就不一样,判定程序逻辑也就变了。
程序说明:(略)
参考链接HDU2030 汉字统计【入门】
题记:按字符流读入数据进行处理是最佳选择,使用缓存那是浮云。

AC的C语言程序如下:

/* HDU2030 汉字统计 */

#include <stdio.h>

int main(void)
{
    int n;

    scanf("%d", &n);
    getchar();
    while (n--) {
        char ch;

        int cnt = 0;
        for(;;) {
           if ((ch = getchar()) == '\n') break;
           if (ch < 0) cnt++;
        }

        printf("%d\n", cnt / 2);
    }

    return 0;
}

标签:ch,字节,int,WaHaHa,汉字,文本处理,HDU2030
来源: https://blog.csdn.net/tigerisland45/article/details/120634363