多项式问题

2019-04-08     22:23:04

多项式1-1/2+1/3-1/4+....+1/99-1/100

int main(){

int  deno,term;                                //deno为分母,term每一项的临时值

int sign=1;                                        //用分子的正负表示整个项的正负

deno=2;

int sum=1,term;            

                                                                                                               若为任意数n的分数和,scanf("%d%,n);                                

while(deno<=100)            //判定条件                                                      while(deno<=n){               

                                                                                                

{                                                                                                                     

sign=-sign;

term=sign/deno;                                        算法灵魂

sum=sum+term;

deno++;

 }

printf("%d",sum);

return 0;

}

求阶乘之和 1!+2!+3!+....+n!     顺便清楚了for循环嵌套,很久之前写过九九乘法表的代码,也是两个for循环嵌套,for(i=1;i<=9;i++)    for(j=1;j<=i;j++)

double fac(int n){

double s,p;

int i,j;                                                                                                                                                                                                                       

s=0;                                                                                                                                                                                                                              

for(i=1;i<=n;i++){                         //关于for循环的嵌套,先判断外层条件循环成立,只要外层循环条件成立,都要完整的执行一遍内层循环。        

 p=1;                                            //这两个for循环嵌套,i<=n成立,再执行内层for循环,重要判定结束条j<=i,所以里层循环只执行一次                     

  for(j=1;j<=i;j++)                         //当n=3时,i=1;p=1; j=1;p=1*1=1;s=0+1=1; 因为j先加之后为2>1,所以跳出内层循环,继续进行外层循环。            

     p=p*j;                                                        i=2;j=2;p=1*2=2;s=1+2=3;继续跳出内层循环;                                                                                      

  s=s+p;                                                           i=3;j=3;p=2*3=6;s=3+6=9;跳出内层循环,再i>3,跳出外层循环,程序结束。                                    

  }

 return s;

}

main(){

int n;

double s;

printf("请输入一个数 :");

scanf("%d",&n);

s=fac(int n);                                                   //主函数调用fac函数,返回值为s求和。

printf("n=%d,s=%0.1f",n,s);

}

p=p*j;  实现累乘式,p的初值为1;

s=s+p;实现阶乘的累加和, s的初值为0;

 因为 i!=(i-1)!*i;每个累加项的值乘以该数值

 算法优化,只用一个for循环

s=0;p=1;

for(i=1;i<=n;i++){

p=p*i;

s=s+p;

}

原文地址:https://www.cnblogs.com/laurarararararara/p/10674029.html