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