永发信息网

void fun(char *s[], int n)

答案:2  悬赏:0  手机版
解决时间 2021-03-21 02:09
  • 提问者网友:心如荒岛囚我终老
  • 2021-03-20 20:42
void fun(char *s[], int n)
{
char *t;int i,j
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;}
}
main()
{char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}
fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);
}

请告诉我,程序怎么运行的,请详细帮我分析一下,这个仿真题我不会做帮我一层一层的分析一下,谢谢
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-03-20 21:25
void fun(char *s[], int n) //排序函数,按字符串长度从小到大进行排序 //这是主元法排序,即:一动一不动,用动的和不动比较
{
char *t;int i,j
for(i=0;i<n-1;i++) //不动
for(j=i+1;j<n;j++) //动
if(strlen(s[i])>strlen(s[j])) //比较字符串长度,如果前者长度比后者大,就交换两个字符串的地址(该地址存储在字符串数组中){t=s[i];s[i]=s[j];s[j]=t;}
}
main()
{char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"} //定义一个字符串数组,用来存储数据
fun(ss,5); //调用排序函数,传递字符串首地址以及元素个数printf("%s,%s\n",ss[0],ss[4]); //打印出最小值和最大值
}
全部回答
  • 1楼网友:空山清雨
  • 2021-03-20 22:30

void fun(char *s[], int n) //排序函数,按字符串长度从小到大进行排序

//这是主元法排序,即:一动一不动,用动的和不动比较
{
char *t;int i,j
for(i=0;i<n-1;i++) //不动
for(j=i+1;j<n;j++) //动
if(strlen(s[i])>strlen(s[j])) //比较字符串长度,如果前者长度比后者大,就交换两个字符串的地址(该地址存储在字符串数组中)

{

t=s[i];s[i]=s[j];s[j]=t;

}
}
main()
{char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"} //定义一个字符串数组,用来存储数据
fun(ss,5); //调用排序函数,传递字符串首地址以及元素个数

printf("%s,%s\n",ss[0],ss[4]); //打印出最小值和最大值
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