编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下. 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句

admin2010-05-05  34

问题 编写一个函数,从传入的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);
         puts(ss);
         while(!strcmp(ss, "****")==0)
         /*用****作为结束输入的标志*/
           {
            i++;
            gets(ss);
            puts(ss);
           }
       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]是一个数组地址而不是一个指针的地址。
转载请注明原文地址:https://jikaoti.com/ti/zSkiFFFM
0

最新回复(0)