设计c十十编程函数1-2+3…n

如题所述

这是简单的循环,对于正负号的问题可以记录一个变量来维护该次循环中是正号还是负号,每次循环结束都将这个变量记录的符号反转。以下是样例程序:

int foo(int n)
{
bool sign = true; //true表示正号,false表示负号
int sum = 0;
for (int i = 1; i <= n; ++i) {
if (sign) sum += i;
else sum -= i;
sign = !sign;
}
return sum;
}

当然,n非常大时计算可能需要很久。这时可以考虑利用数学方法简化表达式。当n是奇数时,原式=1+(3-2)+...+(n-(n-1))=1+(n-1)/2=(n+1)/2,当n是偶数时,原式=(1-2)+...+(n-1-n)=-n/2。因此函数可以简单地写成:

int foo(int n)
{
return n % 2 == 0 ? - n / 2 : (n + 1) / 2;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-05
两个方法:

1. 老老实实的方法,费时费事
INT cal( int n )
{
INT i ;
INT total = 0 ;
for( i = 1 ; i <= n ; i ++ )
{
if( i % 2 == 0 )
total -= i ;
else
total += i ;
}
return total ;
}

2. 我会采用的方法
INT cal( int n )
{
if( n % 2 == 0 )
return ( 0 - n / 2 ) ;
else
return ( ( n + 1 ) / 2 ) ;
}
第2个回答  2015-05-05
void func(int n) {
if (n < 0) {
return;
}
int c = 0;
for (int i = 0; i < n; i++) {
c += (i + 1);
}
cout<<c;
}

本回答被网友采纳