改错题

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

【正确答案】

(1) char *fun(char (*sq)[M])

(2) return sp;

【答案解析】

函数fun的形参为字符串指针数组,每个元素 指向一个长度为M的字符串,要找出其中最长的字 符串,可先假设指针数组的第1个元素所指的字符 串最长,之后对字符串指针数组进行遍历,若遇字 符串长度大于待定最长字符串的长度,则令该字符 串为待定最长字符串,如此循环直至指针数组末尾, 即可得到最长字符串的地址。

(1)此处是函数定义错误,根据返回值类型可 知该函数应定义为字符型指针函数。

(2)由for循环体可知,指针sp指向长度最长 的字符串,因此应返回sp。