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

news2025/7/10 14:41:38

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

加密四位数

【问题描述】
输入一个四位数,将其加密后输出。方法是将该数每一位的数字加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;
}

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

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

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

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

相关文章

7个成功的DTC品牌出海营销策略,提高海外客户的忠诚度!

关键词&#xff1a;DTC品牌出海、DTC营销、客户忠诚度 近年来&#xff0c;普通消费者关心的事情发生了巨大变化。 60% 的消费者会特意从品牌而不是第三方零售商处购买。 从大型零售商处购买再成为主流。人们希望与他们关心并感到关心的品牌建立关系。他们希望支持独立企业并找到…

Spring中IOC容器

IOC入门案例思路分析 1.管理什么&#xff08;Service和Dao&#xff09; 2.如何将管理的对象存放到IOC容器&#xff08;配置applicationContext.xml&#xff09;第二步 3.将管理的对象存放到IOC容器&#xff0c;如何获取IOC容器 第三步 4.获取到IOC容器后&#xff0c;如何从…

纷繁复杂见真章,华为云产品需求管理利器CodeArts Req解读

摘要&#xff1a;到底什么是需求&#xff1f;又该如何做好需求管理&#xff1f;本文分享自华为云社区《纷繁复杂见真章&#xff0c;华为云产品需求管理利器 CodeArts Req 解读》&#xff0c;作者&#xff1a;华为云头条 。 2022 年 8 月&#xff0c;某国国税局获得数十亿美元新…

【Keras计算机视觉OCR文字识别】文字检测算法中CTPN、CRAFT的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~ 一、OCR文字识别的概念 OCR&#xff08;Optical Character Recognition&#xff09;图像文字识别是人工智能的重要分支&#xff0c;赋予计算机人眼的功能&#xff0c;可以看图识字。如图6-1所示&#xff0c;图像文字识别系统流程一般分为图像采…

干掉满屏的 try-catch,这样写太香了!

背景 软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xf…

Windows系统如何部署Rabbit和启动Rabbit服务

如何部署Rabbit和启动Rabbit服务第一步&#xff1a;安装otp下载OPT应用&#xff1a;安装OPT第二部&#xff1a;安装Rabbit下载Rabbit安装Rabbit执行命令&#xff0c;添加可视化插件第三步&#xff1a;启动Rabbit服务第四步&#xff1a;在网页验证rabbit服务器启动第一步&#x…

题目给出一个字符串s1,我们可以用递归的方法将字符串分成两个非空的子串来将s1表示成一个二叉树

题目给出一个字符串s1&#xff0c;我们可以用递归的方法将字符串分成两个非空的子串来将s1表示成一个二叉树 下面是s1“coder”的一种二叉树的表现形式&#xff1a; 将字符串乱序的方法是&#xff1a;选择任意的非叶子节点&#xff0c;交换它的两个孩子节点。 例如&#xff1…

图扑虚拟现实解决方案,实现 VR 数智机房

如今&#xff0c;虚拟现实技术作为连接虚拟世界和现实世界的桥梁&#xff0c;正加速各领域应用形成新场景、新模式、新业态。 效果展示 图扑软件基于自研可视化引擎 HT for Web 搭建的 VR 数据中心机房&#xff0c;是将数据中心的运营搬到 VR 虚拟场景。以数据中心实际场景为…

new String 到底创建几个对象的问题困扰

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

Sharding-Proxy查询分库分表数据,很方便!!

##背景 目前公司不大&#xff0c;没有方便的数据库平台支持分库分表数据的查询&#xff0c;每次只能拿到分表的数据字段&#xff0c;手动hash获得标的索引&#xff0c;再去物理表查询&#xff0c;费时费力 ##改造 目前市面上有很多mysql分库分表的代理&#xff0c;自己选择了S…

24.前端笔记-CSS-vertical-align属性

