填空题 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#include<string.h>
#define N 5
#define M 10
int fun(char(*ss)[M],int k)
{int i,j=0,len;
/**********found**********/
for(i=0;k 1;i++)
{len=strlen(ss[i]);
/**********found**********/
if(len<= 2)
/**********found**********/
strcpy(ss[j++], 3);
}
return j;
}
main()
{char x[N][M]{"Beijing","Shanghai","Tianjing","Nanjing","Wuhan");
int i,f;
printf("/nThe original string/n/n");
for(i=0;i<N;i++)puts(x[i]);printf("/n");
f=fun(x,7);
printf("The string witch length is less than orequal to 7:/n");
for(i=0;i<f;i++)puts(x[i]);printf("/n");
}
【正确答案】
【答案解析】(1)N (2)k (3)ss[i] [解析] 填空1:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是i<N。
填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len<=k。
填空3:通过字符串拷贝函数将串长不大于k的字符串另存,并记录个数。