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

Python011

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

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

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

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

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

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

ansi GB2312里一级汉字是按拼音排序的,其他的汉字按部首/笔划排序。所以能按拼音排序的汉字只有3000多个,直接用strcmp()比较就可以了。但是如果用的是Unicode,由于Unicode里的汉字按笔划顺序排序,所以没有办法实现按拼音排序。

代码如下:

#include<stdio.h>

#include<string.h>

int main()

{

char a[5] = "王华", b[5] = "张丽", c[5] = "李强"

char t[5]

if(strcmp(a, b) > 0)

{

strcpy(t, a)

strcpy(a, b)

strcpy(b, t)

}

if(strcmp(a, c) > 0)

{

strcpy(t, a)

strcpy(a, c)

strcpy(c, t)   

}

if(strcmp(b, c) > 0)

{

strcpy(t, b)

strcpy(b, c)

strcpy(c, t)   

}

printf("%s\t%s\t%s\n",a, b, c)

return 0

}

扩展资料

C语言 strcmp() 函数用于对两个字符串进行比较(区分大小写)。

头文件:string.h

语法/原型:int strcmp(const char* stri1,const char* str2)

参数 str1 和 str2 是参与比较的两个字符串。

strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0)。

返回值

如果返回值 <0,则表示 str1 小于 str2。

如果返回值 >0,则表示 str2 小于 str1。

如果返回值 = 0,则表示 str1 等于 str2。