题目是:在主函数输入十个等长的字符串,用另一函数对他们进行排序,然后在主函数输出十个排好序的字符串
代码有点长,问题确认出现在函数里,算法粗糙,见谅:#include <stdio.h>
#include <string.h>
static void rank(char *p) ;
int main()
{
char str[10][10];
int i;
char*p=str[0];
printf("please input ten strings each has ten characters:\n");
for(i=0;i<10;i++)
{
printf("str%d:",i+1);
gets(str[i]);
}
rank(p);
printf("After ranking the ten strings are:");
for(i=0;i<10;i++)
printf("\nstr%d:%s",i+1,str[i]);
return 0;
}
static void rank(char*p)
{
int i,j,k=0;
char temp[10];
for(i=0;i<9;i++)//temp是用来作中转的,一个中间值
{
k=i;
for(j=i+1;j<10;j++)
if(strcmp(*(&p+k),*(&p+j))>0)//只是为了多用下指针知识,所以写成这么麻烦的语句,见谅
k=j;
if(k!=i)
{
strcpy(temp,*(&p+i));
strcpy(*(&p+i),*(&p+k));
strcpy(*(&p+k),temp);
}
}
}
编译不存在问题,但输入完十个字符串后,enter,系统提示 ...exe停止运行,请指出问题在哪