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


#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++;
       }
 }
时间: 2024-10-31 09:28:11

通过函数调用对字符串数组进行各种排序的相关文章

PHP 字符串数组按照拼音排序的问题

拼音排序的规则: 字符串包括特殊字符.数字.英文字符.中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英文字符排在第三梯队,按照首字母字母表顺序排序,中文字符排在第三梯队,将按照拼音的首字母排序 .(此处不考虑其他语言的字符). 数据库查询排序: 查询数据库的时候可以将某个字段按照中文排序.如下,将查询结果以name字段排序 SELECT name FROM crm.b_user where name

java 将字符串数组变为字典顺序排序后的字符串数组

import java.util.ArrayList; import java.util.Collections; import java.util.List; public class StringUtil { public static String[] stringSort(String [] s) { List<String> list = new ArrayList<String>(s.length); for (int i = 0; i < s.length; i

数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数

数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } arr.sort(function(a,b){ return a-b; // 从小到大排序 }) alert(arr); // 0,1,2,5,6,8,9,81 arr.sort(fu

写一个函数排序整个字符串数组

创建一个字符串数组,总共5个元素,每个元素最多保存30个字符, 写一个函数排序整个数组 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int i,j; char tmp[30]; char arr[5][30]={"bbbb","aaaa","dddd","wwww","eeee"

输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。

#include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序按从大到小排序.提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个字符串数组就是一个二维字符数组.*/ void main(){ char stuNames[5][100]; char tmp[100]; int i = 0,j = 0; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的名字:"

9.11排序与查找(二)——对字符串数组进行排序,将所有的变位词排在相邻的位置

/** * 功能:对字符串数组进行排序,将所有的变位词排在相邻的位置. */ 两种方法: 方法一: /** * 思路:套用排序算法,并修改比较器.这里比较器用来指示两个字符串胡伟变位词就是相等的. * @param array */ public static void sort(String[] array){ Arrays.sort(array, new AnagramComparator()); } class AnagramComparator implements Comparator

9.11排序与查找(五)——有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置

/** * 功能:有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置. */ /** * 思路:对二分查找法做修改,与mid比较的地方,如果mid为空字符串,则将mid换到离它最近的非空字符串的位置. * @param strings * @param str * @return */ public static int search(String[] strings,String str){ if(strings==null||str==null||str=="")

Java编程实现中英混合字符串数组按首字母排序的方法

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: ? 1 2 3 4 5 6 7 String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁"

C 入门 第五节 多维数组 字符串数组

#pragma mark  ----------二维数组----------int main(int argc, const char * argv[]) {/*    1 . 二维数组的本质:将数组作为数组元素的数组,称为数组的数组    2 . 类如:管理一个班4个学生的年龄,将一维数组作为数组元素,存储到另一个数组中    int age[4] = {12,13,14,15};    12,13,14,15    21,22,23,24    31,32,33,34    3 . 为了形象