统计给定文本文件中汉字的个数,不知道哪里有运行错误

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

Input

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

Output

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

Sample Input

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

14
9


#include<stdio.h>
int main()
{
    int n;
    char a[100];
    scanf("%d", &n);
    getchar();
    for (int i = 0; i < n; i++)
    {
        int cot = 0;
        gets(a);
        for (int i = 0;a[i]!='\0'; i++)
        {
            if (a[i]<0)
            {
                cot++;
            }
        }
        printf("%d\n", cot / 2);
    }
    return 0;
}

img


题主的问题在两层for()循环里,用了同一个自变量 i ,代码执行就乱了,修改如下,供参考:


#include<stdio.h>
int main()
{
    int n;
    char a[1024];
    scanf("%d", &n);
    getchar();
    for (int i = 0; i < n; i++)
    {
        int cot = 0;
        gets(a);
        for (int j = 0; a[j] != '\0'; j++)
        {
            if (a[j] < 0)
            {
                cot++;
            }
        }
        printf("%d\n", cot / 2);
    }
    return 0;
}

逐个字节检查,遇到字节大于0x80的,就是一个汉字,同时跳过下一个字节
你需要在cot++后面增加一句i++