大学电子系C++模拟考试

news2024/11/18 21:38:48

随手附上一些代码,未必是最优解,仅供参考。

加密四位数

【问题描述】
输入一个四位数,将其加密后输出。方法是将该数每一位的数字加9,然后除以10取余作为该位上的新数字,最后将千位上的数字和十位上的数字互换,组成加密后的新四位数。 (顺序结构,不考虑特殊情况)

【样例输入】
1368

【样例输出】
5207

【样例说明】
1368的四位数字分别是1、3、6、8,对每个数字加9后对10求余的结果为0、2、5、7,交换千位和十位数字后为5、2、0、7,加密后的新四位数为5207

思路

逐个拆开数字,然后加上9再对10取余。

也可以不用像我写那么麻烦,合在一起一气呵成。

#include<iostream>
using namespace std;
int main()
{
	int n,a,b,c,d;
	cin>>n;
	a=n%10;
	n/=10;
	b=n%10;
	n/=10;
	c=n%10;
	n/=10;
	d=n;
	a=(a+9)%10;
	b=(b+9)%10;
	c=(c+9)%10;
	d=(d+9)%10;
	swap(b,d);
	cout<<d<<c<<b<<a;
}

分段函数16

【问题描述】有一分段函数如下,请编写程序,输入x值,输出y值。

在这里插入图片描述

【样例输入1】
-5.5

【样例输出1】
-6.20789

【样例输入2】
0.5

【样例输出2】
1.91619

【样例输入3】
5.5

【样例输出3】
13.1757

思路

选择结构的考查,注意运算细节即可。

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	double x,y;
	cin>>x;
	if(x<-2) y=x-1/sqrt(1+2*sin(x)*sin(x));
	else if(x<1) y=1+1/(x*x+sin(2*x));
	else y=sqrt(abs(3-x*x*x))+cos(x*x);
	cout<<y<<endl;
}

阶乘和数

【问题描述】

一个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例如正整数145,1!+4!+5!等于145,因此145就是一个阶乘和数。输入一个正整数,计算它的各位数字的阶乘之和,并判断它是否是一个阶乘和数。注意:输入的正整数,以及组成它的各位数字的阶乘之和都不会超过int类型的表示范围,并且输入的正整数的最高位不为0。

【输入形式】

从控制台输入一个正整数。

【输出形式】

第一行输出各位数字的阶乘之和;第二行输出字符串“yes”或“no”,表明该正整数是否是阶乘和数。

【输入样例1】

145

【输出样例1】

145

yes

【输入样例2】

1400

【输出样例2】

27

no

【输入样例3】

4

【输出样例3】

24

no

【样例说明】

样例1中输入的正整数为145,组成它的各位数字的阶乘之和为145,所以145为阶乘和数。样例2中输入的正整数为1400,组成它的各位数字的阶乘之和为25,所以1400不是阶乘和数。样例3中输入的正整数为4,组成它的只有一位数字,其阶乘为24,也不是阶乘和数。

思路

先拆分数字,再计算阶乘,最后求和

#include<iostream>
using namespace std;
int main()
{
	int n,jc,sum=0,t;
	cin>>n;
	t=n;
	while(t)
	{
		jc=1;
		for(int i=2;i<=t%10;i++)
			jc*=i;
		sum+=jc;
		t/=10;
	}
	cout<<sum<<endl;
	sum==n?cout<<"yes"<<endl:cout<<"no"<<endl;
}

数组元素调整顺序

【问题描述】
输入n个数存放到数组a中,把数组a中的最大值放在b[0]中,把a数组中的最小值放在b[1]中;再把a数组元素中的次大值放在b[2]中,把a数组元素中的次小值放在b[3]中;其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,b数组数据排列为: 9、1、8、2、7、3、6、4、5。其中n为a数组中数据的个数。

【输入形式】
输入分2行:第一行为n的值,第二行为n个数

【输出形式】
输出排列后的结果

【样例输入】

9

1 4 2 3 9 6 5 8 7

【样例输出】

9 1 8 2 7 3 6 4 5

思路

观察。

每隔一个放一个,奇数项单调递减,偶数项单调递增

本人采用了一种比较麻烦的方法。对于偶数项而言,通过计算,发现了原下标x和新下标y有这样的关系:

y=-2x+2n-1

然后就写了思考量相对大的代码

#include<iostream>
using namespace std;
const int N=100002;
int a[N],b[N],n;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++)
		for(int j=i;j<n;j++)
			if(a[i]<a[j])
				swap(a[i],a[j]);
	for(int i=0;i<(n+1)/2;i++)
	 b[2*i]=a[i];
	for(int i=(n+1)/2;i<n;i++)
		b[(-2)*i+(2*n-1)]=a[i];
	for(int i=0;i<n;i++) cout<<b[i]<<" ";
}

然后又有大佬提供了一个更简单的代码,思考量也小。以下是大佬的程序:

大佬的程序

