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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?