给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符“*”补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确

admin2018-09-27  44

问题 给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符“*”补齐,使其与最长的字符串等长。ss所指字符串数组中共有M个字符串,且串长<N。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANK1.C中。
   不得增行或删行,也不得更改程序的结构!
1  #include<stdio.h>
2  #include<string.h>
3  #define M 5
4  #define N 20
5  void fun(char(*ss)[N])
6  {  int i,j,n,len=0;
7   for(i=0;i<M;i++)
8  {len=strlen(ss);
9  if(i==0)n=len;
10  if(len>n)n=len;
11    }
12    for(i=0;i<M;i++){
13  /**********found**********/
14  n=strlen( __1__);
15    for(j=O;j<len-n;j++)
16  /**********found**********/
17  ss[__2__]=’*’,
18  /**********found**********/
19  ss[n+j+__3__]=’\0’;
20   }
21  }
22  main()
23  {  char ss[M][N]={’’shanghai’’,’’guangzhou’’,’’beijing’’,’’tianjing’’,’’cchongqing’’};
24    int i;
25   printf(’’The original strings are:\n’’);
26    for(i=0;i<M;i++)printf(’’%s\n’’,ss);
27   printf(’’\n’’);
28    fun(ss);
29    printf(’’The result is:\n’’);
30    for(i=0;i<M;i++)printf(’’%s\n’’,ss);
31  }

选项

答案(1)ss[i] (2)n+j (3)1

解析 函数fun的功能是求出形参ss所指字符串数组中最长字符串的长度。
    第一空:第一个循环求最长字符串的长度“len”,在第二个循环内在其他字符串的后面补“*”,使其达到长度“len。”在“for(j=0;j<len-n;j++)”语句中,“i<len-n”是在字符串的后面填“len-n”个“*”,故n是字符串“ss”的长度,因此,第一空应为“ss”。
    第二空:循环“for(j=0;j<len-n;j++)”目的是在字符串的后面填len-n个“*”,第二空处应为“n+i”。
    第三空:字符串以“\0”结束,因此,需在字符串后加结束符,故第三空应为“1”。
转载请注明原文地址:https://kaotiyun.com/show/o8xp777K
0

最新回复(0)