冒泡排序程序C.

时间:2011-04-16 01:03:36

标签: c

编写一个函数,当作为bubble_string(s)调用时,会对字符串s中的字符进行冒泡排序。如果s包含字符串“xylophone”,则以下语句应该导致打印ehlnoopxy。 我得到的错误是:10.4.c:在函数main': 10.4.c:3: warning: data definition has no type or storage class 10.4.c: In function main'中: 10.4.c:8:错误:“char”之前的语法错误 10.4.c:在函数`bubble_string'中: 10.4.c:17:错误:')'令牌之前的语法错误 10.4.c:18:错误:')'令牌

之前的语法错误

有关如何解决此问题的任何想法?

更新

代码:

#include <stdio.h>
void swap (char*, char*);
bubble_string(char s[]);

int main(void)
{
    char *s= "xylophone";
    printf("%s", bubble_string(char *s));

    return 0;
}

bubble_string(char s[])
{
    char i, j, n;
    n  = strlen(s);
    for(i = 0; i < n - 1; ++i)
            for(j = n - 1; j > 0; --j)
                    if(s[j-1] > s[j])
                            swap(&s[j-1], &s[j]);
}

3 个答案:

答案 0 :(得分:1)

在其他问题中,您声明bubble_string没有返回值(通过给它返回类型void),然后您继续在printf语句中使用它,就好像它返回了一个值。 (至少在你的编辑之前看起来是这样......现在你的方式,它将默认返回一个int,但你使用它就好像它是一个字符串,你实际上没有从{{返回任何东西) 1}}。)

此外,您的bubble_string循环语法也是如此。外环可能应该是 更像是:

for

答案 1 :(得分:0)

你的bubble_string函数需要返回一个char *。否则它会向printf返回一个void,这会导致你的错误(因为printf需要一个char *)。

答案 2 :(得分:0)

如果你在printf()中使用它,你的bubble_string()函数需要返回一个char *。