当前位置:首页 » 编程语言 » c语言字典顺序比较
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字典顺序比较

发布时间: 2022-07-14 01:45:29

c语言什么叫按字典序排序

就是说,将多个字符串的同一位置的字符按照26个字母的顺序进行比对。a最小,z最大。

a < b;

aa < ab; 因为第二位置上,前面字符串是a,后面字符串是b,所以是小于关系,以此类推。

② 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语言 输入10个单词 怎么才能按字典顺序输出 分别用插入排序和归并排序两种方法

建立 索引表, 单词的存储索引--单词权值 逐个对应,每个单词 对应一个权值,每个字母对应 0~25, 单词的最后字母对应0,向前依次对应 26, 26*26, 26*26*26。。。。, 26进制数,类似于十进制数, 然后 按权值进行排序

④ 求一个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语言 对文件内容按字典顺序

#include<stdio.h>
#include<string.h>
intmain(){
charstr[80][80];
inti=0;
while(1){
gets(str[i]);
if(!strcmp("END",str[i])){
break;

}
i++;
}

intj=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<j;k++){
if(strcmp(str[i],str[j])>0){
char*tmp=NULL;
strcpy(tmp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],tmp);
}
}
for(j=0;j<i;j++)
//printf("%s",str[j]);
puts(str[j]);
return0;
}

⑦ 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语言的题,就是将单词按字典顺序排列 例如 i like c --> c i like

请建立C++程序运行

#include <stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int MAX=100000;
struct A
{
char s[100];
}sto[MAX];
int gcd(int a,int b){return a%b?gcd(b,a%b):b;}
bool dig(char x){return x>='0'&&x<='9';}
bool alpa(char x){return (x>='a'&&x<='z')||(x>='A'&&x<='Z');}
bool cmp(A a,A b){return strcmp(a.s,b.s)<0;}
int main()
{
char s[10000];
int i,len,n=0,j;
gets(s);
len=strlen(s);

for(i=0;i<len;i++)
{
if(alpa(s[i]))
{
j=0;
while(i<len&&alpa(s[i]))
{
sto[n].s[j++]=s[i];
i++;
}
i--;
sto[n].s[j]=0;
n++;
}
}
sort(sto,sto+n,cmp);
for(i=0;i<n;i++)
{
printf("%s ",sto[i].s);
}
puts("");
return 0;
}