一个c语言问题。望帮忙解决,先谢了!!

来源:百度知道 编辑:UC知道 时间:2024/06/21 15:48:46
include<string.h>
void f(char p[][10],int n)
{char t[10];
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{ strcpy(strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); }
}
main()
{
{char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
这个程序有一个错误,我改不出来。
上面这个程序是一个习题,习题答案给的运行结果是3,而我觉得是6,
还望网友帮我解释一哈!!!
在此小弟先谢谢了!!!

你的错误还真多啊,呵呵。
但最主要的,让你运行结果不的原因是
{ strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); }
你把最后的 strcpy(p[i],t)这句写错了。应该是strcpy(p[j],t)
不然 p[0]永远是 “abc”

#include<string.h>
void f(char p[][10],int n)
{
char t[10];
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));

}