回 帖 发 新 帖 刷新版面

主题:朋友过来帮忙看看这道题!!!

题目:输入5个国家的名字,进行从小到大排列。
#include <stdio.h>
#include <string.h>
void main()
{void sort(char *name[], int n);
void print(char *name[],int n);
static  char *name[5]={"china","australia","italy","american","english"};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[], int n)
{int i,j,k;
char *p;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0)
k=j;
if(k!=i)
{p=name[i];
name[i]=name[k];
name[k]=p;
}
}
}
void print(char *name[],int n)
{int i;
for(i=0;i<n;i++)
   printf("%s\n",name[i]);
printf("\n");
}
这道题我运行过了,运行是能运行,但是,什么也不是显示(只显示光标)
请问:我这道题是编的有毛病,还是,某处有问题,我现在就不理解了,请大家多多指点!!!
 谢谢了 !(@-@) !   呵呵 

回复列表 (共1个回复)

沙发

没仔细看,不过下面的代码有问题
 while(k!=i)
{p=name[i];
name[i]=name[k];
name[k]=p;
}

这明显会出现死循环!!
把while改成if试试看行不?


还有楼主的格式.....哎!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册