3 回答
TA贡献1827条经验 获得超8个赞
#include<stdio.h>
#include<string.h>
char* fun(int,char max[][87]);
int main()
{
char ss[10][87];int numz=0;char* k;
do
{
printf("输入第%d个字符串:\n",numz);
gets(ss[numz]);
numz+=1;
}while(strcmp(ss[numz-1],"****")!=0);
numz-=2;
k=fun(numz,ss);
printf("地址是:%X\n",k);
return 0;
}
char* fun(int num, char max[][87])
{
int i;
char *s;
s=max[0];
for(i=0;i<=num-1;i++)
{
if(strlen(s)<strlen(max[i]))
s = max[i];
}
printf("最长的字符串是:\n");
puts(s);
return (s);
}
改了一下 自己研究一下 呵呵!~ 没什么大问题
PS:只随便调试了一下 不知道算法有无问题
TA贡献1862条经验 获得超7个赞
上面的都做出来了我就不做了,就分析下你错的地方:
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(12) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'char [5]'
错误语句:while(*ss[numz-1]!="****");
解释:*ss[numz-1]代表一个地址不能等于字符串,可改为ss[numz-1]。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(14) : warning C4047: 'function' : 'char ** ' differs in levels of indirection from 'char [10][87]'
错误语句:k=fun(numz,ss);
解释:ss为首地址指针。不能传给char ** ,只能传给char *。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(22) : error C2106: '=' : left operand must be l-value
错误语句:s[0]=*(max);
解释s[0]为一个地址指针,不能存储。给数组赋值要用
for(int i=0;i<max;i++){s[0][i]=*(max+i);}
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(25) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char [10][87]'
错误语句:if(strlen(s)<strlen(*(max+i+1)))
解释:strlen需要传递一个char地址,s可改为s[0]。
C:\Documents and Settings\Administrator\桌面\编程\lianan.c(31) : error C2115: 'return' : incompatible types
错误语句:return (max);
解释:函数返回值类型要更定义类型一样。max为char ** 类型,定义函数确为float。
相同错误就不再说了。
TA贡献1799条经验 获得超9个赞
#include <stdio.h>
#include <string.h>
#define MAX_ROW 10
#define MAX_COL 87
/**********************************/
char * fun(int num,char max[][MAX_COL])
{
int i;
char *s;
s=*(max);
for(i=0;i<=num-1;i++)
{
if(strlen(s)<strlen(max+i+1)) { s=max+i+1; }
}
printf("The longest string is :\n");
puts(s);
return s;
}
/***********************************/
int main()
{
char ss[MAX_ROW][MAX_COL];
int numz=0;
char *k;
do
{
printf("Please input string_%d :\n",numz);
gets(ss[numz]);
numz+=1;
}while(strcmp(ss[numz-1],"****"));
/* 字符串的比较不能直接用地址,但可以用strcmp函数。相同返回0,不同则返回1 */
numz-=2;
k=fun(numz,ss);
printf("The address is 0x%x\n",k);
getch();
return 0;
}
添加回答
举报