2012年中科大考研上机机试试题(回忆版)
分类: 考研日记2012-04-01 20:16 1749人阅读 评论(8) 收藏 举报
任务调度任务测试null算法语言
本次机试两个半小时,共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中输入,第一行有四个数,分别为n,m。接下来有n行,每行三个数分别为a,b,k。结果输出到文件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的最短距离,并且输出经过的城市的名,如果有多条,输出字典序最小的那条;若从s到t没有路径,则输出“can't arrive”。从road.in中读入数据,第一行有四个数,分
别为n,m,s,t。接下来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题做完之后还有二十分钟检查。 2006年中科大计算机考研复试机试题 分类: 考研日记2012-03-28 21:19 451人阅读 评论(0) 收藏 举报 graphsearchoutputinput语言c
目录(?)[+]
这是2006年USTC的机试试题,试题来源于网络,解答为我的原创。转载请注明出处。谢谢~
01.读int矩阵文件,将之转置后输出
[cpp] view plaincopy
1. // 简单,无需解释
[cpp] view plaincopy 1. #include
3. int main() 4. {
5. int m, n; //A[m][n] 6. int A[100][100]; 7. int i, j; 8.
9. while (scanf (\, &m, &n) != EOF) 10. {
11. for (i = 0; i < m; i++) //读入矩阵 12. for (j = 0; j < n; j++) 13. scanf (\, &A[i][j]); 14.
15. for (i = 0; i < n; i++) //输出逆转的矩阵 16. {
17. for (j = 0; j < m; j++) 18. printf (\, A[j][i]); 19. printf (\); 20. } 21. }
22. return 0; 23. }
02.给出时间格式 [年,月], 判断此月有多少天.
[cpp] view plaincopy
1. // 核心是判断闰年的方法
[cpp] view plaincopy
1. #include
3. bool isYun (int year) 4. {
5. if (year%4==0 && year0!=0 || year@0==0) //不是世纪年且能被4整除或
者是世纪年能被400整除 6. return 1; 7. return 0; 8. } 9. 10.
11. int main() 12. {
13. int y, m;
14. int mon[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 15.
16. while (scanf (\, &y, &m) != EOF) 17. {
18. if (isYun(y)) //是闰年 19. mon[1] = 29; 20. else
21. mon[1] = 28; 22.
23. printf (\, mon[m-1]); 24. getchar(); 25. }
26. return 0; 27. }
03.给出一些标识符,判断合法标识符有多少个
[cpp] view plaincopy
1. // C语言的合法标识符:以字母或下划线开头,由字母、数字或者下划线构成的字符串
[cpp] view plaincopy 1. #include
5. bool isValid (char s[]) 6. {
7. int len = strlen(s);
8. int i;
9. if (isalpha(s[0]) || s[0] == '_') //字母或下划线开头 10. {
11. for (i = 1; i < len; ++i) 12. {
13. if (isdigit(s[i]) || isalpha(s[i]) || s[i] == '_') 14. continue; 15. else
16. return 0; 17. }
18. return 1; 19. }
20. return 0; 21. } 22.
23. int main() 24. {
25. char id[100]; 26. int tot = 0; 27. while (gets(id)) 28. {
29. if (isValid(id)) 30. {
31. printf(\, id); 32. tot++; 33. } 34. else
35. continue; 36. }
37. printf (\, tot); 38. return 0; 39. }
04.给出无向图连接矩阵,求各个连同分量.
如:Input: ABCDEFGH 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库中科大考研复试计算机上机能力在线全文阅读。
相关推荐: