通过函数调用对字符串数组进行各种排序


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define LINE 3
#define RANK 100
void charater_string(int n,char*ptr[ ]);//字符串输出

void alphabet_list(int n,char*str[]);//按ASCII字母顺序排序

void string_length(int n,char*ptr[]);//按字符串长度排序

void First_word_length(int n,char*ptr[]);//按第一个单词长短排序
int string_in(char *ptr);//取第一个单词字符数
void Quit();//终止程序

int main(void)
{ 
    int i,j,num;
   char arr[LINE][RANK];
   char *string[LINE];
   printf("Please enter charater string.\n");
   for(i=0;i<LINE;i++)
     {
         gets(arr[i]) ; 
          string[i]=arr[i];     
     } 
     while(1)
     {
     printf("Please choice number:\n");
     printf("1)输出字符串列表       2)按ASCII顺序输出字符串\n");
     printf("3)按长度递增输出       4)按字符串第一个单词长度输出    5)退出\n");
     scanf("%d",&num);
     switch(num)
     {
        case 1:charater_string(LINE,string);
               break;
        case 2:alphabet_list(LINE,string);
               break;
       case 3:string_length(LINE,string);
               break;
        case 4:First_word_length(LINE,string);
               break;
        case 5:Quit();
               break; 
        default:break;
     }

     }
     return 0;

}
void charater_string( int n,char*ptr[ ])
{
    int i=0;
    for(i=0;i<n;i++)
    puts(ptr[i]);
}

void alphabet_list(int n,char*str[ ])
{
    int i,j;
    char *temp;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(strcmp(str[i],str[j])>0)
            {
               temp= str[j];
              str[j]= str[i];
              str[i]= temp;
            }

        }
    }
    charater_string(n,str);
}

void string_length( int n,char*ptr[ ])
{
    int i,j;
    char *temp;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if((strlen(ptr[i])-strlen(ptr[j]))>0)
            {
              temp=ptr[j];
             ptr[j]=ptr[i];
             ptr[i]= temp;
            }

        }
    }
    charater_string(n,ptr);
}

void First_word_length(int n,char*ptr[ ])
{
        int i,j;
    char *temp;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if((string_in(ptr[i])-string_in(ptr[j]))>0)
            {
             temp=ptr[j];
             ptr[j]=ptr[i];
             ptr[i]=temp;
            }

        }
    }
    charater_string(n,ptr);
}

void Quit()
{
    exit(1);
}
int string_in(char *ptr)
 {     
        int i=0 ;
       while(*ptr)
       { 
        if(*ptr==' ')
        return i;
         i++;
         *ptr++;
       } 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值