cannot convert parameter 1 from 'char' to 'char [][10]'
#include"stdio.h"#include"string.h"charlongest_(charx[4][10]);voidmain(){chara[4][10]...
#include"stdio.h"
#include"string.h"
char longest_(char x[4][10]);
void main()
{
char a[4][10];int i;
for(i=0;i<=3;i++)
scanf("%s",a[i]);
printf("the longest capital is:\n");
longest_(a[4][10]); /*错误行*/
}
char longest_(char x[4][10])
{
int i,j;
char y[10];
for(i=0;i<=3;i++)
for(j=0;j=3-i;j++)
{
if(strlen(x[i])>=strlen(x[j]))strcpy(y,x[i]);
else strcpy(y,x[j]);
}
for(i=0;i<=9;i++)
printf("%c\n",y[i]);
} 展开
#include"string.h"
char longest_(char x[4][10]);
void main()
{
char a[4][10];int i;
for(i=0;i<=3;i++)
scanf("%s",a[i]);
printf("the longest capital is:\n");
longest_(a[4][10]); /*错误行*/
}
char longest_(char x[4][10])
{
int i,j;
char y[10];
for(i=0;i<=3;i++)
for(j=0;j=3-i;j++)
{
if(strlen(x[i])>=strlen(x[j]))strcpy(y,x[i]);
else strcpy(y,x[j]);
}
for(i=0;i<=9;i++)
printf("%c\n",y[i]);
} 展开
2个回答
展开全部
longgest_()的参数是char[][]二维数组类型,传输的实参是char原子类型,类型不符。按照程序逻辑应该传入字符串指针,这样就可以了:
#include"stdio.h"
#include"string.h"
void longest_(char x[][10]);
int main()
{
char a[4][10];int i;
for(i=0;i<=3;i++)
scanf("%s",a[i]);
printf("the longest capital is:\n");
longest_(a);
}
void longest_(char x[][10])
{
int i,m=0;
for(i=1;i<4;i++)
{
if(strlen(x[i])>strlen(x[m]))
m=i;
}
printf("%s\n",x[m]);
}
#include"stdio.h"
#include"string.h"
void longest_(char x[][10]);
int main()
{
char a[4][10];int i;
for(i=0;i<=3;i++)
scanf("%s",a[i]);
printf("the longest capital is:\n");
longest_(a);
}
void longest_(char x[][10])
{
int i,m=0;
for(i=1;i<4;i++)
{
if(strlen(x[i])>strlen(x[m]))
m=i;
}
printf("%s\n",x[m]);
}
追问
没能运行,fatal error LNK1168: cannot open Debug/test2.exe for writing
warning C4508: 'main' : function should return a value; 'void' return type assumed
追答
不好意思,先前是在Dev cpp环境下编译成功的,用的是gcc编译器;如果用Turbo C或者Borland C++3.1是有这个提示,不要紧,把main前的int改为void或者在main()函数最后加上return 0;都可以。 另外形参有两种声明:
void longest_(char x[][10]);
或者
void longest_(char x[4][10]);
声明为字符指针也是可以的,不过程序中要改一下
#include"stdio.h"
#include"string.h"
#include
/*char longest_(char x[4][10]);*/
void longest_(char *x);
void main()
{
char a[4][10];int i;
for(i=0;istrlen(x+10*m))
m=i;
}
printf("%s\n",x+10*m);
}
这样也是可以的,bc31下编译通过,注意输入参数的字符串不得大于9个字符。指针这个运用非常灵活,首先要实参和形参要符合;其次要保证地址吻合,地址增加的幅度,这个和指针定义有关。char* x 类型x+1 就是地址增1;char** x类型x+1是地址增4个字节;char x[][10] ,x+1等于地址增加10字节,*(x+1)相当于x[1]或者(char*)((int)x+10),返回的是char*类型
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询