zoukankan      html  css  js  c++  java
  • hdu:2030.汉字统计

    Problem Description

    统计给定文本文件中汉字的个数。
     
    Input
    输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。
     
    Output
    对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。

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

    Sample Input
    2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready?
     
    Sample Output
    14 9
     
    Author
    lcy
     
    Source
     
    Recommend
    lcy   |   We have carefully selected several similar problems for you:  2031 2032 2033 2034 2036 
     

      这个题根据提示,主要考虑两个问题就好:
      (1)每个汉字的ASCII码都是小于0的。非汉字都是大于0的。
      (2)每个汉字占用两个字节,即占两个ASCII码,算出的个数是ASCII的个数,所以最后的次数要除以二。
     
      下面详解一下汉字机内码吧,我也是看了别人的才知道。
      因为汉字处理系统要保证中西文的兼容,当系统中同时存在ASCII码和汉字国标码时,将会产生二义性。例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示西文“0”和“!”的ASCII码。为此,汉字机内码应对国标码加以适当处理和变换。国标码的机内码为二字节长的代码,它是在相应国标码的每个字节最高位上加“1”,即汉字机内码=汉字国标码+8080H例如,上述“啊”字的国标码是3021H,其汉字机内码则是B0A1H。(来自百度百科)

       概念:在计算机内部表示汉字的代码。

       特点:汉字内码采用两个字节,一个汉字占两个ASCII字符;汉字内码最高位为1,ASCII码最高位为0

       汉字内码与区位码的关系:

       汉字内码高位字节=(区号)16+(A0)16

       汉字内码低位字节=(位号)16+(A0)16

         例:汉字“啊”的区位码为1601,则其汉字内码为(B0A1)16。

      (来源:https://blog.csdn.net/hurmishine/article/details/49287035)

     
    #include <stdio.h>
    int main ()
    {
        int i,n,sum;
        char c;
        scanf("%d",&n);
        getchar();
        while (n--)
        {
            sum =0 ;
            while ( (c= getchar())!= '
    ')
            {
                if (c < 0 )
                    sum++;
            }
            printf("%d
    ",sum/2);
        }
    
        return 0;
    }
     
  • 相关阅读:
    Spring HTTP Service
    Nexus搭建Maven私服
    虚拟机Class文件结构笔记
    JVM内存区域与内存溢出异常
    深入学习虚拟机类加载过程
    虚拟机常用的内存查看与分析工具
    对Java内存模型即JMM的理解
    通过Redux源码学习基础概念一:简单例子入门
    跟着官网的例子学Reacjs (一)FilterableProductTable
    es6继承 vs js原生继承(es5)
  • 原文地址:https://www.cnblogs.com/jyroy/p/8975932.html
Copyright © 2011-2022 走看看