字符串, 保留一个空格
输入一串字符(有字母有数字有空格) 请将连接的字母组成单词(第一个字母大写)数字前后能加一个下划线输入:hu wen45 gui
输出:Hu wen_45_ Gui
[ 本帖最后由 huwengui 于 2011-6-13 22:45 编辑 ]
if (s[0] == ' ') { ... } // i > 0 时 if (s[i] == ' ' && s[i - 1] == ' ') { ... }
/*题目:输入一行字符(字符串),统计其中包含多少单词,单词之间用空格分开。 附加要求:需要验证统计的单词是合法的,也就是说统计的单词字符是字母 */ #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(void) { int ch, space=0, wd=0,i;//定义变量 char put[100]; gets(put); if(put[0]==' ')//判断第一个字符是不是空格 { space=1; } for(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\n",wd); }