刷题c++ 思考

1 有一个vector数组,要从中去掉一个数,使的这个数组中的数的连乘积最大,返回这个数的下标(数组中可能有正数,负数,0 )

int getMax(Vector &v1,int index)

{

 

}

 

写一下思路:

来一次遍历,记录数组中的正数的最小值,

记录数组中的负数的个数和负数的最大值,

记录数组中的0的个数,

如果负数的个数是偶数或者0,并且没有0 ,那么去掉数组中正数的最小值,并返回它的下标

如果负数的个数是奇数,并且没有0,那么去掉数组中负数的最大值,并返回它的下标

如果0的个数大于等于2,那么返回哪个下标都一样

如果有一个0,并且负数的个数是奇数,那么去掉任意一个非0的数连乘结果都是0

如果有一个0,并且负数的个数是偶数,那么去掉0这个数,并返回它的下标。

2找到一个目录下文件名包含xyz的文件,并删除

3将程序执行的错误信息输出的a.txt文件中

4有两个类 A和B,现在A需要调用B中的成员函数,B需要调用A中的成员函数写出这样的代码实例。

头文件包含的问题,相互包含。

class A
{
public:
    void FunA1(){}
    void FuncA2(){}
    void FunA3(){b->funb1();}
private:
    class B *b;
 
};

class B()
{
public:
    void funb1(){}
    void funb2()
    { 
        a->FunAa();
    }
private:
    class A a;
};
 
 
解决方案二:
以前做过测试,这种相互交叉使用,定义指针是可以的,定义对象不行。
例如:类A在B前定义
 
 class B;
 class A
 { public:
      B *pb;//合法
      B b;// 非法
 }
 
class B
{
public:
    A a;//合法
    A *pa; //合法
};

在一个类中写了成员函数,但是不做具体实现,编译会有什么问题吗?

class A  
{
public:
A(){};
void test();//没有实现
virtual ~A(){};

};
编译可以通过,为什么啊?

你可能感兴趣的:(面试题,力扣刷题记录)