C语言题,提取英文句子的单词并排序输出。

2025-03-04 18:26:22
推荐回答(2个)
回答1:

说明:原题目中的const要删除,否则过不了编译。因为const了就不能排序了……

#include 
#include "string.h"
int GetWords(char *sentence, char *words[]);
void SortStrings(char *strs[], int count);//const 
int main(int argc,char *argv[]){
    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        puts(words[i]);
    return 0;
}
int GetWords(char *str, char *words[]){
    /******start******/
    int i,j,ln=strlen(str);
    for(i=0;i    if(str[i]==' ' || str[i]=='.')
        str[i]='\0';
    for(i=0;str[i]=='\0';i++);
    for(j=0,words[j++]=str+i;i        if(str[i]=='\0')
            words[j++]=str+i+1;
    return j;
    /******end******/
}
void SortStrings(char *strs[], int count){//const 
    /******start******/
    int i,j,k;
    char *p;
    for(i=0;i        for(k=i,j=k+1;j            if(strcmp(strs[k],strs[j])>0)
                k=j;
        if(k-i)
            p=strs[i],strs[i]=strs[k],strs[k]=p;
    }
    /******end******/
}

执行结果如下:

回答2:

#include 
#include 

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);
// printf("nWords=%d\n",nWords);
SortStrings(words, nWords);

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

return 0;
}


int GetWords(char *str, char *words[])
{
/******start******/
int i,j=0;
int len=strlen(str);
// printf("&str[0]=%s\n",&str[0]);
words[j++]=&str[0];
for(i=0;i if(str[i]==' '){
str[i]='\0';
// printf("&str[%d]=%s\n",i+1,&str[i+1]);
words[j++]=&str[i+1];
}
if(str[i]=='.'){
str[i]='\0';
}
}
return j;
}
void SortStrings(char *strs[], int count)
{
/******start******/
int i,j;
char *ch;
for(i=0;i for(j=i+1;j if(strcmp(strs[i],strs[j])>0){
ch = strs[j];
strs[j]=strs[i];
strs[i]=ch;
}
}
}
/******end******/
}