① 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;
}