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

admin2017-07-27  36

问题 给定程序中,函数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=0;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 resuit 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+j”。
    第三空:字符串以“\0”结束,因此需在字符串后加结束符,故第三空应为“1”。
转载请注明原文地址:https://kaotiyun.com/show/rKDp777K
0

最新回复(0)