首页 > 试题广场 >

输入若干个字符串,通过指针数组采用直接选择排序方法将这些字符

[问答题]
输入若干个字符串,通过指针数组采用直接选择排序方法将这些字符串按照从小到大排序后输出。
推荐
使用一个指针数组p指向各个字符串,采用直接选择排序方法对其排序。对应的程序如下:
#include <stdio.h>
#include <string.h>
#define Max 10
void main()
{
    char str[Max] [20]
    char * p[Max}, *tmp;
    int i,j,k,n;
    printf("n:");
    scanf("%d",&n);                        /*n<=10*/
    for (i=0;i<n;i++)
    {    p[i]=str[i];
        printf("String"%d:",i+1);
        scanf("%s",p[i]);
    }
    for (i=0;i<n-1;j<n;j++ )               /*做第i趟排序(0≤i≤N-2)*/
    {    k=i;
        for (j=i+1;j<n;j++ )            /*在无序区 p[i..N-1]中选最小者 p[k]*/
            if (strcmp(p[j],p[k])<0)
                k=j;         /*k记下目前找到的最小者的位置*/
        if (k!=i)
        {    tmp=p[i];            /*p[i]<->[k]*/
            p[i]=p[k];
            p[k]=tmp;
        }
    }
    printf("排序后:\n");
    for (i=0;i<n;i++ )
        printf(" %s\n",p[i]);
}

发表于 2018-05-07 10:58:26 回复(0)