*@author:banxi1988
*@date:2010-12-9
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 5 /**同學的人數 如果妳想多輸入些的話自己改吧. */
void input(char *name[],int n);
void sort(char *name[],int n);
int main(int argc, char **agrv){
char *name[M]; /**保存學生的名字.*/
int i= 0;
input(name,M);
sort(name,M);
printf("名字按拼音排列輸出如下:\n");
for(i=0;i<M;i++)
{
printf("%s\t",name[i]);
}//for:
printf("\n");
return 0;
}//
void input(char *name[],int n){
char str[20]; /**拼音的長度. 20-1 ,自己改 */
int i;
printf("請輸入 %d 個學生的名字(請用拼音) :\n",M);
/** 這裏也比較關鍵,好好領會.**/
for(i=0; i < n; i++)
{
scanf("%s",str);
name[i] = (char *)malloc(sizeof(char)*(strlen(str)));
strcpy(name[i],str);
}//for:
}//input
void sort(char *name[],int n){
/**冒泡法實現排序****************/
char *tmp;
int i,j;
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
{
/***兩個名字位置交換,將較大的名字放到數組的前面.*/
if(strcmp(name[j],name[j-1])<0)
{
tmp=name[j-1];
name[j-1]= name[j];
name[j]=tmp;
}
}//inner for
}//outer for
}//sort
/***** 測試結果:
請輸入 5 個學生的名字(請用拼音) :
abc cano java perl banxi
名字按拼音排列輸出如下:
abc banxi cano java perl
***/