c语言字典序
㈠ c语言什么叫按字典序排序
就是说,将多个字符串的同一位置的字符按照26个字母的顺序进行比对。a最小,z最大。
a < b;
aa < ab; 因为第二位置上,前面字符串是a,后面字符串是b,所以是小于关系,以此类推。
㈡ 编写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>
int main ()
{
char name[40] ; //声明一个叫name的储存空间,数组的元素数目是40
printf("what is your name ? ");//转化说明字符/n换行
scanf("%s,name");//输入一个字符串,使用了%s的转化修饰符,表示输入字符串
printf("hello,%s. ",name);//输出字符串
return 0;
}
(3)c语言字典序扩展阅读
1、两个字符串,如果两个字符串相等,则返回0;若str1大于str2(对于大于的理解,是指从两个字符串的第一个字符开始比较,若两个字符相同,则继续比较,若发现两个字符不相等。
2、对于将数字转换为字符串,c标准中并没有定义。c标准中没有定义的原因我觉得是数字转成字符串可以使用sprintf格式化输出函数来完成。
㈣ C语言中字典排序是什么意思
按照字典的顺序
即按照字母表的顺序,由A-Z
如 Aaa 在Baa之前 , Aaa在Aab之前
同理,Aa在Aaaaa之前(一个为另一个前缀时,短的靠前)
㈤ C语言实现的字典序排列
search1
for(i=len-2;i>0;i--) 数组是从0开始的
㈥ C语言中说的按字典顺序是什么意思
你可以看看字典里的单词是怎么排序的啊,先大写字母,然后小写字母吧
比如A, a, ab, abc, ac排序应该是
A, a, ab, abc, ac
先比较第一个字符,A比a在前,所以第一个是A,比较第二个,a只有一个字符,自然最小,后面是b比c小,所以ab,abc在ac前,ab,abc再比较,第三个字符,ab没有了,就排在abc前
㈦ C语言 字符串数组字典排序
用二维数组记录书名,再声明一个指针数组并使各元素分别指向各书名,然后对指针数组元素按其指向的书名的字典顺序排序。这样比直接拷贝书名的效率会高些。举例如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"string.h"
#defineN10
voidmysort(char*s[],intn){
inti,j,k;
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(strcmp(s[k],s[j])>0)
k=j;
if(i!=k){
s[i]=(char*)((unsigned)s[i]^(unsigned)s[k]);//交换指针
s[k]=(char*)((unsigned)s[k]^(unsigned)s[i]);
s[i]=(char*)((unsigned)s[i]^(unsigned)s[k]);
}
}
}
intmain(void){
charbook[N][30],*pbook[N];
inti,k;
for(i=0;i<N;pbook[i]=book[i++]);
printf("Pleaseenter10book-name... ");
for(i=0;i<N;pbook[i]=book[i++])
scanf("%s",book+i);
mysort(pbook,N);
for(k=i=0;i<N;printf(++k%5?"%s":"%s ",pbook[i++]));//打出来看看......
if(k%5)printf(" ");
return0;
}
㈧ C语言实现字典序排列的代码问题
一般的排序是从0位置开始,即从数组第一个元素开始排序。
你这段代码是从第n+1个数据开始排序,仅此而已
㈨ 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>
longRe0(longa);
intFact(inta);
main()
{
longarray[1000];
charstr[1000][1000];
chart[1000];
intm=0;
intk=0;
intj;
longp=0,chino,i,guess;
scanf("%ld",&chino);
for(i=1;i<=chino;i++)
{
guess=Re0(i);
if(guess==i)
{
array[k++]=i;
}
}
for(i=0;i<k;i++)
{
sprintf(str[i],"%d",array[i]);
}
for(i=0;i<k-1;i++)//将字符串排序
{
for(j=0;j<k-1-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);
}
}
for(i=0;i<k;i++)//输出
{
if(i==k-1)
printf("%s",str[i]);
else
printf("%s",str[i]);
}
}
intFact(inta)
{
if(a==0||a==1)
return1;
elseif(a>1)
returna*Fact(a-1);
}
longRe0(longa) //计算各个位数之和
{
longsum;
intA,B,C,D,E; //分别为个位、十位、百位、千位、万位
if(a<10)
returnFact(a);
elseif(a>=10&&a<100)
{
A=a%10;
B=a/10;
sum=Fact(A)+Fact(B);
returnsum;
}
elseif(a>=100&&a<1000)
{
A=a%10;
B=a%100/10;
C=a/100;
sum=Fact(A)+Fact(B)+Fact(C);
returnsum;
}
elseif(a>=1000&&a<10000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a/1000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D);
returnsum;
}
elseif(a>=10000&&a<100000)
{
A=a%10;
B=a%100/10;
C=a%1000/100;
D=a%10000/1000;
E=a/10000;
sum=Fact(A)+Fact(B)+Fact(C)+Fact(D)+Fact(E);
returnsum;
}
}