兰州大学计算机专业复试上机真题
说明
先说一下兰大计算机研究生初试吧,我参加过两次,2021考研,2022考研,由于考研人数水涨船高,兰大初试题目比之前灵活了。说实话,除了数据结构,感觉历年真题参考性不大了,简单过一遍就行了,建议多听几遍王道视频,多背背一些概念性的的东西。然后认真看看白中英的计算机组成原理,还有这本书配套的习题,兰大计组有难题,数据结构和操作系统多看几遍王道视频就够应付了,啃历年真题有点浪费时间了。(个人观点)
下面分享一波兰大计算机复试机考题目,听说是历年真题整利所得,有需要的伙伴可以收藏,希望能帮到你。文章里面的代码是我参考他人或自己想的,仅作参考,如有不对之处,欢迎大家指出。大家别吝啬,可以把自己的代码放在评论区,我们一起讨论学习。兰大机考使用c、c++、java都可。文章正在更新中,可能会频繁编辑,码字不易,为防止丢失,欢迎关注我。本文发布于CSDN,如果被第三方网站爬走了,可来CSDN。
1.求三角形的面积
输入三条边,求三角形的面积。
思路:海伦-秦九公式
s
=
p
(
p
−
a
)
(
p
−
b
)
(
p
−
c
)
s = \sqrt{p(p-a)(p-b)(p-c)}
s=p(p−a)(p−b)(p−c)
参考代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char const *argv[]){
float a, b, c, p, s; //a,b,c为三边,p为半周长,s是面积
cout << "请输入三角形的三条边:" << endl;
cin >> a >> b >> c;
p = (a+b+c)/2;
if (a+b > c && a+c > b && b+c > a){ //三角形任意两边之和大于第三边
s = sqrt( p*(p-a)*(p-b)*(p-c) ); //海伦公式,本题关键,牢记
cout << "三角形的面积是:" << s << endl;
}else{
cout << "三边不能组成三角形。" << endl;
}
return 0;
}
2.水仙花数
水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身(例如13+53 + 33=153 ),题目要求输入水仙花位数n,然后求出满足n位数中所有的水仙花数。
参考代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char const *argv[]){
int n, num, tmp, sum; //n是水仙花数的位数
cout << "请输入水仙花位数:\n";
cin >> n;
cout << "符合条件的所有数:\n";
for (int i = pow(10, n-1); i < pow(10, n); i++){ //pow函数求x的y次方,第一个参数x,第二个参数y。循环遍历所有n位数。
sum = 0; //每次循环需要将sum清零
num = i; //下面要对i操作确定各个位的数值,这里赋值操作num防止影响i循环
for (int j = n; j > 0; j--){ //确定每一位的数值,然后n次方,之后加给sum
tmp = num / pow(10, j-1);
sum = sum + pow(tmp, n);
num = num % (int)pow(10, j-1);
}
if (sum == i)
cout << i << endl;
}
return 0;
}
3.完全数
完全数又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了本身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为完全数,第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。要求写出1000以内完全数的算法。
参考代码如下:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]){
int sum;
cout << "1000以内的完全数如下:\n";
for (int i = 1; i <= 1000; i++){
sum = 0;
for(int j = 1; j < i; j++)
if(i%j == 0)
sum = sum + j;
if(sum == i)
cout << sum << " ";
}
return 0;
}
(To Be Continue)