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

admin2013-06-12  62

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

选项

答案char *fun(char (*sq)[M]) return sp;

解析 (1)第一个错误标识下fun函数的定义根据题目要求,返回最长的字符串,原题的“fun(char (*sq)[N])”的定义没有指定返回值,所以“fun(char (*sq)[N])”应该改为“char *fun(char  (*sq)[M])”,指定返回值为字符串。
(2)fun函数中定义sp指针首先指向第一个串,用来存放最长的那个串,然后在循环中sp指向的串与sq指向的其他串长度进行比较,如果sp指向的串长度小于sq指向的串,则sq的值替换sp指向的串,这样保证sp指向的还是最大的串,所以返回最长的串应将“return sq;”改为“return sp;”。
转载请注明原文地址:https://kaotiyun.com/show/2gJp777K
0

随机试题
最新回复(0)