0
点赞
收藏
分享

微信扫一扫

兰州大学计算机专业复试上机真题

Gaaidou 2022-01-08 阅读 110
c++

兰州大学计算机专业复试上机真题

说明

先说一下兰大计算机研究生初试吧,我参加过两次,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(pa)(pb)(pc)
参考代码如下:

#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)

举报

相关推荐

0 条评论