欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > C++语法17 利用for循环进行求和与求积

C++语法17 利用for循环进行求和与求积

2025/10/7 15:40:59 来源:https://blog.csdn.net/qq_39434533/article/details/139813403  浏览:    关键词:C++语法17 利用for循环进行求和与求积

语法阶段已经更新到第17章了,前面的知识你都学会了吗?如果还没有学习前面的知识,请点击语法专栏进行[http://t.csdnimg.cn/7EcJm]学习哦!

目录

循环求和

整数求和

解析

参考代码

分数求和

解析

参考代码

偶数求和

解析

参考代码

循环求积

训练:累乘求积

解析

参考代码

阶乘

训练:求阶乘

解析

参考代码

训练: 求阶乘的和

解析

参考代码


循环求和

求1+2+3+... ...+1000的和:

可以把这个加法运算,看成一个循环的过程。用变量s表示运算的结果,s的初始值为0,依次让s的值增加1,2,... ... ,1000,即:

s = s+1;s = s+2; ... ... ;s = s+1000;

用变量i表示s每次增加的数值,即:

for(int i=1;i<=1000;i++)
{s = s+i;
}

即:s+1+2+3+4+ ... ... +1000

整数求和

输入整数m,n, 求m~n之间所有整数的和。

【输入格式】输入两个空格隔开的整数m,n(1<=m<=n<=1000)

【输出格式】输出一个整数,表示m~n的整数和

【输入样例】1 5

【输出样例】15 

解析

1.求m~n之间所有整数的和,即m+(m+1)+(m+2)+... ...+(n-1)+n,从m开始,每次加1,可循环(n-m+1)次,从m加到n,即:for(int i=m;i<=n;i++)

2.用s来保存运算结果,即:s = s+i; // 可简写为s+=i;

参考代码

#include<iostream>
using namespace std;
int main( )
{int m,n,s=0;cin>>m>>n;for(int i=m;i<=n;i++){s+=i;}cout<<s;return 0;
}

分数求和

输入整数n,求1+1/2+1/3...+1/n的和,保留2位小数。

【输入格式】输入一个整数n(1<=n<=1000)

【输出格式】输出一个实数,表示求和的结果,保留2位小数

【输入样例】8

【输出样例】2.72

解析

1.从1+1/2+1/3+...+1/n,每次加一个分数,则循环n次,即:for(int i=1;i<=n;i++)

2.用s来表示运算的结果,s应声明为实数类型变量,所求结果也是浮点型,即1/n的结果也应为浮点型,将1改为1.0即可:s+=1.0/i;

参考代码

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{double s=0;int n;cin>>n;for(int i=1;i<=n;i++){s+=1.0/i;}printf("%.2f",s);return 0;
}

偶数求和

输入整数m,n,求m~n之间所有偶数的和。

【输入格式】输入两个空格隔开的整数m,n(1<=m<=n<=1000)

【输出格式】输出一个整数,表示求和的结果

【输入样例】1 5

【输出样例】6

解析

1.从m加到n,先判断m是否是偶数,然后看m+1,m+2,一直到n,即:for(int i=m;i<=n;i++)

2.本题是让我们求偶数和,首先要先判断m是否是偶数(判断一个数是否是偶数,条件为:i%2==0,如果等于0则为偶数),如果m是偶数,就累加到s,再判断m+1,m+2,一直到n。

if(i%2==0)  s+=i;

参考代码

#include<iostream>
using namespace std;
int main( )
{int s=0,m,n;cin>>m>>n;for(int i=m;i<=n;i++)if(i%2==0)s+=i;cout<<s;return 0;
}

求1*2*3*... ...*10的积:

这个算式与求和十分类似,我们可以类比循环求和的代码,将”+”替换成”*”,即可得到循环求积的代码,即:

s = s*1;s = s*2; ... ... ;s = s*10;

用来求积的变量s的初始值要为1,这样才不会改变算式的运算结果。

循环对应的算式:s*1*2*3...*10。

注意:用来求积的变量最好是long long 类型,累乘运算很容易超出int 的范围。

循环求积

训练:累乘求积

输入整数m,n(m,n<=15),求m*(m+1)*...*n的结果。

【输入格式】输入两个空格隔开的整数m,n(1<=m<=n<=15)

【输出格式】输出一个整数,表示求积的结果

【输入样例】1 3

【输出样例】6

 

解析

  1. 求m~n之间所有整数的乘积,即m*(m+1)*(m+2)*... ...*(n-1)*n,从m开始,每次加1,可循环(n-m+1)次,从m乘到n,即:for(int i=m;i<=n;i++)
  2. 用s来保存运算结果,即:s = s*i; //  可简写为s*=i;

 

参考代码

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

阶乘

一个正整数的阶乘:是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!(数学表示)。

例如:

0! = 1;

1! = 1;

4! = 1*2*3*4;

训练:求阶乘

输入整数n(n<=15),求n!。

【输入格式】输入一个整数n(1<=n<=15)

【输出格式】输出一个整数,表示n!

【样例输入】4

【样例输出】24

 

解析

  1. 求n的阶乘,相当于1*2*3*...*n,从1乘到n,每次乘一个数,则循环n次,即:for(int i=1;i<=n;i++)
  2. 循环体内用s来保存结果,即:s = s*i;

 

参考代码

#include<iostream>
using namespace std;
int main()
{long long s=1;int n;cin>>n;for(int i=1;i<=n;i++){s=s*i;}cout<<s;return 0;
}

训练: 求阶乘的和

输入整数n,求1!+2!+3!...+n!的和。

【输入格式】输入一个整数n(1<=n<=15)

【输出格式】输出一个整数,表示求和的结果

【样例输入】3

【样例输出】9

 

解析

1.求i的阶乘,从i等于1开始计算i的阶乘,当i等于1时计算1的阶乘,当i=2时计算2的阶乘... ...当i等于n时求n的阶乘,即:

for(int i=1;i<=n;i++)
{jc=jc*i;
}

2.我们要求的是阶乘的和,求完阶乘,还要将当前i的阶乘累加到变量s中,即:

for(int i=1;i<=n;i++)
{jc=jc*i;s=s+jc;
}

参考代码

#include<iostream>
using namespace std;
int main( ){long long s=0,jc=1;int n;cin>>n;for(int i=1;i<=n;i++){jc=jc*i;s=s+jc;}cout<<s;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词