c語言漢字排序
❶ 如何用c語言實現一串中文姓名的排序(首字筆畫或者字母)
數組的第一位設置成筆畫數,第二位設置成首字母,排序時根據需要選擇,輸出時從第三位輸出。
char *name="4w王";
❷ 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語言怎麼用姓名(漢字)進行排序
寫出姓氏與第一個字母的映射表,比如
趙->Z;
錢->Q;
孫->S;
李->L;
周->Z;
吳->W;
鄭->Z;
王->W
然後需要用到排序的時候,再調用它對應的字母來進行排序,也就是比較ASCII碼的大小了。編碼就自己去實現啦!
❹ 在c語言中我想對漢字字元串按拼音進行排序,可以直接利用strcmp函數來進行排序嗎
ansi GB2312里一級漢字是按拼音排序的,其他的漢字按部首/筆劃排序。所以能按拼音排序的漢字只有3000多個,直接用strcmp()比較就可以了。但是如果用的是Unicode,由於Unicode里的漢字按筆劃順序排序,所以沒有辦法實現按拼音排序。
代碼如下:
#include<stdio.h>#include<string.h>
intmain()
{
chara[5]="王華",b[5]="張麗",c[5]="李強";
chart[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 %s %s ",a,b,c);
return0;
}
(4)c語言漢字排序擴展閱讀
C語言 strcmp() 函數用於對兩個字元串進行比較(區分大小寫)。
頭文件:string.h
語法/原型:int strcmp(const char* stri1,const char* str2);
參數 str1 和 str2 是參與比較的兩個字元串。
strcmp() 會根據 ASCII 編碼依次比較 str1 和 str2 的每一個字元,直到出現不到的字元,或者到達字元串末尾(遇見 )。
返回值:
如果返回值 < 0,則表示 str1 小於 str2。
如果返回值 > 0,則表示 str2 小於 str1。
如果返回值 = 0,則表示 str1 等於 str2。
❺ C語言怎麼用冒泡法按姓名(漢字)大小排序
你試試這個,就是排序後輸出的:(是以字母表從小到大排)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s[4]={"大軍","阿姨","弟弟","妹妹"},t;
for(int i=0;i<4;i++)
{
for(int j=i;j<4;j++)
{
if(s[i]>s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
}
for(i=0;i<4;i++)
cout<<s[i]<<endl;
return 0;
}
❻ c語言如何統計輸入的中文字元有多少筆畫(排序)
兩個思路
1、錄入學生姓名的時候,就將筆畫輸入進去。然後統計時就可以按照預先錄入的筆畫來排序啦。
如果只是學校做作業,可以按這個思路。
2、維護一整套漢字筆畫字典。統計時查找漢字的筆畫然後排序。
如果是開發用戶實際業務的軟體,可以按這個思路。
❼ 求高人指教,C語言中,漢字姓名怎麼按字典順序排列
字典是按照拼音排序的,沒有現成的拼音排序功能。
你可以自己做鍵值表對應啊。就是做數據,把百家姓和其拼音組合對應的表,可以用文件存儲,也 可以用資料庫存儲,或者乾脆直接寫在代碼了,用結構數組或鏈表載入。
然後需要排序的時候,直接用結構數組或鏈表排序啊。
如果你除了姓,連名字都要算在排序中,那你得把整個漢字字典的文字都做成鍵值表,別人起名字用什麼字,誰能知道。那你這就純粹是數據問題了。
我剛才試了一下網路搜索,網路文庫里有現成的漢字拼音對照表,你可以試試,全不全我就不知道了。
❽ C語言或C++可以對漢字排序么
不容易。
用 GB2312_1980 國標碼,比較雙位元組數值大小。
常用字的數值小於不常用字。
常用字按ABCD漢語拼音次序排列的。好辦。
不常用字按筆劃多少排列的。姓名里有不常用字。麻煩在這里。
❾ c語言程序 中文按首字母排序
#include <stdio.h>
#include <string.h>
#define MAX_NAME 20 //最大名字長度
#define MAX_NUM 100 //最大學生人數
void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函數
{
int i,j;
char str[MAX_NAME];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(pc[i],pc[j])>0)
{
strcpy(str,pc[i]);
strcpy(pc[i],pc[j]);
strcpy(pc[j],str);
}
}
}
}
void display_name(char (*pc)[MAX_NAME],int n)//顯示這n個姓名
{
int i;
for(i=0;i<n;i++)
{
printf("%s\n",pc[i]);
}
}
int main()
{
int i=1,n;
char str[MAX_NUM][MAX_NAME];
printf("請輸入學生總數:");
scanf("%d",&n);
while(i<=n)
{
printf("請輸入第%d個學生姓名:",i);
scanf("%s",str[i++-1]);
}
printf("排序前的學生名單如下:\n");
display_name(str,n);
sort_bubble(str,n);
printf("排序後的學生名單如下:\n");
display_name(str,n);
return 0;
}
說明:
1:採用的是冒泡排序,用快速排序當然快些,但我忘了
2:已驗證通過,結果正確。
3:隨意輸入人數和姓名,只要數組不越界就沒有問題!
4:兩個函數:排序和顯示
5:給分+好評