十六进制转十进制

【问题描述】
编写程序,输入一个十六进制的数,如果输入的不是十六进制,则输出NO,否则输出对应的十进制值。 注:十六进制数由0-9、A-F(字母大小写不限)组成,其中A-F代表10-15;十六进制转成十进制的方法是按权展开法,即每一位上的数值乘以该位的权值,最后相加。比如1A2b,共4位数,每一位的权值(从高位到低位)分别为16的三次方、16的二次方、16的一次方、16的零次方,各位上的数字乘以该位的权值即为116的三次方+1016的二次方+216的一次方+1116的零次方,转换结果为6699

【输入形式】
一个字符串

【输出形式】
一个整型数

【样例输入1】
1A2b

【样例输出1】
6699

【样例输入2】
15G9

【样例输出2】
NO

思路

先判断数字是否合法,字母是否用A~F,再利用位权进行运算。

我想吐槽,这个测试平台添加了cstring头文件还是用不了strupr和strlwr

#include<iostream>
#include<cstring>
using namespace std;
const int N=100002;
char c[N];
int main()
{
	cin>>c;
	for(int i=0;i<strlen(c);i++)
		if((c[i]>='0'&&c[i]<='9')||(c[i]>='A'&&c[i]<='F')||(c[i]>='a'&&c[i]<='f')) continue;
		else
		{
			cout<<"NO";
			return 0;
		}
	long long sum=0,num,wq=1;
	for(int i=strlen(c)-1;i>=0;i--)
	{
		if(c[i]>='0'&&c[i]<='9')
			num=c[i]-'0';
		else switch(c[i])
		{
		case 'A':case 'a':num=10;break;
			case 'B':case 'b':num=11;break;
			case 'C':case 'c':num=12;break;
			case 'D':case 'd':num=13;break;
			case 'E':case 'e':num=14;break;
			case 'F':case 'f':num=15;break;
		}
		sum+=num*wq;
		wq*=16;
	}
	cout<<sum<<endl;
}

大佬的更简洁的程序如下:

在这里插入图片描述

最大数与第一个数交换

【问题描述】
编写函数,功能是将数组中的最大数与第一个数交换,并计算数组元素的平均值。例如输入5个元素3、4、1、5、2,将最大数5和第一个数3的位置交换后得到5、4、1、3、2,平均值为3。要求输入输出均在主函数中完成。

【输入形式】
输入分两行,第一行为n的值,第二行为n个数

【输出形式】
输出分两行,第一行为交换后数组n个元素的值,第二行为平均值。

【样例输入】

5

5 3 2 1 7

【样例输出】

7 3 2 1 5

3.6

思路

写函数,交换,求平均。

我的程序有点繁琐,就是找最大的时候把最大值也用一个变量保存了下来。

#include<iostream>
#include<cstring>
using namespace std;
const int N=100002;
double fun(int n,int f[])
{
	int maxx=-1,maxp=0,sum=0;
	for(int i=0;i<n;i++)
	{
		sum+=f[i];
		if(f[i]>maxx)
		{
			maxx=f[i];
			maxp=i;
		}
	}
	swap(f[0],f[maxp]);
	return (double)sum/n;
}
int main()
{
	int a[N],n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	double ave=fun(n,a);
	for(int i=0;i<n;i++) cout<<a[i]<<" ";
	cout<<endl<<ave;
}

其实没有问最大值,那就只要知道下标就行了,下面这也是一个大佬的程序,更简洁。

#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
	}
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}
#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
	}
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}
#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
	}
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}

#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
	}
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}

#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
	}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}

最后,祝大家都能取得令人满意的成绩!

留下点赞或者评论再走呗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus 监控mysql

目录 下载安装mysqld_exporter 在mysql中创建监控用户并赋权 启动mysqld_exporter 添加到系统服务 浏览器访问服务器9104端口 在prometheus定义job来监控mysqld 运行prometheus并在端口9090上进行访问查看节点信息 根据具体需求再在可视化平台上定义数据源来进行可视化…

Java数据结构之树与二叉树

2.3 二叉树的性质&#xff08;重点&#xff0c;选择题常考&#xff09; 2.4 二叉树的链式存储 2.5 二叉树的基本操作 2.5.1 前提说明 2.5.2 二叉树的遍历 2.5.3 二叉树基本操作的实现&#xff08;重点&#xff09; 1. 树形结构 1.1 树的概念 树是一种非线性的数据结构&…

[附源码]JAVA毕业设计体检系统(系统+LW)

[附源码]JAVA毕业设计体检系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xf…

JavaScript实现一段时间之后关闭广告

JavaScript实现一段时间之后关闭广告 案例池子&#xff1a; JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实现一段时间之后关闭广告 JavaScript实现按键快速获…

