字符数组排序出现了问题

字符串排序输入字符串与原来输入顺序一样
[

#include<stdio.h>
#include<string.h>
int main()
{
    void fun(char *p1,char *p2,char *p3);
    char str1[80],str2[80],str3[80];
    printf("输入三个字符串:");
    scanf("%s%s%s",str1,str2,str3);
    fun(str1,str2,str3);
    printf("%s,%s,%s",str1,str2,str3);
    return 0;
}
void fun(char *p1,char *p2,char *p3)
{
    char *t;
    if(strcmp(p1,p2)>0){
        t=p1;
        p1=p2;
        p2=t;
    }
    if(strcmp(p2,p3)>0){
        t=p2;
        p2=p3;
        p3=t;
    }
    if(strcmp(p1,p3)>0){
        t=p1;
        p1=p3;
        p3=t;
    }
    return;
}

要交换指针的引用的值才行,另外 第三次比较 也要是 p1 和 p2
修改如下:

#include<stdio.h>
#include<string.h>
int main()
{
    void fun(char *p1,char *p2,char *p3);
    char str1[80],str2[80],str3[80];
    printf("输入三个字符串:\n");
    scanf("%s%s%s",str1,str2,str3);
    fun(str1,str2,str3);
    printf("%s,%s,%s",str1,str2,str3);
    return 0;
}
void fun(char *p1,char *p2,char *p3)
{
    char t[80];
    if(strcmp(p1,p2)>0){
        strcpy(t, p1);
        strcpy(p1, p2);
        strcpy(p2, t);
    }

    if(strcmp(p2,p3)>0){
        strcpy(t, p2);
        strcpy(p2, p3);
        strcpy(p3, t);
    }

    if(strcmp(p1,p2)>0){
        strcpy(t, p1);
        strcpy(p1, p2);
        strcpy(p2, t);
    }
}


你这样交换了一个寂寞

char *t;
->
char t[80];

t=p1;
->
strcpy(t, p1);
别的类似


  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7572359
  • 这篇博客你也可以参考下:有一个已排好序的数组 要求输入一个数后 按原来排序的规律将它插入数组中
  • 除此之外, 这篇博客: 软考初级程序员案例分析必考考点解析:中的 流程图主要考点: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 字符串匹配,数据的计算,数组的相关计算等(重点在于理解流程图和算法)

  • 您还可以看一下 钱兴会老师的从零开始自然语言处理课程中的 自然语言处理的工作原理小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可能的原因:

    1.排序算法本身存在问题:如果使用的排序算法不正确或者实现有误,就可能导致结果与预期不符。可以通过查看自己的代码或者对比不同排序算法的实现来判断是否存在这方面的问题。

    2.输入数据本身存在问题:如果输入的数据并不是按照预期的顺序排列,那么排序结果就不会符合预期。可以通过检查输入数据的顺序来判断是否存在这方面的问题。

    3.代码中的错误:代码中可能存在语法错误、逻辑错误等等,导致排序结果与预期不符。可以通过检查代码或者进行调试来判断是否存在这方面的问题。

    4.字符数组本身的问题:字符数组可能存在非预期的字符、不可见字符、空字符等等,导致排序结果不符合预期。可以通过检查字符数组中的每个字符来判断是否存在这方面的问题。

    解决方案:

    1.检查使用的排序算法是否正确,并对算法实现进行修正,确保实现正确性。

    2.检查输入数据,确认其是否按照预期的顺序排列,并进行排序之前的预处理,保证输入数据正确性。

    3.对代码进行调试,确认是否存在语法错误、逻辑错误等等,对代码进行修改或优化,增强代码的可读性和正确性。

    4.对字符数组进行检查,确认其中是否存在非预期的字符、不可见字符、空字符等等,并进行清理或替换,确保字符数组的正确性。