2018华东师范大学计算机系机试题目代码

本文详细介绍了2018年华东师范大学计算机系机试的若干题目,包括Problem A到E的题目描述、解题思路和不同语言的解答示例,涉及C语言、Python和递归算法的应用。Problem C要求对数列进行排序,Problem E探讨了螺旋矩阵中行和的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem A

给一个小学生都会算的1位数与1位数运算的代数式,请你求出这个表达式的值。
表达式仅含+-*/四种运算,题目保证0不为除数。

Sample Input 1:

1+1

Sample Output 1:

2

Sample Input 2:

3*4

Sample OutPut2:

12

C语言解答

#include <stdio.h>

int main(void)
{   
    char op,n1,n2;
    int res;
    n1=getchar();
    op=getchar();
    n2=getchar();
    switch(op)
    {
        case '+':
            res=(n1-'0')+(n2-'0');
            break;
        case '-':
            res=(n1-'0')-(n2-'0');
            break;
        case '*':
            res=(n1-'0')*(n2-'0');
            break;
        case '/':
            res=(n1-'0')/(n2-'0');
            break;
        default:
            break;
    }
    printf("%d\n",res);
    return 0;
}

Python解答

expr=input()
print(int(eval(expr)))

Problem B

现在小学生也在学习基本的编程,课程目标是让小学生能够有基本的算法思想,并不涉及复杂的数据和实现细节与原理。LOGO语言就非常适合小学生学习,它通过绘图的方式来直观的表现出如何用程序代码控制事物。例如控制台上初始给出一个点,使用语句FD 1/1 表示将控制台上的点Forward 1/1的距离,即,向当前方向移动1的距离,这样就画出一条线段。语句LT 60则表示当前朝向向左转60度,接着再使用语句FD 1/1就画出一条与之前的直线夹角为120度的一条线段,这时控制台上就有绘制出了一条折线段。
现在的任务是输出一段能绘制分形的LOGO语言的程序代码。
如果你还对分形不了解,下面我们先介绍一下分形:
分形(Fractal) 是一个几何形状可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状,即具有自相似的性质。自然界中一定程度上具有分形的性质的事物有云朵、闪电、植物根系、雪花等等。著名的科赫曲线就是一种分形,它绘制的是形态类似雪花的图案。
以下是0阶到3阶的科赫曲线:
科赫曲线
本题的任务只要求画出科赫曲线的一部分即可,具体要求为:

输入:
1行,1个数字n,表示图形的阶数 (0<n<10) ( 0 < n < 10 )
输出:
能绘制上述图形的LOGO程序代码

如果你有递归的思想,那么应该不难看出,这个问题就是一个递归的形式,我们应该先把题目描述转化成算法步骤:
绘制长为x的图形:
如果x已经不能再分成x/3,就画出长为x的直线。
先画长为x/3的图形,左转60度,画出长为x/3的图形,左转240度,画出长为x/3的图形,左转60度,画出长为x/3的图形,画完。
这样就有了程度的基本框架,再把相应的LOGO语言的指令填入,就是此题的答案了。
本题C++和python的程序代码不再赘述

C语言解答

#include <stdio.h>
#include <math.h>

void Fractal(int n,int level)
{
    int p=pow(3,n);

    if(level==1)
    {
        printf("FD 1/%d\n",p);
        printf("LD 60\n");
        printf("FD 1/%d\n",p);
        printf("LD 240\n");
        printf("FD 1/%d\n",p);
        printf("LD 60\n");
        printf("FD 1/%d\n",p);
    }
    else
    {
        Fractal(n,level-1);
        printf("LD 60\n");
        Fractal(n,level-1);
        printf("LD 240\n");
        Fractal(n,level-1);
        printf("LD 60\n");
        Fractal(n,level-1);
    }
}

void output(int n)
{
    Fractal(n,n);
}

int main(void)
{
    int n;
    scanf("%d",&n);
    output(n);
    return 0;
}

Problem C

给出一个含有N (0 < N < 200000)个数字的数列,请你对它排序,每个数的范围均处于 [

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值