HDU2030 汉字统计文本处理
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}
以上是关于HDU2030 汉字统计文本处理的主要内容,如果未能解决你的问题,请参考以下文章