C++函数重载题目:输入一个数时求平方,输入2个数时求积,输入三个数时求和

#include <iostream>
using namespace std;
void add(int a);
void add(int a, int b);
void add(int a, int b, int c);
int main()
{
int a, b, c;
cin >> a >> b >> c;
add(a);
add(a, b);
add(a, b, c);
system("pause");
return 0;
}
void add(int a)
{
cout << a*a<<endl;
}
void add(int a, int b)
{
cout << a*b<<endl;
}
void add(int a, int b, int c)
{
cout << a + b + c<<endl;
}
单个输出怎么办?我这个是一次输出的!

给你个思路好了,直接给代码不利于练习进步。
定义一个整型数组a[3],这样就可以根据a的大小来调用哪一个接口了。追问

还是不明白啊,给个答案吧,我搞了2个小时还是搞不明白,头都大了!

追答

if(cin.get())!='\n')

a[i++] = cin.get();
这样就可以判断用户是否完成输入而且将每一个输入都存进了a[3]里了。
(这里有一个问题,如果用户输入了多于3那就越界了,你需要提示只能输入最多3个 **整数**)

判断有几个数的办法是
len = sizeof(a)/sizeof(int)

这样一来,你就可以
switch len:
case 1:
add(a[0]);
case 2:
add(a[0], a[1]);
case 3:
add(a[0],a[1],a[2])
或者用
if (n==1) {} elif (n==2) {} else() {}

都说到这个份上如果你还做不了,那你就再看看基础好了

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-18
什么叫单个输出,请解释追问

就是如果我输入1个数,程序只输出这个数的平方,然后程序退出;
如果输入2个数,程序只输出这两个数的积,然后程序退出;
如果输入3个数,程序只输出这三个数的和,然后退出。

第2个回答  2015-01-18
单个输出怎么办?我这个是一次输出的!

什么意思?没看懂。追问

就是如果我输入1个数,程序只输出这个数的平方,然后程序退出;
如果输入2个数,程序只输出这两个数的积,然后程序退出;
如果输入3个数,程序只输出这三个数的和,然后退出。

追答

那你的程序有问题。

int a,b,c;这三个数都定义了,不管你有没有输入,
add(a);
add(a, b);
add(a, b, c);
这三行都会被执行。

追问

知道啊,不知道怎么才能实现单个的输出

追答

通过cin的数量来控制这种方法不好。

你可以这样修改:

int main(int argc, char *argv[]) {
  int a, b, c;
  if (argc==2) {
    a = atoi(argv[1]);
    add(a);
  } else if (argc==3) {
    a = atoi(argv[1]);
    b = atoi(argv[2]);
    add(a,b);
  } else if (argc==4) {
    a = atoi(argv[1]);
    b = atoi(argv[2]);
    c = atoi(argv[3]);
    add(a,b,c);
  }
//  cin >> a >> b >> c;

  return 0;
}

编译后:
a.exe 1 2 3
a.exe 1
a.exe 1 2
这样执行。

追问

运行之后直接退出。。。

追答

system("pause");

追问

你确定这样行?我加了system("pause");还是不行啊,没反应,直接来一句请按任意键继续。。。。

追答

你是在集成环境里直接运行吧。
不知道你用的是什么,需要设置运行时参数。
或者你在dos窗口里执行。

C++函数重载题目:输入一个数时求平方,输入2个数时求积,输入三个数时...
定义一个整型数组a[3],这样就可以根据a的大小来调用哪一个接口了。

...建立求某一个数的平方根函数,利用函数重载分别定义求整型、实型...
include <cmath>#include <iostream>using namespace std;template <class T>T sqrts(T &t){ return sqrt(t);}int main( ){ int a=16; cout<<sqrts(a); return 0;}

求助,关于一道C++函数重载的问题
你有这样的问题大概是因为双目操作符比如*,可以有x.operator*(y)这种写法吧? 但是这个不改变*是二目操作符的事实。C++规定:双目操作符重载作为成员函数时只能有一个形参,调用方为左操作数,形参为右操作数。所以x.operator*(y)等价于x*y。2、重载的是后置++。后置++重载作为成员函数时跟你...

C++函数重载编写两个数的平方和,
cout<<"请输入两个整数:"<<endl;int a,b;cin>>a>>b;cout<<"两个整数的平方和为:"<<Pow(a,b)<<endl;cout<<"请输入两个浮点型数:"<<endl;float fa,fb;cin>>fa>>fb;cout<<"两个浮点型数的平方和为:"<<Pow(fa,fb)<<endl;system("pause");return 0;} 希望对你有帮助。

用C++(用函数编程)输入两个或三个整数,求出最大值
int i,max=0;for(i=0;i<n;i++)if(max<a[i])max=a[i];return max;} void main(){ int i,n,max=0,a[M];printf("请输入要比较的整数个数:\\n");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=sort(a,n);\/\/函数名和局部变量不能使用同一个名称 print...

用C++编程:求一个整数的平方和一个浮点数的平方。(要求:用到函数的重...
int sqrti(int x){ x=x*x;return x;} float sqrtf(float y){ y=y*y;return y;} void main(){ int x;float y;printf("输一个整数和一个浮点数\\n");scanf("%d%f",&x,&y);int a=sqrti(x);float b=sqrtf(y);printf("%d\\t%f",a,b);} 程序用了两个函数分别计算两个数的...

c++重载运算符"()",使其计算两个数的平方和
struct CComputer { template<class T> T operator()(T f1,T f2)\/\/函数对象 { return f1*f1+f2*f2;} };void main(){ CComputer vComputer;double f=vComputer(1,2);}

求一个c++编程编写重载函数min可分别求取2个整数、3个整数、2个双精度...
return (x<y)?x:y;} int Min(int x,int y,int z){ int t=(x<y)?x:y;return (t<z)?t:z;} double Min(double x,double y){ return (x<y)?x:y;} double Min(double x,double y,double z){ double t=(x<y)?x:y;return (t<z)?t:z;} void main(){ cout<<Min(4...

C++重载函数习题
正如你题中所问, 2个重载要分别对四种变量 int, float, char, 和short 进行测试. 这就是说,每一个重载函数你都要测试这四种输入类型的值, 再根据你重载的返回值是什么来返回数据. 这就需要你一共写8个重载方程:第1个重载函数, 返回类型: int,输入类型: int;第2个重载函数, 返回类型: ...

编写重载函数,求两个或者三个整数的最大值。c++的
c++的,求过程 7 2011-06-21 用函数模板实现重载函数max1可分别求取两个整数,三个整数,... 3 2019-09-27 C++编写一个程序,用来分别求3个整数、3个双精度数的最大值... 1 2014-11-04 用vs编写c++重载函数maxl可以分别求两个整数,三个整数... 2 2016-01-12 使用重载函数返回三个双精度数的...

相似回答