问答题 给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长<N。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #include<string.h> #define M 5 #define N 20 /******found******/ int fun(char(*ss)【1】,int *n) { int i,k=0,len=0; for(i=0;i<M;i++) { len=strlen(ss[i]); /******found******/ if(i==0) *n=【2】; if(len>*n) { /******found******/ 【3】;k=i; } } return(k); } main() { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; int n,k,i; printf("The original strings are:\n"); for(i=0;i<M;i++) puts(ss[i]); k=fun(ss,&n); printf("The length of longest string is:%d\n",n); printf("The longest string is:%s\n",ss[k]); }
【正确答案】正确答案: (1)[N] (2)len (3)*n=len
【答案解析】解析:本题考查:字符数组处理;函数形参定义;for循环语句。 填空1:形参ss是一个字符串数组的定义,其宽度为N,所以应填[N]。 填空2:*n用来记录最长字符串的长度,此处取第一个字符串的长度赋值给变量*n,所以应填len。 填空3:每循环一次,判断当前字符串的长度是否大于*n,如果大于,则*n=len。