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;
}
单个输出怎么办?我这个是一次输出的!
最新回答
给你一口甜甜

2024-11-06 02:48:36

给你个思路好了,直接给代码不利于练习进步。
定义一个整型数组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() {}

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

2024-11-06 02:59:56

什么叫单个输出,请解释
追问
就是如果我输入1个数,程序只输出这个数的平方,然后程序退出;
如果输入2个数,程序只输出这两个数的积,然后程序退出;
如果输入3个数,程序只输出这三个数的和,然后退出。
幽兰黛尔

2024-11-06 00:48:12

单个输出怎么办?我这个是一次输出的!

什么意思?没看懂。
追问
就是如果我输入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窗口里执行。