lkjhg603 发表于 2021-4-7 20:24:20

这个题怎么解

下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。已知:判断是否有新单词出现的方法——当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。
#include <stdio.h>
main()
{   
   charstr;
   int    i, num;
   scanf("%s", str);
   if (str != ' ')   
   {   
       num = 1;
   }
   else
   {   
       num = 0;
   }   
   for (i=1; i<20; i++)
   {   
   if (str!=' '|| str==' ')
   {      
       num++;   
   }
}
printf("num=%d\n", num);
}

肖-肖 发表于 2021-4-7 21:44:58

本帖最后由 肖-肖 于 2021-4-7 21:46 编辑

我总感觉用scaf接收一个字符串那么着是有问题滴,但我忘了怎么用scanf接收一个字符串了,这里先用gets吧!
代码如下:
#include <stdio.h>
int main()
{
    charstr;
    int i,num;
    puts("请输入一串字符串!");
    //scanf("%s", str);
    gets(str);
    if (str != ' ')
    {
      num = 1;//也就是你输入的字符串第一个字符是空格的话那么num=1
    }
    else
    {
      num = 0;//反之
    }
    for (i=1; str!='\0'; i++)
    {
      if (str!=' '&& str==' ')
      {
            num++;
      }
    }
   
    printf("您输入的字符串中有%d个单词!\n", num);
    return 0;
}

我已经验证过没问题的了。
验证效果如下:
请输入一串字符串!
I Love FishC.
您输入的字符串中有3个单词!

Process returned 0 (0x0)   execution time : 5.557 s
Press any key to continue.
OK 希望对你有帮助{:5_110:}

g1063496360 发表于 2021-4-7 22:01:10

肖-肖 发表于 2021-4-7 21:44
我总感觉用scaf接收一个字符串那么着是有问题滴,但我忘了怎么用scanf接收一个字符串了,这里先用gets吧!
代 ...

敢问一下 判断条件的str!='\0‘ 是啥意思

肖-肖 发表于 2021-4-7 22:12:27

本帖最后由 肖-肖 于 2021-4-7 22:15 编辑

g1063496360 发表于 2021-4-7 22:01
敢问一下 判断条件的str!='\0‘ 是啥意思

这个是用来判断你输入的字符串是否为结尾的,\0是字符串的结束标志哦~
!='\0'就代表没结束,对吧
还有就是我改逻辑或为逻辑与了,肯定是逻辑与嘛,因为并且嘛,并且肯定是逻辑与了呀~

g1063496360 发表于 2021-4-7 22:14:20

肖-肖 发表于 2021-4-7 22:12
这个是用来判断你输入的字符串是否为结尾的,\0是字符串的结束标志哦~
还有就是我改逻辑或为逻辑与了, ...

哈哈好! 感谢大哥!
页: [1]
查看完整版本: 这个题怎么解