c语言怎么统计输入的汉字的个数和英文单词的个数

如题所述

#include <stdio.h>
int main(void)
{
    char s[1000];
    int c,e;
    char *cp;

    gets(s);
    cp = s;
    c = e = 0;
    while(*cp)
    {
        if(*cp<0)
        {
            c++;
            cp++;
        }
        else if((*cp >= 'a' && *cp <= 'z') || (*cp >= 'A' && *cp <= 'Z'))
        {
            e++;
            while((*cp >= 'a' && *cp <= 'z') || (*cp >= 'A' && *cp <= 'Z'))
                cp++;
        }
        cp++;
    }
    printf("汉字%d个,英文单词%d个", c, e);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-10
#include<stdio.h>
int main()
{
int a, b, c,xiaoxie,daxie;
char i;
printf("请输入字符或数字(输入回车结束):\n");
while ((i = getchar()) != 10)
{
if(i>='a'&&i<='z')
xiaoxie++;
if(i>='A'&&i<='Z')
daxie++;
a++;
if (i == ' ')
b++;
if (i >= '1' && i <= '9')
c++;
}
printf("字符个数为%d\n", a);
printf("空格数有%d", b);
printf("\n数字数有%d\n", c);
printf("小写字母有%d\n",xiaoxie);
printf("大写字母有%d\n",daxie);
}追问

汉字呢。。

追答

汉字。。。。考虑到汉字编码,等你以后学会教我啊

追问

。。

追答

在我的代码上加个一两百行什么的差不多把

第2个回答  推荐于2016-08-18
一个汉字由两个连续负值的ASCII码组成。
当ASCII值为负j++,最后汉字个数为j/2
单词个数基本上就是数空格
我和题主一样懒
就这样本回答被提问者采纳
第3个回答  2019-08-23
#include <stdio.h>

#define MAX 1024

int main(void)
{
int sum = 0,chineses = 0;
char str[MAX];
char *ch = str;

printf("请输入一串字符:");

fgets(str,MAX,stdin);

printf("您输入的内容是:%s \n",str);

while(*ch != '\0')
{
if(*ch < 0 && (*ch+1)<0)
{
chineses++;
ch =ch + 2;
}
else
{
ch++;
}

sum++;

}
printf("%d字符 %d汉字",sum-1,chineses);

return 0;
}
第4个回答  2019-09-09
一个汉字由两个连续负值的ASCII码组成。
当ASCII值为负j++,最后汉字个数为j/2
单词个数基本上就是数空格
我和题主一样懒
就这样
相似回答