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日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同