说明:原题目中的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;iputs(words[i]);
return 0;
}
int GetWords(char *str, char *words[]){
/******start******/
int i,j,ln=strlen(str);
for(i=0;iif(str[i]==' ' || str[i]=='.')
str[i]='\0';
for(i=0;str[i]=='\0';i++);
for(j=0,words[j++]=str+i;iif(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;ifor(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******/
}
执行结果如下:
#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; iputs(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;iif(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;ifor(j=i+1;j if(strcmp(strs[i],strs[j])>0){
ch = strs[j];
strs[j]=strs[i];
strs[i]=ch;
}
}
}
/******end******/
}