① c语言递归实现字典顺序枚
#include<stdio.h>
voidpermute(int);
#defineN7
inta[N];
intn=0;
voidmain()
{
inti;
for(i=0;i<N;i++)
{
a[i]=i+1;
}
permute(N);
printf("totalis:%d ",n);
}
voidpermute(intk)
{
inti,j,temp;
if(k==1)
{
for(i=0;i<N;i++)
{
printf("%d",a[i]);
}
printf(". ");
n++;
if(n%4==0)
{
printf(" ");
}
}
else
{
permute(k-1);
for(j=N-k+1;j<N;j++)
{
temp=a[N-k];
a[N-k]=a[j];
a[j]=temp;
permute(k-1);
temp=a[N-k];
a[N-k]=a[j];
a[j]=temp;
}
}
}
② C语言 字符串数组字典排序
#include<stdio.h>
#include<string.h>
constintMAXLEN=100;
constintMAXSIZE=10;
voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}
voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}
intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序后: ");
show(s,MAXSIZE);
return0;
}
③ 求一个c语言按字典序全排列的方法
如果是想学习一下算法,用c语言不错。如果是实际使用需要,就用现成的木头超级字典生成器(MutouDic),工具集里有一个排列字典工具,可以生成任意个元素,任意长度的升序排列、降序排列和全排列。
④ c语言中如何通过函数按字典顺序排列输入的十个字符串
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在<cstring>库中[或者c语言中在<string.h>库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])>0)
swap(a[j],a[j+1]);
这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
structNode{
charch[1000];
}s[12];
boolcmp(constNode&A,constNode&B){
returnstrcmp(A.ch,B.ch)<0;
}
intmain(){
...
sort(s+1,s+10+1,cmp);
...
}
这样的话也是可以实现的.
⑤ c语言 输入10个单词 怎么才能按字典顺序输出 分别用插入排序和归并排序两种方法
建立 索引表, 单词的存储索引--单词权值 逐个对应,每个单词 对应一个权值,每个字母对应 0~25, 单词的最后字母对应0,向前依次对应 26, 26*26, 26*26*26。。。。, 26进制数,类似于十进制数, 然后 按权值进行排序
⑥ C语言中字典排序是什么意思
按照字典的顺序
即按照字母表的顺序,由A-Z
如 Aaa 在Baa之前 , Aaa在Aab之前
同理,Aa在Aaaaa之前(一个为另一个前缀时,短的靠前)
⑦ C语言,数组。用键盘输入n个学生的姓名,并按字典顺序排序输出,n值由键盘输入。
#include <stdio.h>
#include<string.h>
int main ()
{int n,i,j;
char s[100][20],t[20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",s[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(s[j],s[j+1])>0)
{strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
printf(" After: ");
for(i=0;i<n;i++)
puts(s[i]);
return 0;
}
⑧ 求高人指教,C语言中,汉字姓名怎么按字典顺序排列
字典是按照拼音排序的,没有现成的拼音排序功能。
你可以自己做键值表对应啊。就是做数据,把百家姓和其拼音组合对应的表,可以用文件存储,也 可以用数据库存储,或者干脆直接写在代码了,用结构数组或链表加载。
然后需要排序的时候,直接用结构数组或链表排序啊。
如果你除了姓,连名字都要算在排序中,那你得把整个汉字字典的文字都做成键值表,别人起名字用什么字,谁能知道。那你这就纯粹是数据问题了。
我刚才试了一下网络搜索,网络文库里有现成的汉字拼音对照表,你可以试试,全不全我就不知道了。
⑨ C语言编程解决字符串数组字典排序
#include<stdio.h>
#include<string.h>
constintMAXLEN=100;
constintMAXSIZE=10;
voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}
voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}
intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序后: ");
show(s,MAXSIZE);
return0;
}