0

我正在尝试制作一个将 char 指针插入到 'char** arr' 的程序,然后使用 strcmp 对 char 指针进行排序,但由于某种原因它不起作用,我添加的代码是整个排序的一部分代码。

do
    {
        flag = 0;

        for (i = 0; i < num - 1; i++)
        {
            if ((strcmp(arr[i], arr[i + 1])) < 0)
            {
                flag = 1;
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) > 0)
            {
                flag = 1;
                temp = arr[i + 1];
                arr[i + 1] = arr[i];
                arr[i] = temp;
            }

            else if ((strcmp(arr[i], arr[i + 1])) == 0)
            {
                flag = 1;
                continue;
            }
        }
    } while (flag == 1);
4

1 回答 1

0
  1. 取决于您想要升序还是降序,您应该只在其中一种情况下交换arr[i]和。(或案例)arr[i+1]ifstrcmp() < 0strcmp() > 0
  2. flag仅在实际发生交换时才应分配为 1。否则循环不会停止。
于 2016-04-09T15:56:45.543 回答