本文目录一览:
- 1、求高人指教,C语言中,汉字姓名怎么按字典顺序排列
- 2、C语言:输入10个姓并按字典序的升序排序
- 3、C语言中汉字如何进行排序?
- 4、c语言按中文姓名排序问题
- 5、C语言编程题:输入6个人的名字,将它们按字典排序后输出
求高人指教,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]);
}