C++ 基础(十二)函数-题目练习

2023-09-13 18:48:28

一、等差数列求和

描述

编写一个函数sum(…),计算等差数列中前n项数据的和。已知等差数列的起始项为2。例如:等差数列2,5,8,11…,需要利用sum函数求出前3项的和为15。
【题目要求】
① 等差数列中数字之间的差值不固定,需要自行输入。
② 输入要求的数列项数n。
③ 输出前n项数据的和。

输入描述

两个正整数;
第一个正整数为数列中数字之间的差值(1≤差值≤50);
第二个正整数为求和数列的项数n(1≤n≤100);
两项内容中间用空格分隔。

输出描述

一个正整数,代表前n项数据的和。

用例输入 1 

4 5

用例输出 1 

50
#include <iostream>
using namespace std;
//arithmetic progression 等差数列
// 创建一个等差数列求和公式 an = a1  + (n-1)d
// 等差数列前 n 项和 Sn=n(a1+an)/2 或Sn=na1+n(n-1)d/2
int arithmeticProgressionSum(int d, int n) {
	int a1 = 2, sum;
	sum = n * a1 + n * (n - 1) * d / 2;
	return sum;
}

int main() {
	// 差值difference value,项数 number of terms
	int differenceValue = 1, numberOfTerms = 1;
	cin >> differenceValue >> numberOfTerms;
	int sum;
	sum = arithmeticProgressionSum(differenceValue, numberOfTerms);
	cout << sum << endl;
	return 0;

}

二、判断数字位数

描述

编写一个函数get_length(…),计算输入的正整数有多少位。输入的第一个数字不为 0。

输入描述

一个正整数(不超过10位)。

输出描述

一个正整数,代表数字的位数。

用例输入 1 

123456

用例输出 1 

6
/*
* 编写一个函数get_length(…),计算输入的正整数有多少位。
* 让这个数一直 % 10 知道结果 == 0 时
* 计算 % 的次数
* 第一个数字不为 0
*/
#include <iostream>
using namespace std;

int get_length(int number) {
	int length = 0;
	// 不能用 模 % ;例:5%10 = 5;5/10 = 0
	for (;number > 0;length++) {
		number /= 10;
	}
	return length;
}

int main() {
	int number, frequency;
	cin >> number;
	frequency = get_length(number);
	cout << frequency;
	return 0;
}



三、有规律的图形

描述

编写一个函数graph(…),输出一个a行b列(1≤a,b≤10000)由任意符号组成的矩形。

输入描述

一行,两个整数a, b(分别代表行与列,1≤a,b≤10000)一个字符,中间用空格分隔。

输出描述

a行b列由指定字符组成的矩形。

用例输入 1 

3 4 @

用例输出 1 

@@@@
@@@@
@@@@
#include <iostream>
using namespace std;
//1、定义输出有规律的图形的函数
void graph(int row,int column, char c) {
	for (int i = 1;i <= row;i++) {
		for (int j = 1;j <= column;j++) {
			cout << c;
		}
		cout << endl;
	}
}

int main() {
	//2、接收输入行数与列数以及符号字符
	int row, column;
	char c;
	cin >> row >> column >> c;
	//3、调用函数graph
	graph(row, column, c);
	return 0;
}

四、简易计算器

描述

编写一个函数calcu(…),模拟可以进行四则运算的计算器。输入两个数,和四则运算符号,即可返回计算的结果。

输入描述

一行,两个正整数(1≤数字≤10000),一个字符(‘+’、‘-’、‘*’、‘/’),内容之间用空格分隔。

输出描述

一个整数,代表计算结果。

用例输入 1 

10 - 8

用例输出 1 

2

用例输入 2 

10 / 3

用例输出 2 

3
#include <iostream>
using namespace std;
// 正整数四则运算函数 + - * /
// 算数运算符 arithmetic operator
void calcu(int number1, char arithmeticOperator, int number2) {
	switch (arithmeticOperator) {
	case '+':
		cout << number1 + number2;
		break;
	case '-':
		cout << number1 - number2;
		break;
	case '*':
		cout << number1 * number2;
		break;
	case '/':
		cout << number1 / number2;
		break;
	default:
		cout << "请输入正确的运算符" << endl;
		break;
	}

}

int main() {
	int number1, number2;
	char arithmeticOperator;
	cin >> number1 >> arithmeticOperator >> number2;
	calcu(number1, arithmeticOperator, number2);
	return 0;
}

五、素数对

描述

两个相差为 2 的素数成为素数对,5 和 7,17 和 19,求出不大于 n 的素数对,没有输出 “empty”。n≤1000。

输入描述

输入一个 n。

输出描述

n 以内的素数对。

用例输入 1 

11

用例输出 1 

3 5
5 7
/*
* 质数(素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
* 素数 prime number
*/
#include <bits/stdc++.h>
using namespace std;

int primeNumber(int x) {
	// sqrt()平方根函数
	int t = sqrt(x);
	// 质数(素数)是指在大于1的自然数中
	for (int i = 2;i <=t;i++) {
		// 如果 x 能被其他数整除,那就不是素数,然后返回 0;否则返回 1
		if (x % i == 0) {
			return 0;
		}
	}
	return 1;
	
}

