代码
#include <stdio.h>
#include <string.h>
#define N 100
int main ( )
{
void sort ( const char * pIn, char * pOut) ;
char pIn[ N] , pOut[ N] ;
printf ( "\n输入:\n" ) ;
gets ( pIn) ;
sort ( pIn, pOut) ;
printf ( "\n输入:" ) ;
puts ( pIn) ;
printf ( "\n输出:" ) ;
puts ( pOut) ;
printf ( "\n" ) ;
return 0 ;
}
void sort ( const char * pIn, char * pOut)
{
int i, j, flag, cnt, k, len;
char b[ N] [ N] , t[ N] ;
flag= 0 ;
cnt= 0 ;
j= - 1 ;
for ( i= 0 ; * ( pIn+ i) != '\0' ; i++ )
{
if ( * ( pIn+ i) != ' ' )
{
if ( flag== 0 )
{
j++ ;
k= 0 ;
cnt++ ;
}
else
k++ ;
b[ j] [ k] = * ( pIn+ i) ;
flag= 1 ;
}
else
flag= 0 ;
}
printf ( "\n保存后交换前b数组的单词:\n" ) ;
for ( i= 0 ; i< cnt; i++ )
printf ( "%s\n" , b[ i] ) ;
for ( i= cnt- 1 ; i>= 1 ; i-- )
{
flag= 0 ;
for ( j= 1 ; j<= i; j++ )
if ( strcmp ( b[ j- 1 ] , b[ j] ) > 0 )
{
strcpy ( t, b[ j] ) ;
strcpy ( b[ j] , b[ j- 1 ] ) ;
strcpy ( b[ j- 1 ] , t) ;
flag= 1 ;
}
if ( flag== 0 ) break ;
}
printf ( "\n保存后交换后b数组的单词:\n" ) ;
for ( i= 0 ; i<= cnt; i++ )
printf ( "%s\n" , b[ i] ) ;
k= 0 ;
for ( i= 0 ; i< cnt; i++ )
{
for ( j= 0 ; b[ i] [ j] != '\0' ; j++ )
{
* ( pOut+ k) = b[ i] [ j] ;
k++ ;
}
if ( b[ i] [ j] == '\0' && i!= cnt- 1 )
{
* ( pOut+ k) = ' ' ;
k++ ;
}
}
* ( pOut+ k) = '\0' ;
} [ 一行单词字符串完成从小到大的排序]
运行结果