aaasdfgzzy 2022-04-14 11:40 采纳率: 79.4%
浏览 44
已结题

编程,在主函数中输入10个最长不超过20个字符的字符串,用另一个函数完成对这10个字符串降序排序,然后在主函数中再输出排序后的字符串。

//用指针数组处理,程序有问题,求改错。

#include<stdio.h>
#include<string.h>
void px(char *p[10],int n)
{
    int i,j,k;
    char *t;
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(p[i],p[j])>0) k=j;
        if(k!=i)
        {
            t=p[i];
            p[i]=p[k];
            p[k]=t;
        }
    }
}
int main()
{
    char *p[10];
    int i;
    printf("请获得十串字符串:\n");
    for(i=0;i<10;)
        scanf("%s",p[i]);
    printf("字符串降序排序后为:\n");
    px(p,10);
    for(i=0;i<10;i++)
        printf("\n%s\n",*p[i]);
    return 0;
}


  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-04-14 12:18
    关注

    修改处见注释,供参考:

    #include<stdio.h>
    #include<string.h>
    void px(char* p[10], int n)
    {
        int i, j, k;
        char* t;
        for (i = 0; i < n - 1; i++) // 修改
        {
            k = i;
            for (j = i + 1; j < n; j++)
                if (strcmp(p[k], p[j]) > 0) k = j; //修改  if(strcmp(p[i],p[j])>0) k=j;
            if (k != i)
            {
                t = p[i];
                p[i] = p[k];
                p[k] = t;
            }
        }
    }
    int main()
    {
        char a[10][20], * p[10];   //修改
        int i;
        printf("请获得十串字符串:\n");
        for (i = 0; i < 10; i++){ //修改  for(i=0;i<10;)
            scanf("%s", a[i]);   //修改
            p[i] = a[i];         //修改
        }
        printf("字符串降序排序后为:\n");
        px(p, 10);
        for (i = 0; i < 10; i++)
            printf("\n%s\n", p[i]); //修改 printf("\n%s\n",*p[i]);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日

悬赏问题

  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥20 unity内置语言切换的按钮设置
  • ¥15 中级微观经济学,生产可能性边界问题
  • ¥15 TCP传输时不同网卡传输用时差异过大
  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?
  • ¥15 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码