當前位置:成語大全網 - 新華字典 - C語言程序 按中文拼音的首字母排序 要求程序中有兩個函數。

C語言程序 按中文拼音的首字母排序 要求程序中有兩個函數。

/**已經修改如下.

*@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

***/