鱼C论坛

 找回密码
 立即注册
查看: 3050|回复: 3

[已解决]c++课后习题函数重载

[复制链接]
发表于 2020-12-26 14:39:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>

using namespace std;
int calc(int x,int y);
int calc(int x,int y,int z);
int calc(int x,int y,int z,int n);
int main()
{
    int x,y,z,n;
    cout << "请输入一个整数" <<endl;
    cin >> x;
    calc(x,y);
    cout << y <<endl;
    return 0;
}
int calc(int x,int y)
{
    y=x*x;
    return y;
}
int calc(int x,int y,int z)
{
    z=x*y;
    return z;
}
int calc(int x,int y,int z,int n)
{
    n=x*y*z;
    return n;
}
\\为什么这个运行了之后是输入6输出的是0,试了好几个数都是输出0;
最佳答案
2020-12-26 14:53:57
重载是没问题,只不过形式参数作为返回值不对

可以改成局部变量作返回值,然后直接传入实际参数,返回局部变量
#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 x, y, z, n;
        cout << "请输入一个整数" << endl;
        cin >> x;
        y=calc(x);
        cout << y << endl;
        return 0;
}
int calc(int x)
{
        int y;
        y = x * x;
        return y;
}
int calc(int x, int y)
{
        int z;
        z = x * y;
        return z;
}
int calc(int x, int y, int z)
{
        int n;
        n = x * y * z;
        return n;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-26 14:53:57 | 显示全部楼层    本楼为最佳答案   
重载是没问题,只不过形式参数作为返回值不对

可以改成局部变量作返回值,然后直接传入实际参数,返回局部变量
#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 x, y, z, n;
        cout << "请输入一个整数" << endl;
        cin >> x;
        y=calc(x);
        cout << y << endl;
        return 0;
}
int calc(int x)
{
        int y;
        y = x * x;
        return y;
}
int calc(int x, int y)
{
        int z;
        z = x * y;
        return z;
}
int calc(int x, int y, int z)
{
        int n;
        n = x * y * z;
        return n;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2022-12-8 20:40:31 | 显示全部楼层
昨非 发表于 2020-12-26 14:53
重载是没问题,只不过形式参数作为返回值不对

可以改成局部变量作返回值,然后直接传入实际参数,返回局 ...

你这样的话main 函数里面只执行了输入一个参数的情况,其他两种情况好像并没能实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-8 20:46:01 | 显示全部楼层
#include<iostream>
using namespace std;

int cala(int x);
int cala(int x, int y);
int cala(int x, int y, int z);
int main()
{


        int a[3], i = 0;
         

        cout << "请输入x  或者x y  或者x y z" << endl;
        while (1)
        {
                cin >> a[i];
                i++;
                if (cin.get() == '\n')
                {
                        break;
                }
        }
        switch (i)
        {
        case 1:
                cout << cala(a[0]) << endl;
                break;

        case 2:
                cout << cala(a[0], a[1]) << endl;
                break;

        case 3:
                cout << cala(a[0], a[1], a[2]) << endl;
                break;

        default:
                break;
        }
}
int cala(int x)
{
        return (x * x);
}
int cala(int x, int y)
{
        return (x * y);
}

int cala(int x, int y, int z)
{
        return (x + y + z);
}
可以这么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表