IT小白can 2017-08-31 14:43 采纳率: 0%
浏览 858
已结题

字符串排序问题,小白蒙蔽中。。

将三个给定的字符串依据长度从小到大显示出来,结果却只是第一行和第三行调换了位置,求大佬看看代码问题出在哪里。。
#include
#include
int main(void)
{
int i, j;
int n = 3;
char abb[3][20] =
{
"333",
"22",
"1"
};
char temp[20];

for (i = 0; i < n; i++)
{
    for (j = i + 1; j < n; j++)
    {
        if (strlen(abb[i]) - strlen(abb[j])>0)
        {
            strcpy(temp, abb[i]);
            strcpy(abb[i],abb[j]);
            strcpy(abb[j], temp);
        }
    }
}
for (i = 0; i < n; i++)
{
    puts(abb[i]);
    printf("%d\n", strlen(abb[i]));

}

getchar();
return 0;

}

  • 写回答

6条回答

  • 随身备纸巾 2017-09-01 01:16
    关注

    C不怎么会,但是你这应该是冒泡排序吧,你的逻辑太混乱了,给你个java版本的,你自己参考下吧,第一层循环,表示有多少数要进行比较,
    第二层循环表示这些数真正的去比较大小,循环结束后会把最大的取出来放在数组最后面,然后进行第二个数的比较,已经取出来了最大的,所以省略一次,所以用before.length-i-1。想了解具体,建议楼主看下冒泡排序。
    public static int[] bubbleSort(int[] before) {
    int temp;
    for(int i = 0;i < before.length;i++) {
    for(int j = 0;j < before.length - i - 1;j++) {
    if(before[j] > before[j+1]) {
    temp = before[j];
    before[j] = before[j+1];
    before[j+1] = temp;
    }
    }
    }
    return before;
    }
    @org.junit.Test
    public void testBubbleSort() {
    int[] arr = {1,3,2,44,22,477,222,45};
    System.out.println(Arrays.toString(bubbleSort(arr)));
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用