Boring1031 发表于 2021-11-28 19:40:32

数组问题帮忙找下错

输入一行英文句子,统计其中的单词个数。例如,输入”How are you.”,则输出3
#include <stdio.h>
#include <string.h>

int main(void)
{
        int a,b,i,n;
        char str;
        gets(str);
        b=strlen(str);
       
        for(i=0;i<b;i++)
        {
                if(str==' ')
                {
                        n++;
                }
                printf("%d",n);
                return 0;
        }
               
}

番杰 发表于 2021-11-28 19:59:35

本帖最后由 番杰 于 2021-11-28 20:16 编辑

你的n在定义的时候没有赋值为0;
所以打印出来的值会是一个随机数;

另外后面的printf();和return 0;应该写在for循环的外面;

再另外,在打印n的值时需要加一;
就以输入“how are you”为例;这个字符串中只有两个‘ ’(空格),但是却有三个单词,单词数会比空格数多一,所以结果加一。

你的代码修改后:
#include <stdio.h>
#include <string.h>

int main(void)
{
      int a,b,i,n = 0;//赋初值
      char str;
      gets(str);
      b=strlen(str);
      
      for(i=0;i<b;i++)
      {
                if(str==' ')
                {
                        n++;
                }

      }
      printf("%d\n",n+1);//加一

          return 0;
}


我自己写的代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    int n = 0,ch;
    printf("请输入字符串:");
    while((ch=getchar())!='\n')
    {
      if(ch == ' ')
                n++;   
    }
   
   printf("%d",n+1);
   return 0;      
}

hujiamiao1990 发表于 2021-11-28 20:05:48

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

int main(void)
{
      int a,b,i,n;
      char str;
      gets(str);
      b=strlen(str);
      
      for(i=0;i<b;i++)
      {
                if(str==' ')
                {
                        n++;
                }
                printf("%d",n);
                //return 0;
      }
            return 0;
}

Boring1031 发表于 2021-11-28 20:14:21

番杰 发表于 2021-11-28 19:59
你的n在定义的时候没有赋值为0;
所以打印出来的值会是一个随机数;



谢谢了,就是n没有赋值{:10_303:}

basketmn 发表于 2021-11-28 20:15:05

本帖最后由 basketmn 于 2021-11-28 20:19 编辑

楼上两位写的都不太对哦
输入asdljk   aslasdl       salk   sadljk,你看看结果
PS:我也不会写
页: [1]
查看完整版本: 数组问题帮忙找下错