提取英文句子中的单词并排序输出 c语言

写一个分词函数,提取出一个英文句子中的所有单词,保存到一个单词数组中。另写一个排序函数对字符串数组进行升序排序。在主函数中调用分词函数得到单词数组,调用排序函数对单词排序... 写一个分词函数,提取出一个英文句子中的所有单词,保存到一个单词数组中。另写一个排序函数对字符串数组进行升序排序。在主函数中调用分词函数得到单词数组,调用排序函数对单词排序,然后在主函数中输出各单词。注意:只允许在/******start******/和/******end******/之间添加代码。
约定:
1. 句子长度不超过200个字母,句子中不超过20个单词。
2. 句子中英文单词之间只有一个空格,句子结束处是一个英文句点(即小数点)。
规定算法:分词时,当查找空格或句点时,将其替换为字符串终止符,并将单词开始位置的地址保存到指针数组中。
程序运行如下图:

#include <stdio.h>
#include <string.h>

int GetWords(char *sentence, char *words[]);
void SortStrings(const char *strs[], int count);

int main()
{
char str[200];
int nWords = 0;
char *words[20];
int i;

printf("input a string: ");
gets(str);

nWords = GetWords(str, words);
SortStrings(words, nWords);

puts("output:");
for(i=0; i<nWords; i++)
puts(words[i]);

return 0;
}

int GetWords(char *str, char *words[])
{
/******start******/

/******end******/
}

void SortStrings(const char *strs[], int count)
{
/******start******/

/******end******/
}
展开
 我来答
微星time
2014-06-14 · TA获得超过161个赞
知道答主
回答量:106
采纳率:0%
帮助的人:67.2万
展开全部
#include <stdio.h>
#include <string.h>

int GetWords(char *sentence, char *words[]);
void SortStrings( char *strs[],int count);

int main()
{
char str[200];
int nWords = 0;
char *words[20];
int i;

printf("input a string: ");
gets(str);
nWords = GetWords(str, words);
SortStrings(words,nWords);
puts("output:");
for(i=0; i<nWords; i++)
{
puts(words[i]);
}
return 0;
}
int GetWords(char *sentence,char *words[])
{
/******start******/
int i=0;
char *p;
p=strtok(sentence," ,.");
while(p!=NULL)
{
words[i]=p;
i++;
p=strtok(NULL," ,.");

}

return i;
/******end******/
}
void SortStrings(char *strs[],int count)
{
/******start******/
char *p;
int i,j,k;
for(i=0;i<count;i++){
for(j=i+1;j<count;j++)
{
if(strcmp(strs[i],strs[j])>0)
{
p=strs[i];
strs[i]=strs[j];
strs[j]=p;
}
}
}
/******end******/
}
White_MouseYBZ
2014-06-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6470万
展开全部
int GetWords(char *str, char *words[]){
/******start******/
char *p,n;
for(p=str,n=0;*p;p++)
if(*p!=' ' && (*(p-1)==' ' || p==str)){
words[n++]=p;
if(p!=str) *(p-1)='\0';
}
*(p-1)='\0';
return n;
/******end******/
}
void SortStrings(/*const*/ char *strs[], int count){//不能用const,用了就不能动了,咋排序?
/******start******/
char *p,i,j,k;
for(i=0;i<count;i++){
for(k=i,j=k+1;j<count;j++)
if(stricmp(strs[k],strs[j])>0) k=j;
if(k!=i){
p=strs[k];
strs[k]=strs[i];
strs[i]=p;
}
}
/******end******/
}
追问
貌似有问题,练习平台给的0分
追答

给不给0分不能保证,你运行一下看对不对!不知你的是什么平台,你加上那个const试试,加上后一般的平台边编译都过不了的。但不加又改动了原题,可能会给0分。

这是运行结果——

刚发现问题:你的运行结果是区分大小写的,而我的是不区分大小写的,会不会是这个原因得0分?你把我代码中的stricmp改成strcmp就区分大小写了!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式