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

来源:互联网 发布:ubuntu wine qq 乱码 编辑:程序博客网 时间:2024/05/30 12:03
#include<stdio.h>#include<string.h>#include<stdlib.h>#define LINE 3#define RANK 100void 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++;       }  }
0 0
原创粉丝点击