YTUOJ-汉字统计

题目描述

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

输入

输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本,每段文本的中英文字符数总共不超过100个。

输出

对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~

样例输入

1
WaHaHa! WaHaHa!

提示

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{

    int n;
    char s[1000];
    cin>>n;
    getchar();
    while (n--)
    {
        int count=0,i=0;

        gets(s);
        while (s[i]!= '\0')
        {
            if (s[i] < 0)
            {
                count++;
                i++;
            }
            i++;
        }
        cout<<count<<endl;
    }
    return 0;
}

运行结果:

学习心得:

其实一开始要我做这道题目的时候,我是拒绝的,因为我完全不知道汉字机内码是怎么回事,直到度娘跟我说

汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1.

计算机中,补码第一位是符号位,1 表示为负数,所以 汉字机内码的每个字节表示的十进制数都是负数。

所以我就明白该怎么加特效了,Duang~Duang~Duang~。看到截图的班上的童鞋表打我。

时间: 2024-11-06 21:22:30

YTUOJ-汉字统计的相关文章

HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)

ASCII码与汉字机内码: 在做HDOJ 2030 汉字统计一题中在讨论区看到有楼主发帖说汉字的ASCII码值为负数.但书中的ASCII码的范围又是0-255(其中0--127是国际通用标准码,128--255是拓展码). 经过请教大牛与查阅资料得,汉字并没有ASCII码,汉字是又机内码表示的,即ansi编码,是系统根据当前地区然后确定的当地编码,例如大陆的ansi编码就代表 国标码GBK编码.各个地区之间的机内码是有差异的. 汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一

HDOJ 汉字统计

汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28458    Accepted Submission(s): 15579 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,

hdu 2030 汉字统计 (java)

问题: java判断中文比较复杂. 汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 29746    Accepted Submission(s): 16314 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对

HDU 2027 汉字统计

汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 30230    Accepted Submission(s): 16588 Problem Description 统计给定文本文件里汉字的个数. Input 输入文件首先包括一个整数n,表示測试实例的个数,然后是n段文本. Output 对于每一段文本.输出当中的汉字的个数.

hdu 2030 汉字统计

本题链接:点击打开链接 本题大意: 求所输入字符串中汉字的个数. 本题思路: 在做此题时我也不知道汉子在计算机中是怎么存放的,经过查找资料知道,汉字是没有ASCΙΙ码的,汉字在计算机中使用两个字节存放,并且每个字节的最高位都是1,而在计算机中,字节最高位为符号位,1表示负数,故汉字机内码每个字节表示的十进制都是负数,所以需统计的便是有多少负数了,又因为每个汉字占两个字节,故可采取相应措施. 参考代码: #include<stdio.h> #include<string.h> cha

HDU2030 汉字统计

解题思路:一个汉字在字符串中是以两个负的字符形式存储的. 所以只要统计字符串中负的字符的个数并除以二就可以了. 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int maxn = 240000; 5 char str[maxn]; 6 int main() 7 { 8 int n; 9 scanf("%d", &n); 10 getchar(); 11 whil

HDU_oj_2030 汉字统计

Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行. [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9 分析: 在unicod

3G - 汉字统计

统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行. [Hint:]从汉字机内码的特点考虑~  Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9 // 详见代码 1 #include<stdio.h> 2

汉字统计 题解

统计给定文本文件中汉字的个数. Input输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行. [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9代码如下: 1.实质上汉字应该用字符型而不是整型去读取和显示它.  

HDoj 2030 汉字统计

Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行. [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9 Author lcy