您的位置:

中文名字字典排序c语言,中文名字字典排序c语言怎么写

本文目录一览:

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

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

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

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

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

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

C语言:输入10个姓并按字典序的升序排序

#include stdio.h

#include string.h

struct xing//用来存放姓的结构体

{

char name[20];

};

void main()

{

int i,j;

char str[20];

struct xing ren[10];//结构体数组,用来建立多少个人来存放的

for (i=0;i10;i++)

{

printf ("请输入第 %d 姓: ",i+1);

scanf ("%s",ren[i].name);

}

for (i=1;i10;i++)

for (j=0;j10-i;j++)

{

if (strcmp(ren[j].name,ren[j+1].name)=0)

{

strcpy(str,ren[j].name);

strcpy(ren[j].name,ren[j+1].name);

strcpy(ren[j+1].name,str);

}

}

printf ("按字典序的升序排序为:\n");

for (i=0;i10;i++)

printf ("%s\n",ren[i].name);

}

C语言中汉字如何进行排序?

C语言中,汉字是按照字符串来处理的,一个汉字占用2个字节,汉字的排序就是按照汉字的编码进行排序(不是拼音),而是半个汉字的ASCII码进行排序的。

所以在输出汉字的时候,如果按照字节输出,而不按照字符串输出的话,就会出现乱码。

具体汉字的编码,就不是那么容易的了。编码一般以0x开头,表示是用一个十六进制数表示的。

c语言按中文姓名排序问题

#include stdio.h

void sort_name(Staff *p) {

int i,j,max;

Staff b;

for(i = 0;i T - 1;i++) { // 应该是T - 1,不是T

max = i;

for(j = i + 1;j T;j++) {

if(strcmp((p + max)-name,(p + j)-name) 0)

max = j;

}

if(max != i) {

b = *(p + max);

*(p + max) = *(p + i);

*(p + i) = b;

}

} // 这儿添加了"}"

for(i = 0;i T;i++) {

printf("%s ",(p + i)-id);

printf("%s ",(p + i)-name);

printf("%s ",(p + i)-sex);

printf("%d %d %d ",(p + i)-data.year,(p + i)-data.month,(p + i)-data.day);

printf("%.2lf ",(p + i)-post_wage);

printf("%.2lf ",(p + i)-subsidies);

printf("%.2lf ",(p + i)-withholding);

putchar('\n');

}

}

C语言编程题:输入6个人的名字,将它们按字典排序后输出

#includestdio.h

#includestring.h

int main(){

    char name[6][20];

    char temp[20];

    printf("请输入6个人的名字:\n");

    int i;

    for (i = 0; i 6; i++){

        gets(name[i]);

    }

    printf("\n\n这六个人的名字如下:\n");

    for (i = 0; i 6; i++){

        printf("%s ", name[i]);

    }

    printf("\n\n");

    printf("按字典排序后如下所示:\n");

    int j, k;

    for (j = 0; j 6; j++)

        for (k = j + 1; k 6; k++)

        {

            if (strcmp(name[j], name[k])0)

            {

                strcpy(temp, name[j]);

                strcpy(name[j], name[k]);

                strcpy(name[k], temp);

            }

        }

for (i = 0; i 6; i++)

printf("%s ", name[i]);

}