题目:输入一个n求1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case以及条件判断语句
方案:题目明确要求不能使用常规的解法,所以我们应该考虑使用另外一种解法
我们利用构造函数和静态成员变量已经静态成员函数来实现
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; //Num类 class Num{ public: Num(void); static void Reset(void); static int GetSum(void); private: static int value; static int sum; }; //初始化静态成员变量 int Num::value = 1; int Num::sum = 0; //实现类的函数 Num::Num(void){ sum += value; //累加求和 ++value; //构造完一个对象就把value加1 } //重置静态成员变量的值 void Num::Reset(void){ value = 1; sum = 0; } //返回和 int Num::GetSum(void){ return sum; } int main(){ //样例 int n = 100; Num *num = new Num[n]; //new n个对象 delete[] num; //释放内存空间 num = NULL; //指向NULL cout<<Num::GetSum()<<endl; //输出和5050 return 0; }
题目:不借助循环打印出1,2,3......n
#include<iostream> #include<algorithm> using namespace std; //定义一个类 class Num{ public: Num(void); static void ReSet(void); private: static int value; }; //初始化静态成员的值 int Num::value = 1; //实现构造函数 Num::Num(void){ printf("%d ", value); ++value; } //实现ReSet函数 void Num::ReSet(void){ value = 1; } int main(){ //样例 int n = 10; Num *num = new Num[n]; //new n个对象 delete[] num; num = NULL; return 0; }