题目:输入一个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;
}