C++入门——循环结构1

重生之你是C++大佬,当你打开这篇博客,竟然发现这点小题简直易如反掌,于是摩拳擦掌,写他个几千行代码。

1.求前N项之和,直至和超过某一值为止

【问题描述】已知,计算该序列的前N项和SN,直到SN 大于q为止,q由键盘输入。

【输入形式】一个实型数据

【输出形式】一个实型数据

【样例输入】50 

【样例输出】50.4167

【样例说明】随着项数的增加,SN的值也在增大,SN超过50后的第一个值是50.4167

【题目解析】直到SN 大于q停止循环,一个条件就选用while语句。

#include<iostream>
using namespace std;
int main()
{
	double S=0, q, n=1;
	cin >> q;
	while (S < q)
	{
		S += double((n + 1) / n);//以防数据类型改变
		n++;
	}
	cout << S;
	return 0;
}

2.求水仙花数

【问题描述】编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。

【输入形式】输入一个正整数N。

【输出形式】输出从100到N之间的所有水仙花数,数之前用空格隔开。

【样例输入】400

【样例输出】153 370 371

【样例说明】输入一个的正整数400,输出为100~400之间的水仙花数153、370、371

【题目解析】如何判断水仙花数详见文章C++入门——选择结构1

循环操作如下:

#include<iostream>
using namespace std;
int main()
{
	int n,a,b,c;
	cin >> n;
	for (int i = 100; i <= n; i++)
	{
		a = i / 100;
		b = i / 10 % 10;
		c = i % 10;
		if (a * a * a + b * b * b + c * c * c == i)
			cout << i<<" ";
	}
	return 0;
}

3.求阶乘之和

【问题描述】求1~N的阶乘之和,N由键盘输入,注意:

【输入形式】一个正整数   

【输出形式】一个实型数据

【样例输入】10

【样例输出】4.03791e+006 

【样例说明】10的阶乘值很大,输出时计算机自动以指数形式输出,4.03791e+006 表示4.03791×106

【题目解析】内循环:求阶乘;外循环:求阶乘和

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	double S=0,m=1;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= i; j++)//求阶乘
			m *= j;
		S += m;//阶乘和
		m = 1;
	}
	cout << S;
	return 0;
}

4.最大公约数和最小公倍数

【问题描述】输入两个正整数a和b,求出其最大公约数和最小公倍数并输出。

【输入文件】从标准输入读取一行,是两个整数a和b,以空格分隔。

【输出文件】向标准输出打印以空格分隔的两个整数,分别是a、b的最大公约数和最小公倍数

【输入样例】12 18

【输出样例】6 36

【样例说明】12和18的最大公约数是6,最小公倍数是36.

【题目解析】具体见下面代码

#include<iostream>
using namespace std;
int main()
{
	int m, n;
	cin >> m >> n;
	//公约数
	for (int i = min(m, n); i >= 1; i--)
	{
		if (m % i == 0 && n % i == 0) {
			cout << i<<" ";
			break;
		}
	}
	//公倍数
	for (int i = max(m, n); i <= m*n; i++)
	{
		if (i % m == 0 && i % n == 0) {
			cout << i << " ";
			break;
		}
	}
	return 0;
}

5.求数列前n项和

【问题描述】有一分数序列,计算该序列的前n项和,n由键盘输入。

【样例输入】20

【样例输出】32.6603

【样例说明】该数列前20项之和为32.6603

【题目解析】先找到序列的规律:前一项的分子=后一项的分母;前一项的分子+分母=后一项的分子,具体如下:

#include<iostream>
using namespace std;
int main()
{
	int N;
	cin >> N;
	double S=0,m=2.0,n=1.0;//m:分子,n:分母
	for (int i = 1; i <= N; i++)
	{
		S += m / n;
		int t = m;
		m = m + n;
		n = t;
	}
	cout << S;
	return 0;
}

循环结构第一部分就到这里,代码无情,人间有情,欢迎大家点赞评论加收藏。内容如有问题还请大家在评论区指点一二。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值