當前位置:首頁 » 編程語言 » c語言漢字怎麼排列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言漢字怎麼排列

發布時間: 2023-02-03 17:20:27

『壹』 在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;

}

(1)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 <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:給分+好評

『叄』 求高人指教,C語言中,漢字姓名怎麼按字典順序排列

字典是按照拼音排序的,沒有現成的拼音排序功能。
你可以自己做鍵值表對應啊。就是做數據,把百家姓和其拼音組合對應的表,可以用文件存儲,也 可以用資料庫存儲,或者乾脆直接寫在代碼了,用結構數組或鏈表載入。
然後需要排序的時候,直接用結構數組或鏈表排序啊。
如果你除了姓,連名字都要算在排序中,那你得把整個漢字字典的文字都做成鍵值表,別人起名字用什麼字,誰能知道。那你這就純粹是數據問題了。
我剛才試了一下網路搜索,網路文庫里有現成的漢字拼音對照表,你可以試試,全不全我就不知道了。

『肆』 c語言字元排序

c語言字元排序:
輸入:abc 輸出:abc acb bac bca cab cba
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void mySwap(char *a,char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}

void PaiLie(char *list,int begin,int end)
{
int i;
if(list == NULL)
return;
if(begin == end)
{
printf("%s ",list);
printf("\n");
}else{
for(i = begin ; i<=end ;i++)
{
mySwap(&list[i],&list[begin]);
PaiLie(list,begin+1,end);
mySwap(&list[i],&list[begin]);
}
}
}

void main()
{
char list[] = "abc";
char out [4];
PaiLie(list,0,2);
//ZuHe(list,out,3,0,0);
}
如果有重復,去掉重復的,然後滿足一些特定的要求(如:第3個位置不可以是4,3和5不可以相鄰)
Java實現。
此方法需要輸入數字從小到大排列,若不是只需在排列之前預處理一下即可。
關鍵是compareTo方法
[java] view plain
package dataStruct;

import java.util.LinkedList;
import java.util.List;

public class PaiLie {
private static List<String> result = new LinkedList<String>();
private static String lastResult = "";

public static void main(String[] args) {
String s = "1223";
char[] c = s.toCharArray();
paiLie(c, 0, c.length - 1);
for (int i = 0; i < result.size(); i++)
System.out.println(result.get(i));
}

public static boolean validator(String s) {
if (s.compareTo(lastResult) <= 0) //去重復的關鍵
return false;
if (s.charAt(2) == '4')
return false;
if (s.indexOf("35") >= 0)
return false;
if (s.indexOf("53") >= 0)
return false;
return true;
}

public static void paiLie(char[] c, int begin, int end) {
if (begin == end) {
String s = new String(c);
if (validator(s)) {
lastResult = s;
result.add(s);
}
}
for (int i = begin; i <= end; i++) {
swap(c, begin, i);
paiLie(c, begin + 1, end);
swap(c, begin, i);
}
}

public static void swap(char[] c, int i, int j) {
char temp;
temp = c[i];
c[i] = c[j];
c[j] = temp;
}
}

『伍』 C語言或C++可以對漢字排序么

不容易。

用 GB2312_1980 國標碼,比較雙位元組數值大小。

常用字的數值小於不常用字。
常用字按ABCD漢語拼音次序排列的。好辦。

不常用字按筆劃多少排列的。姓名里有不常用字。麻煩在這里。

『陸』 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語言怎麼讓文字右對齊

C語言默認右對齊,如果不做特別改動,默認右對齊。可以根據需要為輸出樣式加上寬度,例如:
printf(「%10d」),如果需要左對齊,則在佔位符前加上負號,例如:printf(「%-10d」)。
(7)c語言漢字怎麼排列擴展閱讀:
格式佔位符(%)是在C/C++語言中格式輸入函數,如scanf、printf等函數中使用。其意義就是起到格式佔位的意思,表示在該位置有輸入或者輸出。
常見的還有:
%d,用來輸出十進制整數。
%f,用來輸出實數(包括單,雙精度),以小數形式輸出。
%c,用來輸出一個字元。
%s,用來輸出一個字元串。
參考資料來源:網路-佔位符

『捌』 如何用C語言實現一串中文姓名的排序(首字筆畫或者字母)

數組的第一位設置成筆畫數,第二位設置成首字母,排序時根據需要選擇,輸出時從第三位輸出。
char *name="4w王";