水下机器人双机械手系统动态建模与控制仿真(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 水下机器人-机械手系统&#xff08;Underwater vehicle-manipulator systems, UVMS&#xff09;可以完成除观测之外的水下采样…

[论文解析] HeadNeRF: A Realtime NeRF-based Parametric Head Model

code link: https://github.com/CrisHY1995/headnerf 相关连接&#xff1a; https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/124874717 来自中科大张举勇教授课题组提出了 HeadNeRF&#xff0c;一种基于 NeRF 的高效全息人脸头部参数化模型&#xff0c;该工作发表…

阿里面试Redis最常问的三个问题:缓存穿透、缓存击穿、缓存雪崩(带答案)

一、缓存穿透 如上图&#xff0c;正常情况下&#xff0c;如果用户在redis缓存中没有查询到自己想要的数据&#xff0c;就会去mysql数据库中查询。如果mysql数据库中也没有&#xff0c;在没有任何措施下&#xff0c;用户一定会不断的去mysql数据库中查询&#xff0c;随着时间的推…

风控串行组合模型及其信用评估场景实践

在信贷风控中&#xff0c;数据建模好像是“家常便饭”那么普通且重要&#xff0c;而我们最终享用“饭菜”的美味程度&#xff0c;在数据“食材”较完备的情况下&#xff0c;完全取决于我们建模的方法。根据实际业务场景&#xff0c;采用合理且有效的建模思路&#xff0c;可以较…

诊断和响应故障_RMAN数据修复概念

1&#xff0e;RMAN数据修复概述 1.1&#xff0e;关于需要数据修复的问题 虽然有几种问题会中止Oracle数据库的正常操作或影响数据库I/O操作&#xff0c;只有以下几种情况要求DBA介入和数据修复&#xff1a;用户错误&#xff0c;应用程序错误和介质故障。 1.1.1&#xff0e;关…

[附源码]计算机毕业设计JAVA中达小区物业管理系统

[附源码]计算机毕业设计JAVA中达小区物业管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

【LeetCode】1775. 通过最少操作次数使数组的和相等

题目描述 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间&#xff08;包含 1 和 6&#xff09;。 每次操作中&#xff0c;你可以选择 任意 数组中的任意一个整数&#xff0c;将它变成 1 到 6 之间 任意 的值&#xff08;包含 1 和 6&…

LaTeX行距以及字体大小

LaTeX行距以及字体大小1、行距2、字体大小1、全局模式2、局部模式1、行距 一&#xff1a;改变全文行距 导言部分前加入\linespread{2.0}即可&#xff0c;代表全文两倍行距。 二&#xff1a;部分段落需要改变行距 \usepackage{setspace} \begin{spacing}{2.0}&#xff08;内…

js_实现网页自动跳转

网页自动跳转实现网页定时自动跳转实现网页定时自动跳转 效果&#xff1a; 10秒后自动跳转到网易云音乐的页面 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box{wi…

什么是 NFT 洗盘交易:洗盘交易背后的原理

2022年12月 CoinGecko 与 Footprint Analytics 联合报告 Data Source&#xff1a;Footprint Analytics 市场上有一种说法是&#xff0c;整个NFT 市场的交易本质是欺诈性的&#xff0c;并且是由洗盘交易者操纵出来的假象。我们经常看到许多 媒体头条 在推动这种说法。毕竟&…

HTML学生个人网站作业设计:宠物网站设计——萌宠有家(5页) HTML+CSS 简单DIV布局宠物介绍网页模板代码 DW学生个人网站制作成品下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

动态规划:01背包问题例题(leetcode+cpp实现)

文章目录分割等和子集最后一块石头的重量前情回顾&#xff1a; 动态规划(4)&#xff1a;01背包问题详解 分割等和子集 力扣传送门&#xff1a; https://leetcode.cn/problems/partition-equal-subset-sum/ 题目描述&#xff1a; 给你一个整数数组&#xff0c;将这个数组里的…

论文速读Backbone系列一:点云Transformer结合、PointNet++改进、点云卷积核设计

如有错误&#xff0c;恳请指出。 对一些经典论文进行快速思路整理&#xff0c;以下内容主要关注的是3d点云的backbone设计&#xff0c;包括transformer的应用&#xff0c;卷积核的设计&#xff0c;PointNet网络的改进。 文章目录一、Transformer改进1. 《PCT: Point Cloud Tran…

Wireshark高级特征

1&#xff0c;端点和网络会话 想要让网络通信正常进行&#xff0c;你必须至少拥有两台设备进行数据流的交互。端点&#xff08;endpoint&#xff09;就是指网络上能够发送或接收数据的一台设备。两个端点之间的通信被称之为会话&#xff08;conversation&#xff09;。Wiresha…

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特性进行选择应用。 Django Django是市面上…

利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)

目录 1 概述 1.1研究背景 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 随着自动化技术的发展,现代航空技术水平有了前所未有的提高,促进了无人机在军事、民用领域的广泛应用。航迹规划技术作为无人机任务规划的关键技术,一直都是无人机领域的一大研究热点。无人机航迹规划是…