问答题
编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志。)
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#include<string.h>
void fun(char(*a)[81], int num, char**max)
{

}
main()
{
char ss[10][81], *ps; void NONO();
int n, i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i], "****")==0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss, n, &ps);
printf("/nmax=%s/n", ps);
NONO();
}
void NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
char ss[20][81], *ps;
int n, i=0;
FILE *rf, *wf;
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
fgets(ss[i], 81, rf);
while(!strncmp(ss[i], "****", 4)==0)
{
i++;
fgets(ss[i], 81, rf);
}
n=i;
fun(ss, n, &ps);
fprintf(wf, "%s", ps);
fclose(rf);
fclose(wf);
}
【正确答案】
【答案解析】int i, k=0, maxlen; /*k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长*/
maxlen=strlen(a[k]);
for(i=1; i<num; i++)
{
/*以下完成查找最长串*/
if(strlen(a[i])>maxlen){
maxlen=strlen(a[i]);
k=i;
}
}
*max=a[k];
答案考生文件夹 [解析] 该程序功能是找出最长的一个字符串。解题思路,首先指定第一个字符串为长度最大的字符串,然后在循环过程中将其与其他的所有串的长度进行比较,求出最长的串。
[考点] 指向一维数组的指针以及指针数组、for循环结构。