/**************************************************************         
* Copyright (c) 2013, 西华师范大学计算机学院                 
* All rights reserved.                                       
* 作 者:  曾舜尧                                            
* 完成日期:2013 年 05 月 19 日                              
* 工 具:VC6.0                                               
*                                                           
* 输入描述:                                                 
* 问题描述:在主函数中输入10个等长的字符串,用另一函数对它排序。
*           然后在主函数输出10个已排好序的字符串。用指针实现。    
* 程序输出:                                                 
* 问题分析:略                                               
* 算法设计:略                                               
**************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
#define LEN 15
int main()
{
    void Sequence(char *p[],int n);
    char str[N][LEN];
    char *p[N];
    int i;
    for(i=0;i<N;i++)
    {
        p[i]=str[i];
        gets(p[i]);}//输入字符串
      
    Sequence(p,N);
    for(i=0;i<N;i++)//输出字符串
        puts(p[i]);/*第一种方法,此处p[i]和str[i]等价,第二种方法此处只能写p[i],数据源str根本没变*/
    system("pause");
    return 0;
}
void Sequence(char *p[],int n)
{
    int i,j;
    /*以下有两种方法可供选择*/
    /*第一种方法,第一种方法把p[i]指向的string修改(改变了数据源)*/
    /*char temp[LEN];
    for (i=0;i<n-1;i++)
        for (j=i+1;j<n;j++)
            if(strcmp(p[i],p[j])>0)
            {strcpy(temp,p[i]);strcpy(p[i],p[j]);strcpy(p[j],temp);}*/
    /*第二种方法,第二种方法把p[i]的指向地址修改(未改变了数据源)*/
    char *temp;
    for (i=0;i<n-1;i++)
        for (j=i+1;j<n;j++)
            if(strcmp(p[i],p[j])>0)
            {temp=p[i];p[i]=p[j];p[j]=temp;}
    return;
}