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