欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客网---不能使用乘除等条件,求1+2+3+...+n

程序员文章站 2024-03-15 14:53:48
...

题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
解:
1.创建n次对象,调用n次构造函数
2.不能直接用数组创建n个对象(数组下标不能是变量),所以用new动态创建n个对象
3.类内定义两个static变量(目的是对所有变量共享),一个自加一个累加,最后返回累加的结果
4.每次计算前要清空上一次计算的结果

class Sum
{
public:
 Sum()
 {
  _count++;
  _sum += _count;
 }
 static int GetSum()
 {
  return _sum;
 }
 static void RESSum()
 {
  _count = 0;
  _sum = 0;
 }
private:
 static int _count;
 static int _sum;
};
int Sum::_count = 0;//static修饰的变量要在类外初始化
int Sum::_sum = 0;
int main()
{
 Sum::RESSum();//对之前计算结果清空
 int n;
 cin >> n;
 Sum *p = new Sum[n];//数组下标不能是变量
 cout << Sum::GetSum() << endl;
 system("pause");
 return 0;
}
相关标签: 习题