| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1351 人关注过本帖
标题:每日一题!NO.4(适合新手做练习)-[统计字符问题](给出答案)
取消只看楼主 加入收藏
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
结帖率:91.67%
收藏
已结贴  问题点数:2 回复次数:8 
每日一题!NO.4(适合新手做练习)-[统计字符问题](给出答案)
题目:输入一行字符(字符串),统计其中包含多少单词,单词之间用空格分开
      附加要求:需要验证统计的单词是合法的,也就是说统计的单词字符是字母,(谢谢5楼的提醒)

题不难
希望新手们动哈手,错了大家为你找出错误,不要害羞,实践出真理,
注意加注释哦!先前自己太少看给出评论了,呵呵,我尽量发更多时间学习你们的成果,
(由于要考试了,怕挂课,我又不是计算机专业,只是喜欢。所以得发时间去背我们专业的资料,请大家谅解)
图片附件: 游客没有浏览图片的权限,请 登录注册

加入了符号的判定把符号也当成空格,添加非单词的验证!
但是还是不能完全满足实际英文判定的要求,比如说 有些单词中有-符号,还是由于英语一直没学好过,所以就这样吧!
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
    int ch, space=0, wd=0;//定义变量
    char put[100];
    gets(put);
    if(put[0]==' ')//判断第一个字符是不是空格
    {
        space=1;
    }
    for(int i=0;put[i]!='\0';i++)//循环扫描
    {
        if(put[i]==' '||put[i]=='.'||put[i]=='!'||put[i]=='?'||put[i]==',')//判断是否出项空格,标点符号
        {
            if(space==0)//判断是不是非连续的空格或符号
            {
                wd+=1;//加一个单词(没有验证是不是非法单词)
                space=1;//标志已经出现了空格和字符
                ch=0;//标致这个单词还没出现非法字符
            }
        }
        else
        {
            if((put[i]<39||(39<put[i]&&put[i]<65)||(90<put[i]&&put[i]<97)||122<put[i])&&ch==0)//判断单词是否出现非法字符
            {wd-=1;//出出项非法字符把这个单词就为非法的,减一个
              ch=1;//ch=1,表示这个单词中已经出非法字符
            }
            space=0;//表示下一个出现的字符为非连续空格或符号
        }
    }
    if(space==0)//如果最后没有出现的空格或字符,单词数加一
    {
        wd+=1;
    }
    printf("%d",wd);

}


[ 本帖最后由 啊C 于 2011-6-8 21:52 编辑 ]
搜索更多相关主题的帖子: 计算机专业 统计 
2011-06-07 23:14
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用cxs365在2011-6-8 07:56:37的发言:

这个题目出的不是很好,尽管大家都明白题目的意思。要求是输入字符(串),那么“@#¥%…&*”这些都算,但是你不能说它们是单词。
统计单词之间的空格数就知道单词的个数,也不一定正确。如果输入的第一个字符就是空格呢?还有输入的最后一个字符也加上一个空格呢?
新手,答案正在思考中……
恩,说得对,是我大意了,还要要求输入的是字母,对吧!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 11:53
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用voidx在2011-6-7 23:22:29的发言:

统计空格数然后 + 1 就好。连续空格当做一个处理
如果单词之间出显多个空格!就不能实现了!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 11:56
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
貌似有问题!
以下是引用cosdos在2011-6-8 01:11:19的发言:

#include  
#include  
#include  
int main(void)
{
    int ch, space=1, wd=0;
    while( (ch=getchar())!='\n' && ch != EOF )
    {
        if(space && !isspace(ch)) {
                wd++;
                space=0;
        }
        else
            space=isspace(ch);
    }
    printf("%d", wd);
    system("pause");
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

我在思考,这题真的简单吗?
7个单词,输出是6。

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 12:06
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
完全不认识哈!
以下是引用Alar30在2011-6-8 12:00:07的发言:

LZ的ID让俺想起了阿CR。。
亲戚关系?
完全不认识哈!呵呵!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 12:08
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用bccn_2012在2011-6-8 12:53:51的发言:

#include  
 
int main()
{
    int i,n=0;
    char c;
    c=getchar();
    for(i=0;c!='\n';i++)
    {
        if(c==' ')
            n++;
        c=getchar();
    }
    printf("单词个数为:%d\n",n+1);
}
 
最简单的版本。。
很不错嘛,够简单!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 16:24
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用voidx在2011-6-8 13:00:36的发言:

这个是你输入数据的问题。你都说了单词之间要用空格分开的~
而且这样写也不符合英语语法。英语的标点符号后面是要有空格的
呵呵,这个我没注意到,题目是书上的,而我想得有完美了,你写出的代码完全符合题目要求哈!恭喜了!
我想能力强的就该编辑出更适合实际运用的代码!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 16:28
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
以下是引用lz1091914999在2011-6-8 17:24:22的发言:

#include  
#include  
 
int main(void) {
    int ch, count = 0, i = 0, j = 0;
    while((ch = getchar()) != '\n')
        isalpha(ch) ? (j++ || count++, putchar(ch), i = 0) : (i++ || putchar(' '), j = 0);
    printf("\nYou're entered %d words\n", count);
    return 0;
}
很强悍啊!不 过 我用VC6编译出错,请问你用什么编译的

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 17:35
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:0 
呵呵!今天已经是地5天了,以后的题难度会加大一点!亲爱的朋友动起你的手来吧,事情是做出来的!不是看出来的!

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2011-06-08 22:11
快速回复:每日一题!NO.4(适合新手做练习)-[统计字符问题](给出答案)
数据加载中...
 
   



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

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