C++练习六

1. 与5无关的数

【问题描述】与5无关的数。一个正整数,如果它能被5整除,或者其某位有数字5,则称该数为与5相关的数。编程让用户输入一正整数n,输出小于等于n的、与5无关的正整数的总个数。

【输入形式】用户输入一个正整数n。

【输出形式】输出小于等于n的、与5无关的正整数的总个数。单独占一行。

【样例输入】10

【样例输出】8

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
	int n;
	int count = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		if (i % 5 == 0)
		{
			count++;
			continue;
		}
		int j = 0;
		j = log10(i);
		int f = i;
		for (int k = 1; k <= j; k++)
		{
			f = f / 10;
			if (f %10 == 5)
			{
				count++;
				break;
			}
		}
	}
	count = n - count;
	cout << count;
	return 0;
}
​​​​​​​2. 找球

【问题描述】找球。设有100个半径分别为1~100米的球,编程找出半径刚过用户体积需要的球。体积由用户输入,程序输出找到的球的半径及体积值。设半径为整型,体积值保留小数点后两位,π取3.1415926参与运算。(考虑同时用到break、continue的方法)

【输入形式】用户输入所找球的体积值。

【输出形式】程序输出找到的球的半径和体积,中间用逗号隔开。单独占一行。

【样例输入】10000

【样例输出】14,11494.04

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	const double pi = 3.1415926;
	int v1;
	double v2;
	cin >> v1;
	int i = 1;
	for (i; i <= 100; i++)
	{
		v2 = pi * i * i * i * 4 / 3;
		if (v1 <= v2)
			break;
	}
	cout << i << ',' << fixed<<setprecision(2)<<v2;
	return 0;
}
​​​​​​​3. 素数

【问题描述】

从控制台输入整数n(n>=1),计算并输出从1到n之间(包括n)个位为1的所有素数,若没有符合要求的素数,则输出-1。

【输入形式】

从控制台输入整数n。

【输出形式】

按照从小到大的顺序,在一行上输出1到n之间(包括n)个位为1的所有素数,素数之间用一个空格分隔,若没有符合要求的素数,则输出-1。

【样例输入】

120

【样例输出】

11 31 41 61 71 101

【样例说明】

输入的整数n为120,1到120之间个位为1的所有素数为11、31、41、61、71、101。 

#include<iostream>
using namespace std;

int main()
{
	int n, count = 0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		for (int j=2; j <= i; j++)
		{
			if (j == i && i % 10 == 1)
			{
				cout << i << ' ';
				count++;
			}
			if (i % j == 0)
				break;
		}
	}
	if (count == 0)
		cout << -1;
	return 0;
}

 

​​​​​​​4. 偶数大王

【问题描述】给你一堆杂乱无章的正整数,里面有若干个奇数和偶数(至少有一个偶数),你能帮我找出这堆数中最大的偶数吗?请输出这位偶数大王。 

【输入形式】

第一行仅一个数N(2<N<1000),即这堆数的个数 

第二行有N个正整数,每个数的范围不超过30000 

【输出形式】

输出所求的偶数大王
【样例输入】

123 456 7890

 【样例输出】7890

#include<iostream>
using namespace std;

int main()
{
	int n, j, max = 0;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> j;
		if (j > max && j % 2 == 0)
			max = j;
	}
	cout << max;
	return 0;
}
​​​​​​​5. 编程题《验证歌德巴赫猜想》

【问题描述】

验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如,6=3+3,8=3+5,......,18=5+13。要求将6~100之间的偶数都表示为两个素数之和,输出时一行输出五组。

【输入形式】

无输入

【输出形式】

按从小到大、每组五行

每组的格式为:四位=2位+2位。

等号和加号两侧无空格。

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int count = 0;
	for (int i = 6; i <= 100; i += 2)
	{
		for (int j = 2; j <= i/2; j++)
		{
			for (int k = 2; k <= j; k++)
			{
				if (k == j)
				{
					int l = i - k;
					for (int p = 2; p <= l; p++)
					{
						if (p == l)
						{
							count++;
							cout << setw(4) << i << '=' << setw(2) << k << '+' << setw(2) << l;
							if (count % 5 == 0)
								cout << endl;
							j = i / 2 + 1;
							k = j + 1;
						}
						if (l % p == 0)
							break;
					}
				}
				if (j % k == 0)
					break;
			}
		}
	}
	return 0;
}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值