字符串, 保留一个空格
输入一串字符(有字母有数字有空格) 请将连接的字母组成单词(第一个字母大写)数字前后能加一个下划线输入:hu wen45 gui
输出:Hu wen_45_ Gui
[ 本帖最后由 huwengui 于 2011-6-13 22:45 编辑 ]
程序代码:/*题目:输入一行字符(字符串),统计其中包含多少单词,单词之间用空格分开。
附加要求:需要验证统计的单词是合法的,也就是说统计的单词字符是字母
*/
#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);
}