重装机兵3伙伴选择:初级C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 03:16:26
我是初学者,为什么这道题的答案是5,能给我详细的解释吗???
#include <string.h>
void f(char p[][10],int n)
{ char t[20]; 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[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};
f(p,5);
printf(“%d\n”,strlen(p[0]));
}

顺便把你程序稍微改了一点点,这样看起来轻松一点
#include <string.h>
#include <stdio.h>
void f(char p[][10],int n)
{
char t[20];
int i,j;
for(i=0;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
if(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
void main()
{
char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));

/*
1.p[0]=abc跟aabdfg比较,abc大于aabdfg,不变动
2.abc跟abbd比较,abc大于abbd,不变动
3.abc跟dcdbe比较,abc小于dcdbe,p[0]=dcdbe
4.dcbde跟cd比较,dcbde大于cd,不变动
p[][10]={"dcbde","aabdfg","abbd","abc","cd"}
以后p[0]的存储单元就一直不变了
最后得到的就是p[0]的长度为5
*/
}

实际上就是字符串数组的排序。