当前位置:首页 » 编程语言 » 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王";