这段代码可以运行但周长和面积的结果不对,请问是哪里有问题?

#include<iostream>
using namespace std;
class Rectangle{
    private:
        int length;
        int width;
    public:
        void set(int,int);
        void show();
        void calcircle(int,int);
        void calarea(int,int);
};
        void Rectangle::set(int l,int w)
        {
            cin>>l;
            cin>>w;
            length=l;
            width=w;

        }
        void Rectangle::show(){
            cout<<"长为"<<length<<endl;
            cout<<"宽为"<<width<<endl;    
        }
        void Rectangle::calcircle(int length,int width){
            int Calc;
            Calc=(length+width)*2;
            cout<<"周长为:"<<Calc<<endl;
        }
        void Rectangle::calarea(int lenght,int width)
        {

            int Cala;
            Cala=length*width;
            cout<<"面积为:"<<Cala<<endl;

        }

int main(){
    int w,l;
    Rectangle Q;
    Q.set(l,w);
    Q.show();
    Q.calcircle(l,w);
    Q.calarea(l,w);


}
#include<iostream>
using namespace std;
class Rectangle{
    private:
        int length;
        int width;
    public:
        void set(int,int);
        void show();
        void calcircle(int,int);
        void calarea(int,int);
};
        void Rectangle::set()
        {
                int l, w;
            cin>>l;
            cin>>w;
            length=l;
            width=w;

        }
        void Rectangle::show(){
            cout<<"长为"<<length<<endl;
            cout<<"宽为"<<width<<endl;    
        }
        void Rectangle::calcircle(){
            int Calc;
            Calc=(length+width)*2;
            cout<<"周长为:"<<Calc<<endl;
        }
        void Rectangle::calarea()
        {

            int Cala;
            Cala=length*width;
            cout<<"面积为:"<<Cala<<endl;

        }

int main(){
    Rectangle Q;
    Q.set();
    Q.show();
    Q.calcircle();
    Q.calarea();


}

问题解决的话,请点采纳