logo资料库

吉林大学计算机学院2011年硕士研究生复试上机考试试题.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
吉林大学计算机学院研究生入学复试 2011 年上机考试试题    日期:2010/3/31;    时间:15:00‐17:30;    注 1:本套题目共 5 题,具体考试方法和评分标准参见考试细则。  注 2:若干题目中给出了一种可能的程序框架,供考生参考。考生也可完全抛开 提示代码自由编写,只要能够实现题目要求即可。  一、 字符串的反码(总分 15 分,纸面程序 10 分)  对于一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义 一个字符的反码。如果这是一个小写字符,则它和字符’a’的距离与它的反码和字 符’z’的距离相同;如果是一个大写字符,则它和字符’A’的距离与它的反码和字符’Z’ 的距离相同;如果不是上面两种情况,它的反码就是它自身。  举几个例子,’a’的反码是’z’;’c’的反码是’x’;’W’的反码是’D’;’1’的反码还是  1’;’$’的反码还是  ’$’。  一个字符串的反码定义为其所有字符的反码。我们的任务就是计算出给定字 符串的反码。  输入:输入每行都是一个字符串,字符串长度不超过 80 个字符,且不包括 空格、回车和制表符等空白字符。如果输入只有!,表示输入结束,不需要处理。  ===样例输入===  输出:对于输入的每个字符串,输出其反码,每个数据占一行。  Hello JLU-CCST-2011 ! Svool QOF-XXHG-2011   ===样例输出===  ====提示:一种可能实现的 C 语言的程序主体结构如下:====  #include int main(){ char str[100]; while(1){ scanf("%s", str); if (str[0] == '!' && str[1]==0) break; //此处进行处理,计算反码 printf("%s\n", str); } return 0; }   1 / 4 
二、数字之和(总分 15 分,纸面程序 10 分)  对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平 方的各位数字之和。  输入:每行输入数据包括一个正整数 n(0 using namespace std; int sum_digits(int n){ //实现计算各位数字之和的程序 }   int main(){ int n, s1, s2; while(1){ cin >> n; if (n == 0) break; s1 = sum_digits(n); s2 = sum_digits(n*n); cout << s1 << ' ' << s2 << endl; } return 0; }     2 / 4 
三、搬水果(总分 20 分,纸面程序 15 分)  在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成 了若干堆,小明决定把所有的水果合成一堆.  每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的 重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消 耗的体力等于每次合并所耗体力之和。  假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的 任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力 耗费值。  例如有 3 种水果,数目依次为 1,2,9。可以先将 1,2 堆合并,新堆数目为 3,耗费体力为 3。然后将新堆与原先的第三堆合并得到新的堆,耗费体力为 12。 所以小明总共耗费体力=3+12=15,可以证明 15 为最小的体力耗费值。    输入:  每组数据输入包括两行,第一行是一个整数 n(1<=n<=10000),表示水果的种类 数,如果 n 等于 0 表示输入结束,且不用处理。第二行包含 n 个整数,用空格分 隔,第 i 个整数(1<=ai<=1000)是第 i 种水果的数目。  输出:  对于每组输入,输出一个整数并换行,这个值也就是最小的体力耗费值。输 入数据保证这个值小于 2^31。    ===样例输入===  3  9 1 2  0  ===样例输出===  15  四、堆栈的使用(总分 25 分,纸面程序 20 分)  堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push 一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆 栈的使用。  输入:对于每组测试数据,第一行是一个正整数 n,0
===样例输入===  3  A  P 5  A  4  P 3  P 6  O  A  0  ===样例输出===(注意最后还有一个空行)  E  5    3    五、连通图(总分 25 分,纸面程序 20 分)  给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。  输入:每组数据的第一行是两个整数 n 和 m(0< n <=1000)。n 表示图的顶点 数目,m 表示图中边的数目。如果 n 为 0 表示输入结束。随后有 m 行数据,每 行有两个值 x 和 y(0
分享到:
收藏