对字符串指针数组,比较规则进行升序排序,函数stucmp1(ASCII码),stucmp2(字符串长度),运用指向函数的指针

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 6


int stucmp1(char *s1,char *s2){
    //按照ASCII码比较字符串s1和s2,返回-1表示s1小于s2,0表示相等,1表示s1大于s2;(类似于strcmp()函数)
    int i=0;
    if(strcmp(s1,s2)>0){
        i=1;
    }else if(strcmp(s1,s2)<0){
        i=-1;
    }
    return i;
    
} 
int stucmp2(char *s1,char *s2){//照字符串长度比较s1和s2,返回-1表示s1长度小于s2,0表示长度相等,1表示s1长度大于s2;
    int i=0;
    //int t1=strlen(s1);
    //int t2=strlen(s2);
    //if(t1-t2>0){     
    if(strlen(s1)-strlen(s2)>0){
        i=1;
    //}else if(t1-t2<0){
      }else if(strlen(s1)-strlen(s2)<0){
        i=-1;
    }
    return i;
}
void stu_sort(char *str[],int n,int (*f)(char*,char*)){
    int i,j,k;
    char *t;
     for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++){
            if(f(str[j],str[k])<0)
              k=j;
        }
         t=str[k];
         str[k]=str[i];
         str[i]=t;
    }
}
int main()
{
    char *stus[N]={"Yang", "Li", "ZhaoL", "Qian","Sun","ChenMM"};
    int i=0;
    stu_sort(stus, N, stucmp1);
    for(i=0;i<N;i++){
        printf("%s\n", stus[i]);
    }

    stu_sort(stus, N, stucmp2);
    for(i=0;i<N;i++){
        printf("%s\n", stus[i]);
    }
    return 0; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值