填空题 下列给定程序中,函数proc()的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<string.h>
#include<stdio.h>
#define N 5
#define M 81
//****found****
proc(char(*sq)[N])
{
int i;char*sp;
sp=sq[0];
for(i=0;i<N;i++)
if(strlen(sp)<strlen(sq[i]))
sp=sq[i];
//****found****
return sq;
}
void main()
{
char str[N][M],*longest;int i;
printf("Enter%d lines:/n",N);
for(i=0:i<N;i++)gets(str[i]);
printf("/nThe%d string:/n",N);
for(i=0;i<N;i++)puts(str[i]);
longest=proc(str);
printf("/nThe longest string:/n");
puts(longest);
}
【正确答案】
【答案解析】错误:proc(char(*sq)[N])
正确:char*proc(char(*sq)[M])
错误:return sq;
正确:return sp; [解析] 由主函数中的函数调用以及函数proc()中的返回值类型,可知函数proc()的返回值类型为指向字符的指针变量。因此,“proc(char(*sq)[N])”应改为“char*proc(char(*sq)[M])”。由函数proc()可知,变量sp中存放最长字符串的地址。因此,“return sq;”应改为“return sp;”。