C语言中的冒泡排序输出问题

时间:2018-07-28 09:42:00

标签: c arrays pointers

我目前正在研究C教科书中有关指针数组/字符串解引用的一章。它提供了对字符串进行冒泡排序的示例。而且,每次我运行它时,它都不以字母升序输出字符串,包括字符串的每个字符。我一直在重读代码以找出错误的位置,但找不到它。这是教科书提供的输出信息:

#include <stdio.h>

#define SIZE 8

int main()
{
    const char *name[] =
    {
        "Mickey",
        "Minnie",
        "Donald",
        "Daisy",
        "Goofy",
        "Chip",
        "Dale",
        "Pluto"
    };
    const char *temp;
    int x,a,b;

    for(a=0; a<SIZE-1; ++a)
    {
        for(b=a+1; b<SIZE; ++b)
        {
            x=0;
            while(*(*(name+a)+x))
            {
                if(*(*(name+a)+x) > *(*(name+b)+x))
                {
                    temp = *(name+a);
                    *(name+a) = *(name+b);
                    *(name+b) = temp;
                    break;
                }
                else if(*(*(name+a)+x) < *(*(name+b)+x))
                {
                    break;
                }
                else
                {
                    x++;
                }
            }
        }
        for(x=0; x<SIZE; ++x)
        {
            printf("%s\n",*(name+x));
        }
        return(0);
    }
}

输出:

Chip
Minnie
Mickey
Donald
Goofy
Daisy
Dale
Pluto

0 个答案:

没有答案