下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个中,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更

admin2010-05-05  40

问题 下列给定程序中,函数fun()的功能是:从N个字符串中找出最长的那个中,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
      #include <string.h>
      #include <stdio.h>
      #define N  5
      #define M 81
      /*************found**************/
      fun(char (*sq) [N])
      {int i; char *sp;
      sp=sq[0];
      for{i=0;i<N;i++)
         if(strlen(sp)<strlen(sq))
            sp=sq;
      /*************found**************/
      return  sq;
      }
      main ()
      {char str[N][M],  *longest; int i;
      printf("Enter %d lines:\n ",N);
      for(i=0;i<N;i++) gets(str);
      printf("\nThe %d string :\n ",N);
      for(i=0;i<N;i++) puts(str);
      longest=fun(str);
      printf("\nThe longest string :\n ");
             puts(longest);
      }

选项

答案(1)fun(char(*sq)[N] 正确:char*fun(char(*sq)[M]) (2)错误:return sq; 正确:return sp;

解析 函数fun()的肜参为字符串指针数组,每个元素指向一个长度为M的字符串。从主函数中的语句可以看出,字符串指针数组的每个元素指向一个字符串,要求函数fun()找出其中最长的字符串。可先假设指针数组的第1个元素所指的字符串最长,之后对字符串指针数组进行遍历,若遇字符串长度大于待定最长字符期,则令该字符串为待定最长字符串,如此循环直至指针数组末尾,即可得到最氏字符中的地址。
转载请注明原文地址:https://jikaoti.com/ti/VSkiFFFM
0

最新回复(0)