c新手吧 关注:8,605贴子:48,111
  • 11回复贴,共1

请问我是哪里写错了???s=1-2!+3!-4!+…-n!的值并输出。

只看楼主收藏回复

因为先写了加减交替求s值和求阶乘,就把那两个结合起来求这题
但是循坏完全不工作= =
请问我的程序是哪个部分错了?
因为我自己有画流程图……所以感觉应该是语言错了……?
#include<stdio.h>
main()
{
int n,i,j=1,k,sum;
printf("请输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(k=1;k<=i;k++)
{j=j*k;}
if(i%2==0)
sum=sum-j;
else
sum=sum+j;
}
printf("%d",sum);
}


1楼2016-05-02 19:28回复
    sum未赋初值


    IP属地:安徽来自Android客户端2楼2016-05-03 07:28
    回复
      其实我在想:你怎么知道n!前为"-",n取奇数时呢?


      IP属地:安徽来自Android客户端3楼2016-05-03 07:34
      收起回复
        利用(-1)的n次方进行调节


        IP属地:湖北来自Android客户端7楼2016-05-04 01:50
        回复
          注意j的值,j是一个数阶乘的值,但进入下一个循环计算阶乘时,它不再是1了,是上一个数阶乘的值,第一次计算的j是1,第二次就是上次的阶乘结果,第三次又是前面两数阶乘的乘积值。原本想得到的是1!+3!+5!....。但你的是1!*3!*5!。。
          int main(int argc, char *argv[]) {{
          int n,i,j=1,k,sum1=0,sum2=0,sum;
          printf("请输入n:");
          scanf("%d",&n);
          for(i=1;i<=n;i++)
          {
          j=1;
          if(i%2==1)
          {for(k=1;k<=i;k++)
          {j=j*k;}
          sum1=sum1+j;
          }
          j=1;
          if(i%2==0)
          {for(k=1;k<=i;k++)
          {j=j*k;}
          sum2=sum2+j;
          }
          }
          printf("%d",sum1-sum2);
          }
          return 0;
          }


          8楼2016-05-04 19:25
          收起回复