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

news/2024/11/27 21:02:44/

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

加密四位数

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

相关文章

Hbase和Mysql存储数据量对比

目录 前言 生成数据 转换成hbase能够识别的HFile文件 导入HFile到hbase中 导入数据到Mysql 总结 前言 由于想知道hbase和mysql存储同样的一份数据需要的存储是否一样&#xff0c;故做的一下实验。 生成数据 脚本如下&#xff1a; #!/bin/basharray_brand([1]huawei […

C语言第二十课:实用调试技巧

目录 前言&#xff1a; 一、Bug&#xff1a; 二、调试&#xff1a; 1.调试是什么&#xff1a; 2.调试的基本步骤&#xff1a; 3. Debug 与 Release &#xff1a; 三、在Windows环境下进行调试&#xff1a; 1.调试环境的准备&#xff1a; 2.调试的快捷键&#xff1a; 3.调试…

javascript基础小结(一)

今天突发奇想&#xff0c;想要垂直精学一段时间的javascript&#xff0c;用我的第一次「连载」来记录总结一些知识点吧。 知识点 原始类型的类型转换 类型转换 alert 会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字常用的类型转换&#xff1a;转换为 …

Privacy

For information collected and further processed under this Privacy Policy, the data controller is Toy Games. Toy Games Ltd (“Toy Games”, “owner”, “us”, “our” or “we”) is dedicated to protecting the privacy rights of our games and other services …

C语言——内存中数据存储的详解(整型与浮点型)

文章目录1.数据类型的详细介绍1.1数据类型介绍1.2类型的基本归类整型类型浮点类型构造类型指针类型空类型2.整型在内存中的存储2.1原码、反码、补码2.2大小端存储大小端存储存在的意义编写一个程序判断当前机器的存储方式是大端存储还是小端存储2.3经典习题练习一练习二练习三c…

ucore的makefile学习-以实际例子来展示

使用lab1_result目录 执行的命令为 make mytest代码均添加在 listf include tools/function.mk后面一行。 mytest:echo $(call listf,./libs,c)结果 ./libs/string.c ./libs/printfmt.c toobj mytest:echo $(call toobj,a.c,hello)输出 obj/hello/a.o todep 跟toobj相似…

Python环境搭建

将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) W…

Android实现车辆检测(含Android源码 可实时运行)

Android实现车辆检测(含Android源码 可实时运行) 目录 Android实现车辆检测(含Android源码 可实时运行) 1. 前言 2. 车辆检测数据集说明 3. 基于YOLOv5的车辆检测模型训练 4.车辆检测模型Android部署 &#xff08;1&#xff09; 将Pytorch模型转换ONNX模型 &#xff08…