一个C++,关于函数重载的问题,帮忙找下错误,谢谢

#include<iostream>usingnamespacestd;intmain(){intcalc();inta,b,c,result;if(cin>>a){re... #include<iostream>
using namespace std;
int main()
{
int calc();
int a,b,c,result;
if(cin>>a)
{
result=calc(a);

}
if(cin>>a>>b)
{
result=calc(a,b);
}
if(cin>>a>>b>>c)
{
result=calc(a,b,c);
}
return result;

}
int calc(int x)
{
int m;
m=x*x;
return m;
}
int calc(int x,int y)
{
int m;
m=x*y;
return m;

}
int calc(int x,int y,int z)
{
int m;
m=x+y+z;
return m;
}
展开
 我来答
旅春冬TJ
2013-08-05 · TA获得超过1082个赞
知道大有可为答主
回答量:1271
采纳率:66%
帮助的人:600万
展开全部

     这个程序不想楼上说的那么简单,你可能是一个新手。我先揣测一下你的想法,你是想通过让程序来判断输入形参的个数来分别执行不同的代码段,

     但是程序的执行是这样的:

     当执行到第一个if语句的时候,程序会等待输入(阻塞),当执行完第一个if之后,执行第二个if语句的时候程序会接着等待输入(阻塞),一直到第三个if(阻塞)读入数据完成,也就是说就算程序能够运行,你也需要输入完整6个参数,最后输出的结果是第三个函数的的结果,也就把那个变量覆盖了。况且你最后又把这个变量返回给了main函数,那么最后你什么也没有看到。

       如果非得要实现上述的功能,你可以再输入指定个数的参数之后,在控制台按下ctrl+d来强制结束输入,可以得到想要的结果,程序稍作修改,如下:

#include<iostream>
using namespace std;
int calc(int x);
int calc(int x,int y);
int calc(int x,int y,int z);
int main()
{
//int calc();
int a,b,c,result;
if(cin>>a)
{
result=calc(a);

}
   if(cin>>a>>b)
{
result=calc(a,b);
}
if(cin>>a>>b>>c)
{
result=calc(a,b,c);
}
cout<<result;

}
int calc(int x)
{
int m;
m=x*x;
return m;
}
int calc(int x,int y)
{
int m;
m=x*y;
return m;

}
int calc(int x,int y,int z)
{
int m;
m=x+y+z;
return m;
}
猫猫一号脑
2013-08-05 · TA获得超过2740个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:596万
展开全部
把main函数开头的int calc();去掉,然后把后面的3个calc函数移动到main函数上面。

int calc();是函数声明,而且还写错了,不是写了名字就表示所有这个名字的都声明了,而是要与你实际定义的相同。如果要写得话,必须这3个都写:int calc(int x);int calc(int x,int y);int calc(int x,int y,int z);但现代C语言已经不推荐将声明写在函数里了,所以去掉了,把函数体都放到前面就行了。如果非要把函数体放在后面,可以把那3句话写在main函数上面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永远的梦22
2013-08-05 · TA获得超过197个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:172万
展开全部
没有函数声明
把几个重载函数在主函数前边先写个函数声明
【欢迎追问,满意采纳】
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式