int main() {
	// flag是用来判断有没有素数对 
	int n,flag=0;
	cin >> n;
	// 从2开始,因为1既不是素数也不是合数
	for (int i = 2;i <= n-2;i++) {
		if ((primeNumber(i) == 1) && (primeNumber(i + 2) == 1)) {
			printf("%d %d\n",i,i+2);
			flag = 1;
		}
	}
	if (flag == 0) {
		cout << "empty";
	}
	return 0;
}

更多推荐

面试官:你是怎么理解ES6中 Decorator 的?使用场景?

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录一、介绍二、用法类的装饰类属性的装饰注意三、使用场景@antobind@readonly@deprecate一、介绍Decorator,即装饰器,从名字上很容易让我们联想到装饰者模式简单来讲,装饰者模式就是一种

Java 21 正式发布!新特性专栏继续更起来了~

就在昨天晚间,Oracle公司宣布Java21正式发布。该版本是继JDK17之后最新的长期支持版本(LTS),将获得至少8年的支持!Java21号称具有数千项性能、稳定性和安全性改进。新的JDK21包括对15项改进的抢先体验,这些增强功能是在OracleCloudWorld2023会议上宣布的,包括支持虚拟线程以提高整

linux内核——进程

Processesandthreads进程是正在运行的程序,包括下列部分的抽象:(独立的)地址空间一个或者多个线程打开的文件(以描述符fd的形式呈现)套接字信号量Semaphore共享的内存区域定时器信号句柄signalhandler其他的资源和状态信息这些东西都存在于进程控制块(PCB)中。在linux中,是stru

论文精读:Feature Pyramid Networks for Object Detection

文章目录1.摘要1.1背景1.2提出新方法1.3贡献2.引言2.1提出问题2.2叙述Featurepyramid2.3叙述深度卷积网络2.4Featurepyramid的局限2.5使用deepConvNet计算多尺度特征的方式2.6提出我们的方法2.7贡献3.相关工作3.1手工工程特征和早期神经网络3.2深度卷积目标检

指针和数组笔试题讲解(3)

🐵本篇文章将对指针相关笔试题进行讲解,同时也是指针和数组笔试题讲解的最后一篇文章,那么接下来将会对8道笔试题进行逐一讲解笔试题1💻intmain(){inta[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);printf("%d%d",*(a+1),*(ptr-1));return0;}1.

数据结构——C++实现二叉搜索树,前中后序、层序迭代遍历配合仿函数

通过介绍二叉搜索树,到实现最基础的二叉树模型,四种迭代遍历方式。结点模型template<classType>classbinary_tree{/*二叉树是由多个结点组成的,所以定义一个内部的结点类用于构建树*/classBTNode{/*不允许无参构造,因为编译器会对m_val采用默认构造,如果是int类型会导致随机

地牢大师问题(bfs提高训练 + 免去边界处理的特殊方法)

地牢大师问题文章目录地牢大师问题前言题目描述题目分析输入处理移动方式【和二维的对比】边界判断问题的解决代码总结前言在之前的博客里面,我们介绍了bfs基础算法的模版和应用,这里我们再挑战一下自己,尝试一个更高水平的题目,加深一下对bfs算法的理解。如果对bfs更多知识感兴趣的话,可以点个关注,后续会继续更新有关知识点的。

2023/9/15 -- C++/QT

作业:1>将工程文件进行注释2>03login_box.pro:QT+=coregui#core核心库gui图形开发库greaterThan(QT_MAJOR_VERSION,4):QT+=widgets#4.0版本以上自动包含widgets库CONFIG+=c++11#支持C++11版本#Thefollowingde

如何在百度百科建立个人词条,百度词条建立的过程是怎样的

如何在百度百科建立个人词条,很多朋友对百科全书这些问题都非常感兴趣,特别是很多朋友比较关心如何在百度百科上创建自己,下面洛希爱做百科网分享百度百科词条建立的过程,让大家明白创建百科词条是怎么样的。一、准备工作百度百科词条平台不能自己创建是个不正确的说法,自己完全可以再百度百科平台编辑。主要先做好以下准备工作:收集资料:

书剑宠物疫苗接种管理软件操作教程

【软件简介】书剑宠物疫苗接种管理软件是一款宠物疫苗接种管理的工具,适合宠物诊所使用。具有动物主人建档、宠物疫苗接种登记管理、每日提醒、打印疫苗接种通知卡、自定义短信提醒模板等完善的功能。另外本软件的特色是同时具有手机网页版功能,手机扫一扫即能接到电脑数据库,然后在手机上批量打电话,发短信,提醒疫苗接种即将到期的宠物主人

支持国密浏览器的堡垒机叫什么?联系电话多少?

支持国密浏览器的堡垒机叫什么?联系电话多少?目前市面上支持国密浏览器的堡垒机不多,这里给大家推荐行云管家堡垒机,其支持国密算法、国密浏览器,满足数据安全要求。行云管家堡垒机优势1、技术领先:技术团队实力雄厚,自主研发,原厂商;2、服务优质:提供24小时不间断的技术支持和服务;3、经验丰富:拥有10万+中小企业客户;4、

热文推荐