问答题 下列给定程序中,函数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;i < 【1】 ;i++) {len=str1en(ss[i]); /*********found*********/ if(1en < = 【2】 ) /*********found*********/ strcpy(ss[j++], 【3】 ); } return j; } void main() { char x[N][M]={"Bei jing","Shanghai","Tianjin"," 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 OE equal to 7:/n"); for(i=0;i < f;i++)puts (x[i]); printf("/n"); }
【正确答案】正确答案:(1)N (2)k (3)ss[i]
【答案解析】解析:本题考查:for循环语句;if语句条件表达式;字符串复制函数strcpy的使用。 填空1:for循环语句的作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是i < N。 填空2:题目要求删除串长度大于k的字符串,所以if条件语句的条件表达式是len < =k。 填空3:通过字符串复制函数将串长不大于k的字符串另存,并记录个数。 字符串复制函数strcpy,其格式为: strcpy(字符数组名1,字符数组名2) 功能:把字符数组2中的字符串复制到字符数组1中。字符串结束标识‘/0’也一同复制。字符数组名2,也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。