刷题c++思考

mac2024-03-12  39

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

最新回复(0)