C++项目参考解答:小试循环

来源:互联网 发布:淘宝直播怎么开通不了 编辑:程序博客网 时间:2024/06/06 17:31

【项目-小试循环】

  写出实现下面求解任务的程序【提示:m是一个变量,在程序中输入】
  (1)求1到m的平方和
  (2)求1到m间所有奇数的和
  (3)求1到m的倒数和,即

1+12+13+14+...+1m

  (4)求值:
112+1314+...+(1)(m+1)×1m

  (5)求m!,即
1×2×3×...×m


【参考解答】

  写出实现下面求解任务的程序【提示:m是一个变量,在程序中输入】
  (1)求1到m的平方和

#include <iostream>using namespace std;int main( ){    int n,m,total;    cin>>m;    n=1;    total=0;    while(n<=m)    {        total+=(n*n);        n++;    }    cout<<"total="<<total<<endl;    return 0;}

或用for循环:

#include <iostream>using namespace std;int main( ){    int n,m,total;    cin>>m;    total=0;    for(n=1;n<=m;n++)    {        total+=(n*n);    }    cout<<"total="<<total<<endl;    return 0;}

  (2)求1到m间所有奇数的和

#include <iostream>using namespace std;int main( ){    int n,m,total;    cin>>m;    n=1;    total=0;    while(n<=m)    {        total+=n;        n+=2;    }    cout<<"total="<<total<<endl;    return 0;}

或用for循环:

#include <iostream>using namespace std;int main( ){    int n,m,total;    cin>>m;    total=0;    for(n=1;n<=m;n+=2)    {        total+=n;    }    cout<<"total="<<total<<endl;    return 0;}

  (3)求1到m的倒数和,即

1+12+13+14+...+1m

#include <iostream>using namespace std;int main( ){    int n,m;    double total;    cin>>m;    n=1;    total=0;    while(n<=m)    {        total+=(1.0/n); //注意1.0引发的类型转换,非常重要!        n++;    }    cout<<"total="<<total<<endl;    return 0;}

或用for循环:

#include <iostream>using namespace std;int main( ){    int n,m;    double total;    cin>>m;    n=1;    total=0;    for(n=1;n<=m;n++)    {        total+=(1.0/n); //注意1.0引发的类型转换,非常重要!    }    cout<<"total="<<total<<endl;    return 0;}

  (4)求值:

112+1314+...+(1)(m+1)×1m

#include <iostream>using namespace std;int main( ){    int n,m,sign;    double total;    cin>>m;    n=1;    total=0;    sign=1; //用sign代表累加项的符号,这是处理一正一负累加的技巧    while(n<=m)    {        total+=(sign*(1.0/n));         n++;        sign*=-1; //sign变号    }    cout<<"total="<<total<<endl;    return 0;}

或用for循环:

#include <iostream>using namespace std;int main( ){    int n,m,sign;    double total;    cin>>m;    n=1;    sign=1; //用sign代表累加项的符号,这是处理一正一负累加的技巧    total=0;    for(n=1; n<=m; n++)    {        total+=(sign*(1.0/n)); //注意1.0引发的类型转换,非常重要!        sign*=-1; //sign变号    }    cout<<"total="<<total<<endl;    return 0;}

  (5)求m!,即

1×2×3×...×m

#include <iostream>using namespace std;int main( ){    int n,m;    long fact; //阶乘值很大,数据类型方面考虑一些    cin>>m;    n=1;    fact=1;    while(n<=m)    {        fact*=n;        n++;    }    cout<<m<<"! = "<<fact<<endl;    return 0;}

或用for循环:

#include <iostream>using namespace std;int main( ){    int n,m;    long fact; //阶乘值很大,数据类型方面考虑一些    cin>>m;    fact=1;    for(n=1;n<=m;n++)    {        fact*=n;    }    cout<<m<<"! = "<<fact<<endl;    return 0;}
2 0