2011---2013年杭电计算机历年研究生复试---笔试编程

来源:互联网 发布:js 拖动滑块完成验证 编辑:程序博客网 时间:2024/04/28 22:12
1、输入三个正整数A、B、C(0<A、B、C<1000),判断这三个数能不能构成一个三角形。
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <iostream>#include <algorithm>using namespace std;int main(void){int a[3], i;for(i = 0; i < 3; ++i)scanf("%d", &a[i]);sort(a, a + 3);    //排序后,直接用两个最小数的和与第三个数进行比较就可以了if(a[0] + a[1] > a[2])printf("It is a triangle\n");elseprintf("It is not a triangle\n");return 0;}

2、有个人从2003年1月1日开始,三天打鱼两天晒网,请输入月份、日期,问在当年的某一天他是在打鱼还是在晒网。
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>int main(void){int i, m, d, sum;int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};scanf("%d %d", &m, &d);for(i = 1, sum = 0; i < m; ++i)sum += month[i];    sum = sum + d - 1;       //计算输入的某一天距离1月1日的间隔天数if(sum % 5 < 3)printf("打渔\n");elseprintf("晒网\n");return 0;}

3、丑数是这样定义的:如果一个正整数的素因子只包含 2、3、5、7四种,则它被称为丑数。以下数列 1, 2, 3,4, 5,6,7,8,9, 10,12,14,15,16,18, 20, 21,24,25, 27.......... 就显示了前20个丑数。
给出一个正整数N,判断这个数是否为丑数。

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>bool IsUgly(int number){while(number % 7 == 0)   //输入的整数分别与2、3、5、7进行循环除法运算(在取模运算为0的情况下)number /= 7;while(number % 5 == 0)number /= 5;while(number % 3 == 0)number /= 3;while(number % 2 == 0)number /= 2;return (number == 1) ? true : false;}int main(void){int n;scanf("%d", &n);if(IsUgly(n))printf("Yes\n");elseprintf("No\n");return 0;}



2012年杭电计算机研究生复试---笔试编程

1、输入一个十进制的数,把它转成十六进制。
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>int main(void){int num, i, j;char str[100];i = 0;scanf("%d" , &num);while(num != 0){j = num % 16;if(j < 10)str[i++] = j + '0';elsestr[i++] = j - 10 + 'A';num /= 16;}if(i == 0)printf("0\n");else{for(j = i - 1; j >= 0; --j)printf("%c", str[j]);printf("\n");}return 0;}

2、贪吃蛇,给你一个50X50的表格,贪吃蛇初始化在某个位置,自身长度20格,头往四个方向移动,每次移动一格,判断是成功、出界还是撞到自己,具体的题目是用英文描述的,大概意思就是这样。输入第一行为移动的步数,第二行为这些步数的方向,输出判断。
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>#define WORM_LENGTH 20int main(void){short h[WORM_LENGTH], v[WORM_LENGTH];    // 用于记录虫子每一节的位置,(v[0], h[0])是头部short newHead_v, newHead_h;              // 移动一步后头部的新位置int i, j, steps;int ranIntoItself, ranOffBoard;char moves[1000];scanf("%d", &steps);                      // 读入每个测试用例要移动的步数while (steps != 0) {scanf("%s", moves);                  // 读入移动方向字符串// 虫子的初始位置for (i = 0; i < WORM_LENGTH; ++i){h[i] = 30 - i;v[i] = 25;}ranIntoItself = ranOffBoard = 0;for (i = 0; i < steps; ++i){// 计算移动一步后头部的位置newHead_h = h[0];newHead_v = v[0];switch (moves[i]){case 'E':newHead_h++;break;case 'S':newHead_v++;break;case 'W':newHead_h--;break;case 'N':newHead_v--;break;}// 判断是否碰到自己的身体for (j = 1; j < WORM_LENGTH - 1; ++j)  // 由于移动后尾部位置已前移一格,所以是WORM_LENGTH - 1{if (newHead_h == h[j] && newHead_v == v[j]) {ranIntoItself = 1;break;}}// 判断是否碰到边缘if (newHead_h == 0 || newHead_h == 49 || newHead_v == 0 || newHead_v == 49)ranOffBoard = 1;if (ranIntoItself || ranOffBoard)break;// 移动虫子除头部后的几节for (j = WORM_LENGTH - 1; j > 0; --j){h[j] = h[j - 1];v[j] = v[j - 1];}h[0] = newHead_h;v[0] = newHead_v;}// 输出移动后的状态if (ranIntoItself)printf("The worm ran into itself on move %d\n", i + 1);else if (ranOffBoard)printf("The worm ran off the board on move %d\n", i + 1);elseprintf("The worm successfully made all %d moves\n", steps);// 继续读下一字符串scanf("%d", &steps);}return 0;}

2012杭电复试专业英语笔试翻译题
请将下面的短文翻译成中文。
     Java is a programming language originally developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. Java applications are typically compiled to bytecode (class file) that can run on any Java Virtual Machine (JVM) regardless of computer architecture. Java is a general-purpose,concurrent, class-based, object-oriented language that is specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere"(WORA), meaning that code that runs on one platform does not need to be recompiled to run on another. Java is currently one of the most popular programming languages in use, particularly for client-server web applications, with a reported 10 million users.
     The original Java compilers, virtual machines, and class libraries were developed by Sun from 1995. As of May 2007, in compliance with the specifications of the Java Community Process, Sun relicensed most of its Java technologies under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java and GNU Classpath.

参考答案:

      Java是Sun微系统公司(该公司已并入Oracle公司)的 James Gosling最初开发的一种程序设计语言,在1995年作为Sun公司Java平台的核心组件发布。这种语言继承了C和C++的很多语法格式,但具有更简单的对象模型和更少的低层机制。Java应用程序通常被编译成字节码(类文件),可以在任意的Java虚拟机(JVM)上运行而忽视计算机的体系结构。Java是一种通用的、并发的、基于类的和面向对象的语言,特别地设计成具有尽可能低的实现依赖性。该语言的思想是让应用程序开发者“一次编写,到处运行”(WORA),这意味着在一个平台上运行的代码不需要重新编译就可以运行在另一个平台。如今Java已成为在用的最普遍的程序设计语言之一,特别是用于编写客户机-服务器的web应用程序,据报道有1000万的使用者。 
     最初的Java编译器、虚拟机和类库是由Sun公司从1995开始开发的。在2007年5月,遵照Java社区进程(JCP)的要求,Sun在GNU通用公开许可协议(GPL)的规定下重新发布了它的大部分Java技术许可。第三方组织也完成了这些Sun技术的替代实现,比如GNU的Java翻译器和GNU Classpath等。

 



2013年杭电计算机研究生复试---笔试编程


1、简要描述:输入一个数,代表要检测的例子的个数,每个例子中:
输入两个时间(格式HH:MM:SS),前面时间减去后面时间,输出在时钟上显示的时间,格式一样,如果是以为数字的前面补零。

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>int main(void){int n, HH, MM, SS;int hh, mm, ss;scanf("%d", &n);while (n--) {scanf("%d:%d:%d", &HH, &MM, &SS);scanf("%d:%d:%d", &hh, &mm, &ss);if(hh > 12)hh %= 12;if(SS < ss){--MM;SS += 60;}SS -= ss;if(MM < mm){--HH;MM += 60;}MM -= mm;if(HH < hh)HH += 12;HH -= hh;printf("%02d:%02d:%02d\n", HH, MM, SS);}return 0;}

2、简要描述:一个活动有N(1<N<100)个人参加,一个主持人和N-1个普通参加者,其中所有的人都认识主持人,主持人也认识所有的人,主持人要求N-1个参加者说出他们在参加者中所认识的人数,如果A认识B,则B认识A,所以最少是会认识一个人,就是主持人,他们说出了自己所认识的人数后,需要判断他们中有没有人说谎。
输入:
      第一行是N,N=0表示结束
      第二行是N-1个数字
输出:
      Lie absolutely 或者 Maybe truth 

1 2 4 5 5 3 


3 7 7 7 7 5 6 6 
两个测试例子中第一个是Lie absolutely,第二个是Maybe truth 

分析:
输入N个数,再输入N-1个数

3 7 7 7 7 5 6 6 

先把这N-1个数字按从大到小排序
7 7 7 7 6 6 5 3 
第一个人认识了7个人,除了主持人还剩6个,就当是认识最靠近他后面的6个。
这样,除去第一个人,后面认识的人就都减少了一个,变成了:

7 6 6 6 5 5 4 3 
再次排序
从第二个人,除了主持人和第一个,应该认识5个人,就当是认识最靠近他后面的5个
这样,除去这个人,后面认识的人就都减少了一个,变成了
7 6 5 5 4 4 3 3 

排序,相减,重复下去

如果最后出现了0,就说明有人说谎
如果排序后,当前认识的人和其后面的人数都是1了,那一个人都是主持人,也是Maybe truth 
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6678851#include <stdio.h>#include <stdlib.h>int cmp(const void *a, const void *b){return *(int *)b - *(int *)a;}int main(void){int i, j, n, a[100];while (scanf("%d", &n) != EOF && n) {for(i = 0; i < n - 1; ++i)scanf("%d", &a[i]);for(i = 0; i < n - 1; ++i){qsort(a + i, (n - i - 1), sizeof(int), cmp);if(0 == a[n - 2]){printf("Lie absolutely\n");break;}else if(1 == a[i]){printf("Maybe truth \n");break;}else{for(j = 1; j < a[i]; ++j)--a[i + j];}}}return 0;}