c语言编写一个程序,在一维数组里输入一句英文,统计该句子里出现的单词个数 10
6个回答
展开全部
声明一个较大的char型数组,待输入完成后依次检查数组元素,除第一个单词可能需要个别处理外,其余以空格后跟字母或其它字符后跟字母的就认为是一个单词,累加计数即可。代码如下:
int main(int argc,char *argv[]){
char text[300];//定义一个空间较大的char数组存放输入的text
int i,w;
printf("Input a text...\n");
fgets(text,300,stdin);//用fgets既可接收空格又能限制长度
w=text[0]>='a' && text[0]<='z' || text[0]>='A' && text[0]<='Z';//开头是字母则w置1
for(i=1;text[i];i++)
if((text[i]>='a' && text[i]<='z' || text[i]>='A' && text[i]<='Z')
&& !(text[i-1]>='a' && text[i-1]<='z' || text[i-1]>='A' && text[i-1]<='Z'))
w++;//非字母后跟着字母则为一个单词
printf("A total of %d word(s).\n",w);
return 0;
}
运行样例如下图:
展开全部
#include <stdio.h>
main()
{
char string[81];
int i, num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++) //确定没有到结束符
{
if(c==' ') //当c获得的字符为空格的时候,单引号内为空格
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("there are %d words in the line.\n",num);
}
main()
{
char string[81];
int i, num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++) //确定没有到结束符
{
if(c==' ') //当c获得的字符为空格的时候,单引号内为空格
word=0;
else if(word==0)
{
word=1;
num++;
}
}
printf("there are %d words in the line.\n",num);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没用过,不过你可以尝试一下统计空格符号和逗号,句号,当然,句子得很标准才行,一个单词后面跟一个空格或者逗号句号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int CountWord(LPCSTR strFilter)
{
int nRet = 0;
int nLen = 0;
LPCSTR pCurrentHead = NULL;
pCurrentHead = strFilter;
//计算长度
nLen = strlen(strFilter);
if(nLen == 0)
{
nRet =0;
goto ERROR_OUT;
}
else
nRet = 1;
while(1)
{
//找到空格
pCurrentHead = strchr(pCurrentHead,' ');
if(NULL == pCurrentHead)
break;
else
{
nRet +=1;
pCurrentHead = pCurrentHead+1;
}
}
ERROR_OUT:
return nRet;
}
int main()
{
char szTest[512];
sprintf(szTest,"warning C4508: 'main' : function should return a value; 'void' return type assumed.");
int nCount = CountWord(szTest);
printf("String:<%s>'s word count = %d\n",szTest,nCount);
return;
}
这个是比较简单的实现,没有考虑乱输一堆标点符号的问题,如果要做好点,就检查出每个被空格分开的子串,然后对每个子串用正则表达式匹配,剔出非英文单词的子串
{
int nRet = 0;
int nLen = 0;
LPCSTR pCurrentHead = NULL;
pCurrentHead = strFilter;
//计算长度
nLen = strlen(strFilter);
if(nLen == 0)
{
nRet =0;
goto ERROR_OUT;
}
else
nRet = 1;
while(1)
{
//找到空格
pCurrentHead = strchr(pCurrentHead,' ');
if(NULL == pCurrentHead)
break;
else
{
nRet +=1;
pCurrentHead = pCurrentHead+1;
}
}
ERROR_OUT:
return nRet;
}
int main()
{
char szTest[512];
sprintf(szTest,"warning C4508: 'main' : function should return a value; 'void' return type assumed.");
int nCount = CountWord(szTest);
printf("String:<%s>'s word count = %d\n",szTest,nCount);
return;
}
这个是比较简单的实现,没有考虑乱输一堆标点符号的问题,如果要做好点,就检查出每个被空格分开的子串,然后对每个子串用正则表达式匹配,剔出非英文单词的子串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是统计单词个数还是统计字母的个数?
追问
单词个数
追答
惭愧,我只会统计字母的个数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询