zoukankan      html  css  js  c++  java
  • 多项式问题

    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;

    }

  • 相关阅读:
    日程管理APP测试用例
    日程管理APP的测试计划和测试矩阵
    Bug report——仿网易新闻APP
    NABCD模拟实验
    5w1h

    小组作业
    code review
    Mutual review
    阅读思考
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/10674029.html
Copyright © 2011-2022 走看看