问题 问答题

编写一个函数,从传入的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)[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]是一个数组地址而不是一个指针的地址。

解答题
单项选择题