标签:ch 字节 int WaHaHa 汉字 文本处理 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。