/**************************************************************
* 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;
}
转载于:https://blog.51cto.com/69680919/1203584