
一个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;
} 展开
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;
} 展开
3个回答
展开全部
这个程序不想楼上说的那么简单,你可能是一个新手。我先揣测一下你的想法,你是想通过让程序来判断输入形参的个数来分别执行不同的代码段,
但是程序的执行是这样的:
当执行到第一个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;
}
展开全部
把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函数上面。
int calc();是函数声明,而且还写错了,不是写了名字就表示所有这个名字的都声明了,而是要与你实际定义的相同。如果要写得话,必须这3个都写:int calc(int x);int calc(int x,int y);int calc(int x,int y,int z);但现代C语言已经不推荐将声明写在函数里了,所以去掉了,把函数体都放到前面就行了。如果非要把函数体放在后面,可以把那3句话写在main函数上面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有函数声明
把几个重载函数在主函数前边先写个函数声明
【欢迎追问,满意采纳】
把几个重载函数在主函数前边先写个函数声明
【欢迎追问,满意采纳】
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询