标题:统计字符串中单词的数量
取消只看楼主
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
结帖率:88.89%
已结贴  问题点数:15 回复次数:5 
统计字符串中单词的数量
【问题描述】
输入一行字符(不多于80个字符),统计并输出其中的“单词”数,这里所谓“单词”就是由可显示字符组成的一子字符串,“单词”间用一个或多个空格分隔,首“单词”前和末“单词”后,可以有也可以没有空格。
【输入形式】
从键盘输入一行字符(不多于80个字符)。
【输出形式】
输出“单词”的个数。
【样例输入】
abcd  x1y2z3 qwe#$&%  789  *    end
【样例输出】
6

-----------------------我写的代码输出总是 1 ,想不通问题出在了哪里,请各位帮忙查找一下------------------------

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

int WordsNum(char *p)
{
    int i,count=0,before=1;

    for(i=0;p[i]!='\0';i++)
    {
        if(!isalpha(p[i]) && isalpha(p[i+1]))  //前一个不是字母,后面的是字母
          {
              before = 1;
          }
         else
        {
            if(before)
                count++;
            before = 0;
        }
    }
    return count;
}
int main()
{
    char s[80];
    int num;

    scanf("%s",s);
    num = WordsNum(s);
    printf("%d\n",num);

    return 0;
}
搜索更多相关主题的帖子: 输出 字符 输入 int 单词 
2020-04-14 14:05
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
得分:0 
回复 2楼 lin5161678
那要用循环解决吗?
for(i=0;s[i]!='\n';i++)
        scanf("%c",&s[i]);
我将它改成了这个,也还是不行。。。。

今天再晚也是早,明天再早也是晚
2020-04-14 14:19
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
得分:0 
回复 4楼 纯蓝之刃

这个方法和楼上的一样,输出也还是 1,我现在怀疑是不是代码有问题了。。。

今天再晚也是早,明天再早也是晚
2020-04-14 14:27
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
得分:0 
回复 8楼 rjsp
好像是的,谢谢提醒哈!

今天再晚也是早,明天再早也是晚
2020-04-14 17:00
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
得分:0 
回复 6楼 纯蓝之刃
见了鬼了。!

今天再晚也是早,明天再早也是晚
2020-04-14 17:14
邹峰研
Rank: 2
等 级:论坛游民
帖 子:46
专家分:18
注 册:2020-3-4
得分:0 
回复 10楼 lin5161678
好的嘞,谢谢!

今天再晚也是早,明天再早也是晚
2020-04-14 17:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501039-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.350708 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved