读书人

怎么实现按字母排序

发布时间: 2012-05-21 18:04:41 作者: rapoo

如何实现按字母排序?

C/C++ code
#include <stdio.h>#include <string.h>#define size 3int main(){    char *name[size]={"abc","cba","bbc"};    char *temp;    for(int i=0;i<size-1;i++)    {        if(strcmp(name[i],name[i+1])>0)        {            strcpy(temp,name[i]);            strcpy(name[i],name[i+1]);            strcpy(name[i+1],temp);        }    }    for(i=0;i<size;i++)        printf("%s\n",name[i]);    return 0;}


代码没问题,编译能通过,但就是运行程序时没有输出结果 还要求退出程序 程序崩溃~~怎么回事?

[解决办法]
char *name[size]={"abc","cba","bbc"};

char *temp;
==>
char temp[64];
char name[size][]={"abc","cba","bbc"};

[解决办法]
temp是个野指针肯定不对,应该给temp定义为

#include <stdio.h>
#include <string.h>
#define size 3

int main()
{
char *name[size]={"abc","cba","bbc"};
char temp[4];
int i;
for(i=0;i<size-1;i++)
{
if(strcmp(name[i],name[i+1])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[i+1]);
strcpy(name[i+1],temp);
}
}
for(i=0;i<size;i++)
printf("%s\n",name[i]);
return 0;
}

不过这样也不行
[解决办法]
void myswap(char** a, char** b)
{
char* c;
c = *a;
*a = *b;
*b = c;
}

int main()
{
char *name[size1]={"abc","cba","bbc"};

int i ;
for(i=0;i<size1-1;i++)
{
if(strcmp(name[i],name[i+1])>0)
{
myswap(&name[i], &name[i+1]);
}
}
for(i=0;i<size1;i++)
printf("%s\n",name[i]);


system("pause");
return 0;
}
你的算法有问题,请参阅 “冒泡法”
[解决办法]
把temp 改为数组、、

char temp[4];

读书人网 >C语言

热点推荐