帮我找下这段C的错误!

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:38:26
帮我找下到底什么错误,
要求: 通过指针数组保存5个国家名,调用一个函数按字母顺序排序,并输出排序后的结果
代码入下:
#include<stdio.h>
#include<string.h>
void jisuan()
{
char *num[]={"中国","日本","加拿大","英国","英格兰"};
char *temp;
int i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(strcmp(num[j],num[j+1])>0)
{ temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}

}
printf("排序后的序列为:");
for(i=0;i<5;i++)
printf("%s ",num[i]);
}
void main()
{
jisuan();
}

冒泡排序的实现错了,就是这两句:

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{ ……

循环条件有问题,你看你的条件:

strcmp(num[j],num[j+1])>0

那当j到4的时候,就会出现数组越界的问题(num[j+1]),你可以把循环条件改成这样:

for(i=0;i<5;i++)
{
for(j=i;j<4;j++)
{ ……

运行结果测试无误;
你的错误提示有吗?
是不是没把库文件目录设置对啊?