首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么实现按字母排序

2012-05-21 
如何实现按字母排序?C/C++ code#include stdio.h#include string.h#define size 3int main(){char *na

如何实现按字母排序?

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];

热点排行