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(){};
};
编译可以通过,为什么啊?