每日一题!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 编辑 ]



 
											






 
	    

 
	






 
										
					
	 
										
					
	