liwenhao96 发表于 2013-11-12 15:04:39

关于C语言的一道题

求大神!

friendan 发表于 2013-11-12 15:04:40

本帖最后由 friendan 于 2013-11-12 22:14 编辑

哎,我最近比较喜欢做题,效果截图如下(欢迎验证):


代码如下:
#include <stdio.h>

//计算下面表达式前n项中偶数项的和
//1x2x3+2x3x4+3x4x5+...+nx(x+1)x(x+2)+...
int CalSum(int n)
{
      unsigned sum=0,last=0;
      if(n<2)
      {
                return 0;//n小于2时结果为0
      }
      if(n<=3)
      {
                return (2*3*4);//n小于4时结果为24
      }

      //n大于3的话
      //n是偶数时,第一项是2x3x4,最后一项是nx(n+1)x(n+2)
      //n是奇数时,第一项是2x3x4,最后一项是(n-1)x(n)x(n+1)
      if(0==n%2)
      {
                last=n;
      }
      else
      {
                last=n-1;
      }
      
      //计算前n项中偶数项的和
      for(int i=2;i<=last;)
      {
                sum+=i*(i+1)*(i+2);
                i+=2;//下一偶数项
      }
      return sum;
}

void main ()
{
      for(int i=1;i<=10;i++)
      {
                //%-5d表示输出5列,左对齐,不足5列则补空格
                printf("前%-2d项中偶数项的和为:%-5d\n",i,CalSum(i));
      }
}



liwenhao96 发表于 2013-11-13 10:45:20

虽然有点复杂。。。

liwenhao96 发表于 2013-11-23 18:54:11

#include"stdio.h"
void main()
{
        int haha(int n);
        int sum=0,n;
    printf("请输入表达式(1*2*3+2*3*4+……+n*(n+1)*(n+2)的项数n:");
    scanf("%d",&n);
    printf("表达式(1*2*3+2*3*4+……+n*(n+1)*(n+2)的前n项中偶数项的和=%d\n",haha(n));
}
int haha(int n)
{
        int sum=0,i;
        for(i=2;i<=n;i+=2)
                sum+=i*(i+1)*(i+2);
        return sum;
}
页: [1]
查看完整版本: 关于C语言的一道题