求高人指教,C语言中,汉字姓名怎么按字典顺序排列

Python010

求高人指教,C语言中,汉字姓名怎么按字典顺序排列,第1张

字典是按照拼音排序的,没有现成的拼音排序功能。

你可以自己做键值表对应啊。就是做数据,把百家姓和其拼音组合对应的表,可以用文件存储,也 可以用数据库存储,或者干脆直接写在代码了,用结构数组或链表加载。

然后需要排序的时候,直接用结构数组或链表排序啊。

如果你除了姓,连名字都要算在排序中,那你得把整个汉字字典的文字都做成键值表,别人起名字用什么字,谁能知道。那你这就纯粹是数据问题了。

我刚才试了一下百度搜索,百度文库里有现成的汉字拼音对照表,你可以试试,全不全我就不知道了。

如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:

if(a[j]>a[j+1])

    swap(a[j],a[j+1])

那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[])

这个函数在<cstring>库中[或者c语言中在<string.h>库中]

这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.

若a的字典序小返回负值

若a的字典序和b相同返回0

若a的字典序大于b的字典序返回正数

然后你将上面冒泡的部分改一下的话就是:

if(strcmp(a[j],a[j+1])>0)

    swap(a[j],a[j+1])

这样的话就可以实现冒泡排序了.

如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体

struct Node{

    char ch[1000]

}s[12]

bool cmp(const Node &A,const Node &B){

    return strcmp(A.ch,B.ch)<0

}

int main(){

...

sort(s+1,s+10+1,cmp)

...

}

这样的话也是可以实现的.