yueyufeng 发表于 2023-11-26 17:08:43

找单词数

从键盘输入一行字符(长度小于1000),统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。

#include<stdio.h>
#include<string.h>
int main()
{
    char str1;
    fgets(str1,100,stdin);
    int n=strlen(str1);
    int i,s=0;
    if((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z'))
    {
      s++;
    }
    for(i=1;i<n;i++)
    {
      if((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z'))
      {
            s=s;
      }
      else
      {
            if(str1==' ')
            {
               if(str1==' ')
             {
                s++;
             }
            }
      }
    }
   printf("%d",s+1);
   return 0;
}

FishC_GPT 发表于 2023-11-26 17:08:56

有多种方法可以统计一行字符中的单词个数。下面是一种简单的实现方式:

#include <stdio.h>
#include <string.h>

int main() {
    char str;
    fgets(str, 1000, stdin);
   
    int wordCount = 0;
    int isWord = 0; // 标记当前是否在一个单词中
   
    for (int i = 0; i < strlen(str); i++) {
      // 如果当前字符是字母或数字,且前一个字符不是字母或数字,则认为进入了一个新的单词
      if ((str >= 'a' && str <= 'z' || str >= 'A' && str <= 'Z' || str >= '0' && str <= '9') && !(str >= 'a' && str <= 'z' || str >= 'A' && str <= 'Z' || str >= '0' && str <= '9')) {
            isWord = 1;
            wordCount++;
      }
    }
   
    printf("单词个数:%d\n", wordCount);
   
    return 0;
}

这段代码通过遍历输入字符串中的每一个字符,当遇到字母或数字时,并且它的前一个字符不是字母或数字时,就认为进入了一个新的单词。通过这种方式逐个统计单词个数。

需要注意的是,在C语言中,字符数组需要提前分配内存空间,所以我们声明了一个长度为1000的字符数组str来存储输入字符。

另外,注意fgets()函数会在读取到换行符时结束读取,如果用户输入行字符的长度超过了999个字符,可能需要进行额外处理。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yueyufeng 发表于 2023-11-26 17:19:05

FishC_GPT 发表于 2023-11-26 17:08
有多种方法可以统计一行字符中的单词个数。下面是一种简单的实现方式:



只有英文和空格,找单词哪里不对
#include<stdio.h>
#include<string.h>
int main()
{
    char str1;
    fgets(str1,100,stdin);
    int n=strlen(str1);
    int i,s=0;
    if((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z'))
    {
      s++;
    }
    for(i=1;i<n;i++)
    {
      if(((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z'))&&!(((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z'))))
      {
         s++;
      }
    }
   printf("%d",s);
   return 0;
}

FishC_GPT 发表于 2023-11-26 17:19:26

yueyufeng 发表于 2023-11-26 17:19
只有英文和空格,找单词哪里不对
#include
#include ...

您的代码在判断字符是否为字母和空格上有一些问题,并且缺少对单词个数的统计。

下面是修正后的代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char str;
    fgets(str, 1000, stdin);
   
    int wordCount = 0;
    int inWord = 0; // 标记当前是否在一个单词中
   
    for (int i = 0; i < strlen(str); i++) {
      // 如果当前字符是字母,则认为进入了一个新的单词
      if (isalpha(str)) {
            if (!inWord) {
                inWord = 1;
                wordCount++;
            }
      } else {
            inWord = 0;
      }
    }
   
    printf("单词个数:%d\n", wordCount);
   
    return 0;
}

这段代码会从键盘输入一行字符串,然后通过遍历字符串的每个字符,判断是否为字母。如果当前字符是字母且前一个字符不是字母,则认为进入了一个新的单词,将单词个数加1。最后输出统计出的单词个数。

注意,在使用该代码时,您需要使用英文和空格作为输入,否则结果可能不准确。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yueyufeng 发表于 2023-11-26 17:31:43

FishC_GPT 发表于 2023-11-26 17:19
您的代码在判断字符是否为字母和空格上有一些问题,并且缺少对单词个数的统计。

下面是修正后的代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char str1;
    fgets(str1,1000,stdin);
    int n=strlen(str1);
    int i,s=0,Word=0;
    for(i=0;i<n;i++)
    {
      if(((str1>='a'&&str1<='z')||(str1>='A'&&str1<='Z')||(str1 >= '0' && str1 <= '9')))
      {
            if (!Word)
            {
                Word = 1;
               s++;
            }
      } else {
            Word = 0;
      }
    }
   printf("%d",s);
   return 0;
}
哪里不对

FishC_GPT 发表于 2023-11-26 17:32:06

yueyufeng 发表于 2023-11-26 17:31
#include
#include
int main()
{
    char str1;
...

您的代码中有一些语法错误和逻辑问题。下面是修正后的代码:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char str1;
    fgets(str1, 1000, stdin);
    int n = strlen(str1);
    int wordCount = 0;
    int inWord = 0;

    for (int i = 0; i < n; i++) {
      if (isalpha(str1)) { // 判断当前字符是否为字母
            if (!inWord) {
                inWord = 1;
                wordCount++;
            }
      } else {
            inWord = 0;
      }
    }

    printf("单词个数:%d\n", wordCount);

    return 0;
}

修正后的代码使用一个布尔变量`inWord`来标记是否正在统计一个单词,在遍历字符串的每个字符时,如果当前字符是字母且上一个字符不是字母,则认为进入了一个新的单词,将单词个数加1。最后输出统计结果。

需要注意的是,输入的字符串长度不能超过数组的大小,这里假设字符串长度不会超过1000。另外,该方法只适用于英文和空格的情况。如果要处理其他语言或特殊字符,可能需要采用其他的方法。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 找单词数