error C2440: 'return' : cannot convert from 'char []' to 'char'

#include<iostream.h>#include<string.h>intadd(intx,inty){return(x+y);}doubleadd(intx,d... #include<iostream.h>
#include<string.h>
int add(int x,int y)
{
return (x+y);
}
double add(int x,double y)
{
return (x+y);
}
double add(double x,double y)
{
return (x+y);
}
double add(int x,double y,double z)
{
return (x+y+z);
}
char add(char x[100],char y[100])
{
strcat(x,y);
return x;
}

void main()
{
int a,b;double c,d;char e,f;
cin>>a>>b>>c>>d>>e>>f;
cout<<add(a,b)<<endl;
cout<<add(a,c)<<endl;
cout<<add(c,d)<<endl;
cout<<add(a,c,d)<<endl;
cout<<add(e,f)<<endl;
}

error C2440: 'return' : cannot convert from 'char []' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.

怎么做啊,我已经很崩溃了,百度上搜的其他解释都看那不懂,新手希望解释顺便给个可行的方案,谢
展开
 我来答
confuciuskg
2009-04-04 · TA获得超过1285个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:274万
展开全部
只需要把加两个字符的函数修改一下就可以了。给你源代码吧,你去试试。

#include<iostream>
#include<string>
using namespace std;
int add(int x,int y)
{
return (x+y);
}
double add(int x,double y)
{
return (x+y);
}
double add(double x,double y)
{
return (x+y);
}
double add(int x,double y,double z)
{
return (x+y+z);
}
char* add(char x,char y)
{
static char buff[3] = {x}; // 合并字符串缓存,第一个元素初始
//化为x,长度为3是因为字符串还有一个零的结束符
// 注意这里的缓存需要修饰为static,其位于进程的静态数据区而非函数堆栈。
// 不然函数结束后位于堆栈上的局部变量都会被销毁的,这时候你看到的就会是乱码。

strcat(buff, &y);
return buff;
}

void main()
{
int a,b;double c,d;char e,f;
cin>>a>>b>>c>>d>>e>>f;
cout<<a<<'+'<<b<<'='<<add(a,b)<<endl;
cout<<a<<'+'<<c<<'='<<add(a,c)<<endl;
cout<<c<<'+'<<d<<'='<<add(c,d)<<endl;
cout<<a<<'+'<<c<<'+'<<d<<'='<<add(a,c,d)<<endl;
cout<<e<<'+'<<f<<'='<<add(e,f)<<endl;
}
下面是测试结果:
输入:
1 回车
2 回车
3 回车
4 回车
a 回车
b 回车
屏幕上输出:
1+2=3
1+3=4
3+4=7
1+3+4=8
a+b=ab

相信这就是你想要的结果。
情做吻8782
2009-04-04 · 超过23用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:89万
展开全部
char add(char x[100],char y[100])
{
strcat(x,y);
return x;
}
x 是一个字符数组, 那么x 就代表 指向这个数组首地址的字符指针。 return x; 即是返回的一个数组的首地址指针, 而函数的返回类型是char 型, 而不是char * ,所以就会出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huxiangtao1000
2009-04-04 · TA获得超过270个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:334万
展开全部
帮你改好了!!运行通过

#include<iostream.h>
#include<string.h>
int add(int x,int y)
{
return (x+y);
}
double add(int x,double y)
{
return (x+y);
}
double add(double x,double y)
{
return (x+y);
}
double add(int x,double y,double z)
{
return (x+y+z);
}
char * add(char x[100],char y[100]) /*返回类型改为指针*/
{
strcat(x,y);
return x;
}

void main()
{
int a,b;double c,d;char e[100],f[100]; /*修改的地方*/
cin>>a>>b>>c>>d;
cin.getline(e,100);
cin.getline(f,100);
cout<<add(a,b)<<endl;
cout<<add(a,c)<<endl;
cout<<add(c,d)<<endl;
cout<<add(a,c,d)<<endl;
cout<<add(e,f)<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kenzhon
2009-04-04 · TA获得超过2346个赞
知道小有建树答主
回答量:957
采纳率:0%
帮助的人:1055万
展开全部
char add(char x[100],char y[100])
{
strcat(x,y);
return x;
}
函数的返回值定义与实际返回值的类型不相同,要不改为return *x;,要不改成 char* add(char x[100], char y[100])。按照程序的作用,应该用后一改法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qyjubriskxp
2009-04-04 · TA获得超过892个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:739万
展开全部
这句char add(char x[100],char y[100]) 改成
char* add(char x[100],char y[100])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式