最近在学习嵌入式,在网上逛的时候看到一道面试题目,题目如下
编程题:s = 1 + 2 – 3 + 4 – 5 + 6 – 7 ......n 
请编写一个函数,传入参数 n ,返回 s 的值。 
我简单的做了下,用了四种方法实现了求解.可能做得不好 还请见谅,如果更好的方法请在给予斧正。
调用方法 : ./09 10
《环境 linux (ubuntu 9.10) 编译器 gcc 版本 4.4.1》
题目不是很难 但是要考虑运行效率,在这些这些算法中第三种效率最高

/*
by 龍魂 email : evilkingsoul@gmail.com qq:278563291
*/
#include <stdlib.h>
#include <stdio.h>
//        第一种解法
int sum_1(int n)            
{
  int sum;
  int i;
  sum=1;
  for(i=2;i<=n;i++)
  {
    if(i%2==0)
    {
      sum=sum+i;
    }
    else
    {  
      sum=sum-i;
    }
  }
                         return sum;
}

//第二种解法
int sum_2(long n)
{
  int flag=1;
  long sum=1;
  long i;
                for(i=2;i<=n;i++)
  {
                        sum+=flag*i;
         flag=flag*(-1);
  }
  return sum;
}

/**/     //第三种解法
int sum_3(long n)
{
  if(n<=0)
  {
    printf("error:n must>0");
    exit(0);
  }
  if(n%2==0)
        return n/2+2;
                else
                     return -n/2+1;
  
}

// 第三种解法
int sum_4(int n)
{
  char str[n];
  int i;
  int sum=0;
                str[0]=1;
  for(i=1;i<n;i++)
  {
    if(i%2==1)
      str[i]=i+1;
    else
      str[i]=-(i+1);
  }

  for(i=0;i<n;i++)
  {
    sum+=str[i];
  }
                return sum;
}

int main(int argc,char *argv[])
{
            int i;
  i=atoi(argv[1]);
  printf("第一种解法:%d \n",sum_1(i));
                printf("第二种解法:%d \n",sum_2(i));
                printf("第三种解法:%d \n",sum_3(i));
                printf("第四种解法:%d \n",sum_4(i));
            printf("\n");
  return 0;
}