A-A+

编写一个函数 从传入的num个字符中找出最长的一个字符串 并通过形参指针max传回该串地址(

2022-08-05 20:40:27 问答库 阅读 172 次

问题详情

编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio.h>
include<stdio.h>
include<string.h>
fun(char (*a) [81], int num, char *max)
{
}
main ()
{
char ss[l0] [81],*ps;
int n, i=0;
clrscr();
prlntf("输入若干个字符串");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i], "****")==0)
/*用****作为结束输入的标志*/
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
ps=fun(ss,n,&ps);
print~("nmax=%sn",ps);
}请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:fun(char (*a)[81] int num char *max){int i=0;max=a[0];for (i=0; i<num; i++) /*找出最长的一个字符串*/if(strlen(max)<strlen(a[i]))max=a[i];return max; /*传回最长字符串地址*/}
fun(char (*a)[81], int num, char *max){int i=0;max=a[0];for (i=0; i<num; i++) /*找出最长的一个字符串*/if(strlen(max)<strlen(a[i]))max=a[i];return max; /*传回最长字符串地址*/} 解析:做本题之前,我们先应该明白ss是一个指向一维数组的指针变量,max是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用max,因为ss[0]是一个数组地址而不是一个指针的地址。

考点:字符串,指针