C 二级 利用指针数组对形参ss所指字符串数组中的字符串 按由长到短的顺序排序, 并输出排序结果

给定程序中,函数fum的功能是:利用指针数组对形参ss所指字符串数组中的字符串
按由长到短的顺序排序,
并输出排序结果。
ss所指字符串数组中共有N个字符串,
且串长小于M
请在程序的下划线处填入正确的内容并把下划线
删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C

#include  <stdio.h>
#include  <string.h>
#define N 5
#define M 8
void fun(char (*ss)[M])
{
  char *ps[N],*tp; int i,j,k;
  for(i=0; i<N; i++) ps[i]=ss[i];
  for(i=0; i<N-1; i++) {
/**********found**********/
    k=i;
    for(j=i+1; j<N; j++)
/**********found**********/
       if(strlen(ps[k]) < strlen(ps[j])) k=j;
/**********found**********/
    tp=ps[i]; ps[i]=ps[k]; ps[k]= tp ;
  }
  printf("\nThe string after sorting by length:\n\n");
  for(i=0; i<N; i++) puts(ps[i]);
}
main()
{char ch[N][M]={"red","green","blue","yellow", "black"};
  int i;
  printf("\nThe original string\n\n");
  for(i=0;i<N;i++)puts(ch[i]); printf("\n");
  fun(ch);
}

解析:
[审题分析]
本题中对函数m的功能是利用指针数组对形参ss所
指字符串数组中的字符串按由长到短的顺序排序,并
输出排序结果。在fun函数中采用了选择排序法,在选
择排序法中的降序排序。首先从数组中挑选一个最大
的元素,把它和第一元素交换,接着从剩下的n-1个
元素中再挑出一个最大的元素,把它和第三个元素交
换,不断重复以上过程,直到比较完最后两个元素。

第一空:分析可知,fum函数采用的选择排序,在
第一空处是初始化k。“for(=i+1;j<N;j++)” 循环是寻
找长度最长的字符串,找到之后和k字符串交换,因
此k从0开始,随着i变化,故第一空处应为“i” 。
第二空:ifstrlen(ps[k]<strlen( 2_ ))k=j" 新
的字符串ps[j]如果比ps[k]的长度长,那么k记录下新的
最长的字符串的下标位置j,故第二空处应为“ps[j]”

第三空:tp=ps[i]; ps[i]=ps[k]: ps[k]=_ 3_ ;
是字符串地址交换,显然第三空处应是临时变量tp。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值