首页 > 试题广场 >

输入若干个字符串,通过指针数组采用冒泡排序方法将这些字符串按

[问答题]
输入若干个字符串,通过指针数组采用冒泡排序方法将这些字符串按照从小到大的次序排序后输出。

推荐
使用一个指针数组p指向各个字符串,采用冒泡排序方法将其排序。对应的程序如下:
#include <stdio.h>
#include <string.h>
#define Max 10
void main()
{
    char str[Max][20];
    char * p[Max], * tmp;
    int i,j,n,exchange;
    printf("n:");
    scanf("%d",&n);
    for (i=0;i<n;i++ )             /* n<=10 */
    {    p[i]=str[i];
       printf("String%d:",i+1);
       scanf("%s",p[i]);
    }
    for (i=0;i<n-1;i++ )        /* 最多做n-1趟排序 */
    {    exchange=o;
         for (j=n-2;j>=i;j-- )
            if (strcmp(p[j+1],p[j])<0)        /* 交换元素 */
            {    tmp=p[j+1];              /* tmp暂存数组元素,用于元素交换 */
                p[j+1]=p[j];
                p[j]=tmp;
                exchange=1;                /* 发生了交换,故将交换标志置为真 */
            }
            if (!exchange)                    /* 本趟未发生交换,提前终止算法 */
                break;
    }
    printf{"排序后:\n");
    for (i=0;i<n;i++ )
        printf(" %s\n",p[i]);
}

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