woaicyu 发表于 2020-12-26 14:39:54

c++课后习题函数重载

#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;
}

C++废物轩 发表于 2022-12-8 20:40:31

昨非 发表于 2020-12-26 14:53
重载是没问题,只不过形式参数作为返回值不对

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

你这样的话main 函数里面只执行了输入一个参数的情况,其他两种情况好像并没能实现

C++废物轩 发表于 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, i = 0;
       

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

        case 2:
                cout << cala(a, a) << endl;
                break;

        case 3:
                cout << cala(a, a, a) << 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);
}
可以这么写
页: [1]
查看完整版本: c++课后习题函数重载