填空题
给定程序中,函数fun()的功能是求ss所指字符数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符数组中共有M个字符串,且串长<N。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构。
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
int fun(char(*ss)[N],int *n)
int i,k=0,len=N;
/**********found**********/
for(i=0;i< (1) ;i++)
len=strlen(ss[i]);
if(i==0)*n=len;
/**********found**********/
if(len (2) *n)
*n=len;
k=i;
/**********found**********/
return (3) ;
main()
char ss[M][N]="shanghai",
"guangzhou","beijing","tianjing","chongqing";
int n,k,i;
printf("/nThe original strings are:/n");
for(i=0;i<M;i++)puts(ss[i]);
k=fun(ss,&n);
printf("/nThe length of shortest string is:%d/n",n);
printf("/nThe shortest string is:%s/n",ss[k]);
【正确答案】
1、(1)M (2)< (3)k
【答案解析】[解析] 函数fun()的功能是求ss所指字符数组中长度最短的字符串所在的行下标。求最短字符串所在的下标,一般假设第一个字符串的长度最短min。如果用k记录最短字符串的下标,开始时min=strlen(ss[0]),k=0;然后逐个比较其他字符串长度,如果字符串ss[i]长度比min小,则将min赋值为这个字符串长度,k=I;如此便可求得最短字符串和最短字符串所在的下标位置。
第一空:循环的目的是在M个字符串中寻找长度最短的字符串,因此循环变量i从0变化到M-1,故第一空处应为“M”。
第二空:*n记录最小字符串的长度,由审题分析可知,字符串ss[i]长度比min小,则交换最小长度值和下标位置,故第二空处应为“<”。
第三空:变量k记录了最小字符串的下标位置,函数的返回值是最短的字符串所在的行下标,故第三空处应为“k”。
[考点] 字符串处理,排序。