华中科技大学复试机试题目2008年一.1、狼过河问题(运用到回溯)2、统计文件中单词数目3、N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。
(递归)4、链表操作二.第一个是一个上楼梯的种数的统计,本来是一个用递归可以解决的问题,但是题目偏偏要求编写快速算法,言下之意就是要求你把递归转化成非递归。
第二个题是链表的,要求依照给出的结构体依次实现输入链表,保存链表,删除链表,从磁盘读取链表,显示链表这几个操作。
做这个题,如果不记得保存文件的函数,很可能做不全或者做不出来。
第三个是要求根据- | \ / 四个字符来实现题目所规定的一个长方体。
并能使这个长方体适当的放大。
这个是一个递归问题,但是我想了半天也没有做出来。
20061.输入一个数列以0位结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排序,并输出释放节点2.输入一个数列以0位结束标志,建立二叉遍历数,并对其进行逆中序遍历,释放空间第一题是对输入的5个数排序,输出的结果到文件里。
第二题是用链表去对上面的5个数字排序。
第三题是输入一个ip地址串,判断是否合法。
2005第一题:对给定的一个字符串,找出有重复的字符,并给出其位置,如:输入:abcaaAB12ab12输出:a,1;a,4;a,5;a,10b,2;b,111,8;1,122,9;2,13第二题:输入一个四行五列的矩阵,找出每列最大的两个数,如:输入:1 2 3 4 9-1 4 9 8 812 9 8 7 07 8 9 7 0输出:12 9 9 8 97 8 9 7 8第三题:输入一个字符串,建立一个二叉排序树,并中序遍历输出;其它年份题目1.给出年分m和一年中的第n天,算出第n天是几月几号(提示中给出了判断闰年的方法),按yyyy-mm-dd的格式打印出来2.职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来,n可以取63.n个人排一圈123报数,报到3的人退到圈外,直到剩最后一个人为止4.冒泡排序。
5.建立二叉树,并中序遍历。
6.生成一个长度为21的数组,依次存入1到21;建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每个结点中;将上述链表变为单向封闭(循环)链表;从头结点开始数,将第17个结点删除,将它的下一个结点作为新的头结点;重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字。
08年的华科招收外校保送生上机试题:(1)输入一个十进制数,将其先转化为八进制数,然后再输出(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。
如果最长和最短的不止一行,请全部输出。
(3)输入学生信息:学号,三门课程的成绩,学号为0时结束,将其存储在链表A中,从中找出分数大于平均分的学生,并将该学生信息按平均分降序排列存入到链表B中,最后输出链表B。
08年的华科本校生保送上机试题:(1)采用命令行方式复制任意多个文件内容到一个文件中,如下所示:命令行形式:mycopy 1.txt 2.txt 3.txt 4.txt ...功能:复制2.txt 3.txt 4.txt …的内容到1.txt中(2)判定一个C语言变量的命名是否正确(3)建立一种数据结构,可以存储任意个、任意长度的整数,利用这个数据结构,输入一串数,排序,求累加和2001年保研复试题目1.统计一字符串字符重复的个数;例如:输入q3s4sa1aa输出s,3; s,5a,6; a,8; a,92,输入一个5行4列的的矩阵,输出每列最大两个元素3.建立一个链表,以输入0为结束,删除其中数值最大的元素,并输出后删除元素后的链表(不能用数组)2000年1. 输入n,求y1=1!+3!+...m!(m是小于等于n的最大奇数)y2=2!+4!+...p!(p是小于等于n的最大偶数)2。
输入一个5×5的矩阵,判断是否对称3。
建立一个升序链表并遍历2002年1、编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。
(凡是以一个或多个空格隔开的部分就为一个单词)2、守形数是这样一种整数,它的平方的低位部分等于它本身。
比如25的平方是625,低位部分是25,因此25是一个守形数。
编一个程序,找出2--100之间所有的守形数。
3、编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。
例如如下的先序遍历字符串:ABC##DE#G##F###其中“#”表示的是空格,空格字符代表空树。
建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
屏幕的格式化输出:给出一幅图形,用程序实现。
如下所示。
AA AAAB BA AB BAABC CBA AAAB BA (输入字符B)AA(输入字符C)指针构建链表结构:输入一组数据,构建一个升序链表,完成插入,删除,遍历功能。
例如,输入 1 8 5 4 3;构建head->1->3->4->5->8->NULL;遍历 1 3 4 5 8;插入 6 遍历 1 3 4 5 6 8删除 5 遍历 1 3 4 5 81。
求N的阶乘,其中0<=N<=1000 (35分)2。
求最长的子序列和。
比如1+3-2,结果是4;1+3-2+5,结果是7;-1-2-3,结果是-1.另外要求运行时间不超过1s,就是要求算法的复杂度要好(25分)3。
已知二叉树的前序和中序序列,要求写出后序序列。
(40分)如果给的前序和中序序列是错误的,就要输出"NO ANSWER!"//1 生成一个长度为21的数组,依次存入1到21//2 建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每个结点中//3 将上述链表变为单向封闭(循环)链表//4 从头结点开始数,将第17个结点删除,将它的下一个结点作为新的头结点//5 重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字北航:1.素数输入一个整数,要求输出所有从1到这个整数之间个位为1的素数,如果没有则输出-1(30分)2.旋转矩阵任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。
行之间用回车分隔,两个矩阵间用任意的回车分隔。
(60分)3.字符串匹配从string.in中读入数据,然后用户输入一个短字符串。
要求查找string.in中和短字符串的所有匹配,输出行号、匹配字符串到string.out文件中。
匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。
如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。
(60分)其它:上机:(一个小时,时间很紧,使用VC6.0系统 C或C++都行)考文件操作的很多,所以文件操作要熟。
第一题:两个整数异或,然后以二进制形式输出异或结果。
第二题:一个组合问题。
大意是红、黑、白球各若干个,每次取出8个,求不同的组合数。
个数从键盘输入,结果保存到文件。
第三题:然后给定一个字符串,读文件后查找与给定串的匹配,找到后输出,找不到返回。
第四题:一个二叉树的结点信息(值、层数等,记不大清楚了)保存在文件里,读文件建立二叉树,好像还要遍历一下。
a、输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如…3‟,输出:10110011);b、设计8个任务函数task0()-task8()只输出一句话:如task0()输出“task0 is called!”;设计一个调度函数schedule()输入一个字符串如"012345"然后返回一个函数指针数组和字符串的长度作为执行函数execute()的参数进行调度任务函数。
主函数只有调度函数。
(这个题难道很多同学因为很多同学不知道函数指针数组怎么用啊!)c、实现一个加法器,保证两个加数是任意长的整数。
(这个题的加数由于是任意长所以把它声明成什么类型(long、int)的都是不对的,要用到结构体)。
(所以这应该是个串行加法器)面试的时候,基本上就是问你做了什么项目,什么毕业论文之类的,不会涉及专业知识!====================================================================== 08年的华科招收研究生上机试题:(1)输入一个十进制数,将其先转化为八进制数,然后再输出#include <stdio.h>main(){int a = 0 ;printf ("Please enter a decimal number:") ;scanf ("%d",&a) ;printf ("%d's octal number is %o\n",a,a) ;}(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。
如果最长和最短的不止一行,请全部输出。
#include <stdio.h>#include <stdlib.h>#include <string.h>#define BUFFSIZE 1000{FILE *fp;char filename[255];char tempMax[BUFFSIZE];char tempMin[BUFFSIZE];int i=0;int cnt=0;printf("input file name:");scanf("%s",filename);if (NULL==(fp=fopen(filename,"r"))){printf("file open error!");return 0;}char Line[BUFFSIZE][BUFFSIZE];while((fgets(Line[i], BUFFSIZE, fp))&&i<BUFFSIZE) {//printf("%s",Line[i]);i++;}strcpy(tempMax,Line[0]);strcpy(tempMin,Line[0]);//printf("%s\n",tempMax);for(i=1;i<cnt;i++){if(strlen(Line[i])>strlen(tempMax))strcpy(tempMax,Line[i]);if(strlen(Line[i])<strlen(tempMin))strcpy(tempMin,Line[i]);}printf("longest string:\n");for(i=0;i<cnt;i++){if(strlen(Line[i])==strlen(tempMax)) {printf("%s\n",Line[i]);}}printf("\n\nshortest string:\n");for(i=0;i<cnt;i++){if(strlen(Line[i])==strlen(tempMin)){printf("%s",Line[i]);}}fclose(fp);return 0;} (3)输入学生信息:学号,三门课程的成绩,学号为0时结束,将其存储在链表A中,从中找出分数大于平均分的学生,并将该学生信息按平均分降序排列存入到链表B中,最后输出链表B。