
正文
c语言字母排序库函数 c语言字符排序函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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,也可以定义一个结构体
struct Node{
char ch[1000];
}s[12];
bool cmp(const Node A,const Node B){
return strcmp(A.ch,B.ch)0;
}
int main(){
...
sort(s+1,s+10+1,cmp);
...
}
这样的话也是可以实现的.
相关问答
Q1: C语言程序 按中文拼音的首字母排序 要求程序中有两个函数。
/**已经修改如下.
*@author:banxi1988
*@date:2010-12-9
*/
#includestdio.h
#includestdlib.h
#includestring.h
#define M 5 /**同学的人数 如果你想多输入些的话自己改吧. */
void input(char *name[],int n);
void sort(char *name[],int n);
int main(int argc, char **agrv){
char *name[M]; /**保存学生的名字.*/
int i= 0;
input(name,M);
sort(name,M);
printf("名字按拼音排列输出如下:\n");
for(i=0;iM;i++)
{
printf("%s\t",name[i]);
}//for:
printf("\n");
return 0;
}//
void input(char *name[],int n){
char str[20]; /**拼音的长度. 20-1 ,自己改 */
int i;
printf("请输入 %d 个学生的名字(请用拼音) :\n",M);
/** 这里也比较关键,好好领会.**/
for(i=0; i n; i++)
{
scanf("%s",str);
name[i] = (char *)malloc(sizeof(char)*(strlen(str)));
strcpy(name[i],str);
}//for:
}//input
void sort(char *name[],int n){
/**冒泡法实现排序****************/
char *tmp;
int i,j;
for(i=0;in;i++)
{
for(j=1;jn-i;j++)
{
/***两个名字位置交换,将较大的名字放到数组的前面.*/
if(strcmp(name[j],name[j-1])0)
{
tmp=name[j-1];
name[j-1]= name[j];
name[j]=tmp;
}
}//inner for
}//outer for
}//sort
/***** 测试结果:
请输入 5 个学生的名字(请用拼音) :
abc cano java perl banxi
名字按拼音排列输出如下:
abc banxi cano java perl
***/
Q2: 字符串数组排序(C语言)(qsort库函数)
声明一个字符串指针数组存放每个字符串c语言字母排序库函数的首地址c语言字母排序库函数,调用库函数qusort按题目要求对字符串指针排序,不移动源字符串。关键是要设计一个好的比较函数,精巧地解决“按长度、长度相等时按大小”排序的问题。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 10 //字符串个数
#define LN 21 //限制字符串长度为20
int mycmp(const void *a,const void *b){//比较函数
char *pa=*(char **)a,*pb=*(char **)b;
int x=int(strlen(pa)-strlen(pb));//依长度比较
return x ? x : strcmp(pa,pb);//长度相等时依大小比较
}
int main(void){
int i=0,j=0;
char *f[N],w[LN*N];//声明指针数组f和字符串总空间
printf("Input %d string(s)(length=%d)...\n",N,LN);
while(iN){//输入并将字符串首址赋给f[i]
if(scanf(" %[1234567890]",f[i]=w+j)0 strlen(f[i])LN)
i++,j+=LN;
else printf("Error, redo: Required length less than %d:",LN);
}
qsort(f,N,sizeof(char *),mycmp);//调用库函数对字符串指针排序
for(i=0;iN;printf("%s\n",f[i++]));//输出...
return 0;
}
Q3: C语言:将输入的字符串按首字母顺序排列。
#includestdio.h
#includestring.h
void sort(char *a[]);
void print(char *a[]);
int main()
{
char *a[] ={"ceo","define","basic","abc","empty"};
printf("原来的序列是:\n");
print(a);
sort(a);
printf("\n排序后的序列是:\n");
print(a);
printf("\n");
return 0;
}
void sort(char *a[])
{
int i,j;
char *temp;
for(i=0;i4;i++)//注意是i4
{
for(j=0;j4;j++)//注意是j4,因为下面要+1和后面的那个字符串比较
{
if(strcmp(a[j],a[j+1])0)//字符串比较:0表示前面的字符串比后面的大则交换
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void print(char *a[])
{
int i;
for(i=0;i5;i++)
{
printf("%s ",a[i]);
}
}
运行效果:
扩展资料:
return 0的用法:
return的作用是结束正在运行的函数c语言字母排序库函数,并返回函数值。return后面可以跟一个常量c语言字母排序库函数,变量,或是表达式。
函数的定义一般是这样的,例如:
inta(inti)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字
{
...//省略函数体内容
returnb;//b必须与函数头的返回值一致(此处为int型)
}
简单函数举例:
intaddOne(intb)
{
returnb+1;
}
该函数的作用是取得一个数,将这个数加上1,再将结果返回
调用时这样:
intresult=addOne(2);//此时result的值为3
函数括号里的参数也可以为变量或能算出值的表达式
以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)
但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如voidprint()//括号中为空表示无传递参数、
{
printf("a");
printf("b");
return;//函数执行到此处结束
printf("c");
}//该函数只执行到return语句处,即屏幕上输出的为"ab"
Q4: C语言怎么比较字母的大小顺序,用函数
#include stdio.h
#include string.h
const int MAXLEN = 100;
void mysort(char s[][MAXLEN],int n) {
int i,j,k;
char tmp[MAXLEN];
for(i = 0; i n - 1; ++i) {
k = i;
for(j = i + 1; j n; ++j) {
if(strcmp(s[k],s[j]) 0) k = j;
}
if(i != k) {
strcpy(tmp,s[k]);
strcpy(s[k],s[i]);
strcpy(s[i],tmp);
}
}
}
int main() {
char s[5][MAXLEN];
int i;
for(i = 0; i 5; ++i) {
printf("输入字符串(%d/%d):",i + 1,5);
scanf("%s",s[i]);
}
printf("排序前:\n");
for(i = 0; i 5; ++i)
printf("%s\n",s[i]);
mysort(s,5);
printf("\n排序后:\n");
for(i = 0; i 5; ++i)
printf("%s\n",s[i]);
return 0;
}
Q5: C语言如何用自定义函数进行字符排序?
void fun(char a[])
{ int k=0,i,j;
char t;
while(a[k])
k++;//计算字符串长度
for(i=0;ik;i++)//冒泡排序
for(j=0;jk-1-i;j++)
if(a[j]a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
}
关于c语言字母排序库函数和c语言字符排序函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






