本文目錄一覽:
- 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]);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/253938.html