1、vertical-align属性使用场景 经常用于设置图片或表单&#xff08;行内块元素&#xff09;和文字垂直对齐。 只对行内元素或行内块元素有效 vertical-align:baseline|top|middle|bottom值描述baseline默认&#xff0c;元素放在父元素的基线上top把元素顶端与行种最高元素顶…

这款 Java 性能调优的可视化工具,你真的会用吗?

VisualVM 是Netbeans的profile子项目&#xff0c;已在JDK6.0 update 7 中自带&#xff0c;能够监控线程&#xff0c;内存情况&#xff0c;查看方法的CPU时间和内存中的对 象&#xff0c;已被GC的对象&#xff0c;反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来…

以太网 VLAN(VLAN划分方式)

2.8.3 以太网 VLAN&#xff08;VLAN划分方式&#xff09; VLAN的划分方式有2.8.3 以太网 VLAN&#xff08;VLAN划分方式&#xff09;一、基于端口划分二、基于MAC地址划分三、基于IP子网划分四、基于协议划分五、基于策略划分一、基于端口划分 简述&#xff1a;端口上进行手动…

python安装 yaml、pymysql、python-docx

python安装 yaml E:\python3.10.7>pip install pyyaml python安装 pymysql E:\python3.10.7>pip install pymysql python安装 python-docx E:\python3.10.7>pip install python-docx python安装 sqlalchemy E:\python3.10.7>pip install sqlalchemy

客快物流大数据项目(九十四):ClickHouse的SummingMergeTree入了解

文章目录 ClickHouse的SummingMergeTree深入了解 一、创建SummingMergeTree引擎表的的语法 二、创建Su

Dubbo SPI机制核心原理,你掌握了吗?|原创

这篇文章内容很干&#xff0c;做好心理准备&#xff01;本文详细讲解了 Dubbo SPI 诞生原因以及它的用法&#xff0c;并且详细解读了核心类 ExtensionLoader 的关键属性&#xff0c;再根据demo 对 SPI 的加载原理进行详细解读。文章较长&#xff0c;建议收藏&#xff01;文末有…

【BP回归预测】基于matlab随机蛙跳算法SFLA优化神经网络数据回归预测【含Matlab源码 2272期】

⛄一、蛙跳算法 1 改进的免疫蛙跳算法 免疫蛙跳算法具有混合蛙跳算法的全局优化与局部细致搜索优点, 可以优化连续问题和离散问题, 具有较强的鲁棒性;同时, 群体具有的免疫机制对群体进行控制和调节, 把目标函数和制约条件作为青蛙群体的抗原, 保证生成的青蛙群体直接与问题相…

亚马逊爆锤之下,中国跨境电商出路何在?

跨境电商服务行业已经发展了十几年了&#xff0c;加之新冠疫情的影响&#xff0c;众多卖家企业都将视线转向了跨境电商市场&#xff0c;行业里一直不断涌现着众多的服务平台&#xff0c;今年&#xff0c;许多像Starday这样的新生跨境电商服务平台在行业里势头猛进&#xff0c;而…

ImmunoChemistry丨ICT艾美捷一氧化氮合酶说明书

ImmunoChemistry艾美捷一氧化氮合酶测定为评估亚硝化应激抑制剂和活化剂的效力提供了一个很好的筛选选择&#xff0c;并将有助于确定氧化和亚硝化应激如何调节不同的细胞内途径。该试剂盒使用二氨基荧光素-2二乙酸酯&#xff08;DAF-2DA&#xff09;染料评估细胞内游离一氧化氮…

原生API编写简单富文本编辑器003

原生API编写简单富文本编辑器003 系列文章快速阅读&#xff1a; 富文本编辑器开发系列-1-基础概念 富文本编辑器开发系列2-document.execCommand 的API 富文本编辑器开发系列3-selection 富文本编辑器开发系列4——Range对象 富文本编辑器开发系列5——浏览器Selection API探究…