注册 登录
编程论坛 VC++/MFC

大一小白,求大神给解个c++题

cl704071770 发布于 2018-01-10 10:55, 1900 次点击
输入n个数(n<=100),对这n个数进行奇偶识别,使得所有偶数放在数组的左端,所有奇数放在数组的右端(不要求奇数、偶数有序)。要求:编写子函数,完成上述功能,n的值及n个数均在主函数中输入,并在主函数中输出处理结果。
解题思路:
1、新建两个数组分别放原数组中的奇数和偶数。
2、将奇数数组中的数复制给原数组
3、将偶数数组中的数复制到原数组奇数的后边
2 回复
#2
武汉Boy2018-02-09 20:12
#include"iostream"

using namespace std;

class Marray
{
public:
    Marray(int n)
    {
        if (n < 0)
        {
            cout << "输入数组下标不合法" << endl;
            return;
        }

        Len = n;
        pArray = new int[n]{0};
        if (pArray == NULL)
        {
            return;
        }

        for (int i = 0; i < n; i++)
        {
            pArray[i] = i;//完成0~n的赋值
        }
    }
public:
    void Test()
    {
        int *tem = new int[Len]{0};
        int j = 0;
        if (tem == NULL)
        {
            return;
        }

        for (int i = 0; i < Len; i++)
        {
            if (pArray[i] % 2 != 0)//奇数
            {
                tem[j] = pArray[i];
                j++;
            }
        }
        for (int i = 0; i < Len; i++)//偶数
        {
            if (pArray[i] % 2 == 0)
            {
                tem[j] = pArray[i];
                ++j;
            }
        }
        for (int i = 0; i < Len; i++)
        {
            pArray[i] = tem[i];
        }
        print();
        delete[] tem;
    }
protected:
    void print()
    {
        for (int i = 0; i < Len; i++)
        {
            cout << pArray[i] << " ";
        }
        cout << endl;
    }
public:
    ~Marray()
    {
        delete[] pArray;
    }
private:
    int Len;//数组容量
    int *pArray;
};

int main()
{
    Marray array(100);
    array.Test();
    return 0;
}

很久没做这种题目了,暴力一些
#3
武汉Boy2018-02-09 20:14
当然重载
    int &operator[](int index)
    {
        
    }
这个也可以,看起来更好看
1