A. 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:給分+好評
B. 在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;
}
(2)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. C語言或C++可以對漢字排序么
不容易。
用 GB2312_1980 國標碼,比較雙位元組數值大小。
常用字的數值小於不常用字。
常用字按ABCD漢語拼音次序排列的。好辦。
不常用字按筆劃多少排列的。姓名里有不常用字。麻煩在這里。
D. 求解 如何用C語言寫出中國的所有漢字 這個代碼要怎麼寫出來 。。。。
這個代碼VC++ 6.0中可以。
#include<stdio.h>
void main(){
int q,w;
for(q=16; q<=87; q++){
for(w=1; w<=94; w++)
printf("%c%c", q+160,w+160);
printf("\n");
}
}
所有漢字被排成94區中,每個區排94個漢字,一個漢字所在的區號稱為區碼,所在的位號稱為位碼。
一個漢字在機內用兩個位元組表示,第一個位元組為區碼+160,第二個位元組為位碼+160。
前15個區為特殊符號,後7個區保留被,全部漢字被排在第16到第87區中。
E. 求高人指教,C語言中,漢字姓名怎麼按字典順序排列
字典是按照拼音排序的,沒有現成的拼音排序功能。
你可以自己做鍵值表對應啊。就是做數據,把百家姓和其拼音組合對應的表,可以用文件存儲,也 可以用資料庫存儲,或者乾脆直接寫在代碼了,用結構數組或鏈表載入。
然後需要排序的時候,直接用結構數組或鏈表排序啊。
如果你除了姓,連名字都要算在排序中,那你得把整個漢字字典的文字都做成鍵值表,別人起名字用什麼字,誰能知道。那你這就純粹是數據問題了。
我剛才試了一下網路搜索,網路文庫里有現成的漢字拼音對照表,你可以試試,全不全我就不知道了。
F. 如何用C語言實現一串中文姓名的排序(首字筆畫或者字母)
數組的第一位設置成筆畫數,第二位設置成首字母,排序時根據需要選擇,輸出時從第三位輸出。
char *name="4w王";
G. 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;
}
H. C語言中怎麼處理漢字
漢字作為一種字元處理,但是與普通的字元不同,一個漢字被存儲在兩個或以上的連續的位元組當中,一般在程序中使用字元數組或者作為字元串處理
I. C語言中一個英文字母.漢字.數字 分別都占幾個位元組啊
1、英文字母:如果是char 型,那麼是佔用1個位元組,如果是string型,應該是兩個。
char c = 'a';//它佔用一個字元
char c[] = "a";//佔用兩個。
char c[] = "abcde";//佔用4+1 = 5 個,結尾有一個'