zoukankan      html  css  js  c++  java
  • 2012年中科大考研上机机试试题(回忆版)

    本次机试两个半小时,共5题。

    1. 字符串处理:string.in文件里读入两个字符串,字符串除了数字还可能包括 '''E''e''',相加之后输出到文件string.out中,如果是浮点型,要求用科学计数法表示(最多包含10个有效数字)。

       Sample Input:                           Sample Output:

          34.56                                    2.7956e2

          2.45e2      


    2. 最大公约数:number.in 文件中读入n个数,求出这n个数的最小值、最大值以及它们两的最大公约数,输出到文件number.out中。number.in中第一行为n,接下来为n个大于零的整数。   

       Sample Input:                           Sample Output:

          3                                        4 8 4

          4 8 6      

     

    3. 任务调度:task.in 文件中读入任务调度序列,输出n个任务适合的一种调度方式到task.out中。每行第一个表示前序任务,括号中的任务为若干个后序任务,表示只有在前序任务完成的情况下,后序任务才能开始。若后序为NULL则表示无后继任务。

       Sample Input:                           Sample Output:

          Task0(Task1,Task2)                       Task0 Task1 Task3 Task2

          Task1(Task3)

          Task2(NULL)

          Task3(NULL)      


    4. 火车票订购:火车经过X站,火车最大载客人数为m,有n个订票请求,请求订购从a站到b站的k张票,若能满足订购要求则输出1,否则输出0。数据从ticket.in中输入,第一行有四个数,分别为nm。接下来有n行,每行三个数分别为abk。结果输出到文件ticket.out中。

       Sample Input:                           Sample Output:

          5 10                                     1

          4 10 9                                   0

          8 12 2                                   1

          8 12 1                                   1

          14 20 8                                  0

          30 300 15      


    5. 最短路径:n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离,并且输出经过的城市的名,如果有多条,输出字典序最小的那条;若从st没有路径,则输出“can't arrive”。从road.in中读入数据,第一行有四个数,分别为nmst。接下来m行,每行三个数,分别为两个城市名和距离。输出结果到road.out中。

       Sample Input:                           Sample Output:

          3 3 1 3                                  2

          1 3 3                                    1 2 3

          1 2 1

          2 3 1



    ========================================================================================================================

        测试数据不完全一样,但题目意思是差不多的。这次机试,整体感觉难度一般,其中第1题有简单的做法,但是要熟悉scanf/printf的输入输出参数,如果真的当成字符串进行处理的话将会非常麻烦;第2题属于简单的题,主要是考辗转相除法求最大公约数;第3、5题是关于图的拓扑排序以及Dijkstra算法求最短路径问题,如果平时没写过相关的程序的话,这两题很难在考试的时候写出完整的程序;第4题将题目意思看懂也是一个简单的题。

        我拿到题目,先做第一题,当然第一想法是字符串处理,将输入的两个字符串先转化成double型数,写着发现很复杂,有正负、有小数点、有e,这要用编译原理里面的正则式来做多复杂啊....直接跳过去,发现第2题简单,先用了不到5分钟给敲完测试完了。扫了一下第5题,发现这是最短路径的问题,这题有信心可以搞定,与之前写的还是有区别,这题要考虑没有路径的情况以及还要打印路径。写完之后测试了几组数据,包括没有路径的,感觉差不多应该可以了。接着看第3题,看完题目明白是拓扑排序的题,但得提取出字符串中的数字作为图的顶点,写的还算比较顺的。又回到第一题,感觉应该第一题不应该会很难的,想到C语言标准输入/输出有相应的参数可以处理浮点数,但无奈却不记得了。使劲按F1试图找到MSDN,发现没有装。没办法,还是自己写字符串处理吧...写着发现没有信心把这个程序写完整,再次搁置。还有第4题,开始题目意思理解错了,写出来测试发现错了,又仔细读了一遍,OK,很简单的一个题,用一个数组保存每个站已经载的人数,对于每个请求,看看从a~b的区间中加上k是否有超载的即可。第三次回到第1题,想到有个atof()的函数可以将字符串转化为double型,果断用了,但输出怎么办,总是输出不了题目要求的那种格式。最后没办法自己写个函数将double型的m输出为科学计数法...用了一个log10()求出指数e,然后num/pow(10,e)得到有效部分,再追加输出一个字符e,以及指数的值,看着挺像的。真是折腾人,本来最简单的一个题,弄得最复杂了。

        对这次机试还挺满意的吧...全部5题做完之后还有二十分钟检查。


  • 相关阅读:
    linux 安装jdk
    linux 安装 Redis
    jvisualvm监控远程jvm的两种连接方式
    list转map(JDK8-Lambda表达式)
    循环删除list中的某一元素的三种方式
    SpringBoot-@ControllerAdvice 拦截异常并统一处理
    Spring-@ControllerAdvice 拦截异常并统一处理
    Tomcat系列
    thinkPHP5.1模型User设计
    uniapp后台api设计(微信user表)
  • 原文地址:https://www.cnblogs.com/hazir/p/2447276.html
Copyright © 2011-2022 走看看