给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长<N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结

admin2019-03-06  39

问题 给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长<N。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
1  #include<stdio.h>
2  #include<string.h>
3  #define M 5
4  #define N 20
5  int fun(char(*ss)[N],int *n)
6  {  int i,k=0,len=N;
7 /**********found**********/
8  for(i=0;i< ___1___  ;i++)
9  {len=strlen(ss);
10  if(i==0) *n=len;
11 /**********found**********/
12  if(len __2__*n)
13  {*n=len;
14  k=i;
15   }
16   }
17 /**********found**********/
18  return( __3__ );
19  }
20  main()
21  {  char ss[M][N]={’’shanghai’’,’’guangzhou’’,’’beijing’’,’’tianjing’’,’’chongqing’’);
22  int n,k,i;
23  printf(’’\nThe    original strings are:\n’’);
24  for(i=0;i<M;i++)puts(ss);
25  k=fun(ss,&n);
26  printf(’’\nThe length  of shortest string is:%d\n’’,n);
27  printf(’’\nThe shortest string is:%s\n’’,ss[k]);
28  }

选项

答案(1)M (2)< (3)k

解析 函数fun的功能是求ss所指字符串数组中长度最短的字符串所在的行下标。求最短字符串所在的下标,一般假设第一个字符串的长度最短min,用k记录最长字符串的下标的话,开始时min=strlen(ss[0]),k=0,然后逐个比较其他字符串长度,如果字符串ss长度比min小,则将min赋值为这个字符串长度,“k=i”,如此便可求得最短字符串和最短字符串所在的下标位置。
    第一空:循环的目的是在M个字符串中寻找长度最短的字符串,因此,循环变量i从0变化到“M-1”,故第一空处应为“M”。
    第二空:“*n”记录最小字符串的长度,由审题分析可知,字符串ss长度比min小,则交换最小长度值和下标位置,故第二空处应为“<”。
    第三空:变量k记录了最小字符串的下标位置,函数的返回值是最短的字符串所在的行下标,故第三空处应为“k”。
转载请注明原文地址:https://jikaoti.com/ti/4kf0FFFM
0

最新回复(0)