其他分享
首页 > 其他分享> > 字符串排序1(指针数组,元素指针,行指针)(strcmp)

字符串排序1(指针数组,元素指针,行指针)(strcmp)

作者:互联网

1.编写函数sortstr1(), 按字母序对字符串数组进行升序排序;

2.编写函数sortstr2(),按字母序对字符串数组进行升序排序;

3.main()函数中调用sortstr1()和sortstr2(),分别完成对各星期字符串、月份字符串的排序;

输出样例:

在这里给出相应的输出。例如:

Friday Monday Saturday Sunday Thursday Tuesday Wednesday 
April August December February January July June March May November October September 

#include <stdio.h>
#include <string.h>
#define STR_LEN  32

char week[7][STR_LEN] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
char* months[12] = { "January", "February", "March", "April", "May", "June", "July", "August",
                    "September", "October", "November", "December" };


void  sortstr1(char (*p)[STR_LEN], int n)//实参为二维数组,形参为行指针
{
    int i, j;
    for (i = 0; i < 7 - 1; i++)
    {
        for (j = i + 1; j < 7; j++)
        {//进行升序排列
            if (strcmp(*(p + i), *(p + j)) > 0)//strcmp >0, 前者大于后者
            {
                char a[STR_LEN];//定义一个过渡数组
                strcpy(a, *(p + i));
                strcpy(*(p + i), *(p + j));
                strcpy(*(p + j), a);
            }//if
        }//for
    }//for

}//sortstrl

void  sortstr2(char *p[], int n)//实参为指针数组,形参为指针数组
{
    int i, j;
    for (i = 0; i < 12 - 1; i++)
    {
        for (j = i + 1; j < 12; j++)
        {//进行升序排列
            if (strcmp(p[i], p[j]) > 0)
            {
                char *t = p[i];
                p[i] = p[j];
                p[j] = t;
            }//if
        }//for
    }//for

}//sortstr2

int main()
{
    int i = 0;
    sortstr1(week, 7);
    for (i = 0; i < 7; i++) 
    {
        printf("%s ", week[i]);
    }//for

    printf("\n");
    sortstr2(months, 12);
    for (i = 0; i < 12; i++) 
    {
        printf("%s ", months[i]);
    }//for

}

注:strcmp函数为字符串比较函数,头文件为<string.h>两个字符串从首元素开始比较ASCII码,

返回值 >0 ,前者大于后者

返回值 =0 ,前者等于后者

返回值 <0 ,前者小于后者

标签:sortstr2,12,int,char,++,字符串,排序,strcmp,指针
来源: https://blog.csdn.net/yun_oyun/article/details/121635900