问题 问答题

编写一个函数,从传入的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=%s\n",ps);

答案

参考答案:

 fun(char (*a)[HA], 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]是一个数组地址而不是一个指针的地址。

选择题
单项选择题