提取英文句子中的单词并排序输出 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******/
} 展开
约定:
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******/
} 展开
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******/
}
展开全部
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******/
}
/******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分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询