2000 
 
1.  输入 n,求 y1=1!+3!+...m!(m 是小于等于 n 的最大奇数)、    y2=2!+4!+...p!(p 是小于等于 n 的最大偶数) 
2。输入一个 5×5 的矩阵,判断是否对称 
3。建立一个升序链表并遍历 
 
2001 
【保研】 
1.统计一字符串字符重复的个数; 
    例如:输入 q3s4sa1aa 
                输出 s,3; s,5 
                        a,6; a,8; a,9 
2,输入一个 5 行 4 列的的矩阵,输出每列最大两个元素 
3.建立一个链表,以输入 0 为结束,删除其中数值最大的元素,并输出后删除元素后的链 
    表(不能用数组) 
 
2002 
1、编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个
字符。(凡是以一个或多个空格隔开的部分就为一个单词) 
2、守形数是这样一种整数,它的平方的低位部分等于它本身。比如 25 的平方是 625,低位部分是 25,因此 25 是
一个守形数。编一个程序,找出 2--100 之间所有的守形数。 
3、编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如
下的先序遍历字符串: 
ABC##DE#G##F### 
其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 
 
2005 
第一题:对给定的一个字符串,找出有重复的字符,并给出其位置,如: 
输入:abcaaAB12ab12 
输出:a,1;a,4;a,5;a,10 
                  b,2;b,11 
                  1,8;1,12 
Tutub整理(CSDN nineqblot)
                  2,9;2,13 
第二题:输入一个四行五列的矩阵,找出每列最大的两个数,如: 
输入:1 2 3 4 9 
                -1 4 9 8 8 
              12 9 8 7 0 
                  7 8 9 7 0 
输出:12 9 9 8 9 
                      7 8 9 7 8 
第三题:输入一个字符串,建立一个二叉排序树,并中序遍历输出; 
 
2006 
1.输入一个数列以 0 位结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行
排序,并输出释放节点 
2.输入一个数列以 0 位结束标志,建立二叉遍历数,并对其进行逆中序遍历,释放空间 
 
第一题是  对输入的 5 个数排序,输出的结果到文件里。 
第二题是    用链表去对上面的 5 个数字排序。 
第三题是  输入一个 ip 地址串,判断是否合法。 
 
【外校保送】 
(1)输入一个十进制数,将其先转化为八进制数,然后再输出 
(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。如果最长和最短的不止一行,请全部输出。 
(3)输入学生信息:学号,三门课程的成绩,学号为 0 时结束,将其存储在链表 A 中,从中找出分数大于平均分的学
生,并将该学生信息按平均分降序排列存入到链表 B 中,最后输出链表 B。 
 
【本校保送】 
(1)采用命令行方式复制任意多个文件内容到一个文件中,如下所示: 
命令行形式:mycopy 1.txt 2.txt 3.txt 4.txt ... 
功能:复制 2.txt 3.txt 4.txt  …的内容到 1.txt 中 
(2)判定一个 C 语言变量的命名是否正确 
(3)建立一种数据结构,可以存储任意个、任意长度的整数,利用这个数据结构,输入一串数,排序,求累加和 
 
2008 
一. 
1、狼过河问题(运用到回溯) 
2、统计文件中单词数目 
3、N 阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(递归) 
4、链表操作 
 
二. 
第一个是一个上楼梯的种数的统计,本来是一个用递归可以解决的问题,但是题目偏偏要求编写快速算法,言
下之意就是要求你把递归转化成非递归。 
      第二个题是链表的,要求依照给出的结构体依次实现输入链表,保存链表,删除链表,从磁盘读取链表,显示链
表这几个操作。做这个题,如果不记得保存文件的函数,很可能做不全或者做不出来。 
第三个是要求根据  -    |    \    /    四个字符来实现题目所规定的一个长方体。并能使这个长方体适当的放大。这
个是一个递归问题,但是我想了半天也没有做出来。 
 
Tutub整理(CSDN nineqblot)
【外校保研】 
(1)输入一个十进制数,将其先转化为八进制数,然后再输出 
(2)用户输入一个文本名,编程实现输出文本中最长的一行和最短的一行。如果最长和最短的不止一行,请全部输出。 
(3)输入学生信息:学号,三门课程的成绩,学号为 0 时结束,将其存储在链表 A 中,从中找出分数大于平均分的学
生,并将该学生信息按平均分降序排列存入到链表 B 中,最后输出链表 B。 
 
【本校保研】 
(1)采用命令行方式复制任意多个文件内容到一个文件中,如下所示: 
命令行形式:mycopy 1.txt 2.txt 3.txt 4.txt ... 
功能:复制 2.txt 3.txt 4.txt …的内容到 1.txt 中 
(2)判定一个 C 语言变量的命名是否正确 
(3)建立一种数据结构,可以存储任意个、任意长度的整数,利用这个数据结构,输入一串数,排序,求累加和 
 
2009 
1.输入一串数,然后,建立链表,排序输出。 
2.计算 26 个字母的输入次数,好像不区分大小写。 
3.用一维数组存储学号和成绩,然后,按成绩排序输出。 
 
【系统结构上机】 
1.输入四个数,分别创建四个链表 A,B,C,D.  打印四个链表 
2.A 按升序排列,D 按降序排列 
3.把 B 中第一个数插入 A 中,保持 A 的升序排列,把 C 中第一个数插入 D 中,保持 D 的降序排列 
4.把链表 A 中每个数的个位数打印出来 
5.合并链表 A\D,保持升序排列。 
 
2010 
【保研】 
1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 
这一题比较简单 
2、输入一串数,要求建平衡二叉排序树,然后先序遍历。 
3、有 4 个小问,是超长整数的存储、计算、输出。要把超长整数存在一个单向循环链表中,是每四位一个节点。 
 
a、 输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数!(如‘3’,输出:10110011); 
b、 设计 8 个任务函数 task0()-task8()只输出一句话:如 task0()输出“task0 is called!”;设计一个调度函数
schedule()输入一个字符串如"012345"然后返回一个函数指针数组和字符串的长度作为执行函数 execute()的
参数进行调度任务函数。主函数只有调度函数。 
c、 实现一个加法器,保证两个加数是任意长的整数。 
参考答案:http://bbs.csdn.net/topics/340180351 
 
 
2011 
1. (1)从键盘输入一个文本(ASC2 码文件),并将该文本输出到 D 盘根目录下的 abc0.txt 文件中,再关闭该文件,以
Ctrl+Z(即 eof)结束。 
(2)打开 D 盘根目录下的 abc0.txt 文件,将单词之间两个以上的空格都压缩为一个空格,输出处理后的文本,同
时将处理后的文本输出到 D 盘根目录下的 abc1.txt 文件中,并关闭该文件。 
(3)打开 D 盘根目录下的 abc1.txt 文件,统计文件中字符的个数,单词的个数,以及句子的个数-,并输出统计结
Tutub整理(CSDN nineqblot)
果。 
 
2.  (1)输入任意 n 个整数,并将其无冗余的放入数组中(n 值不得事先确定,否则 0 分),然后输出这数组中的 n 个
数。 
(2)对该数组中的 n 个数进行排序并输出结果。 
 
3. (1)无冗余的接受键盘输入的 n 个字符串,并将其无冗余的放入对应的字符数组中,再按照每行一串的格式输出这
些字符串。 
(2)以单个字符串为数据域,按字典顺序将 n 个字符串生成为一棵二叉搜索树,并且规定左子树(数据域)小于
右子树(数据域)。 
(3)先序遍历该二叉树,并输出结果。 
 
2012 
1.(1)输入一个长整数,将最高字节与最低字节互换,然后再输出。 
(2)将这个长整数中间两个字节循环左移 n 位(n 要输入),然后再输出。 
(3)将长整数按照二进制输出,每 8 位输出一个空格 
 
2.(1)输入 n 个字符串,字符串只能是纯字母或者纯数字,不能事先指定字符串个数,最后将输入字符串倒序输出 
(2)将纯字母的字符串按照字典顺序排序,纯数字的字符串按照数值大小排序,最后在输出。 
 
3.  一个有关城市间的公路建设,是一个带权值的无向图,不过其中的边和顶点都有编号。有两问,第一问是将所有
的边按权值排序输出,第二问是就是求最小生成树,求出具体路径,和最小代价。 
 
2013 
1.  孪生素数(30  分) 
如果  n  和  n+2  都是素数,则称它们是孪生素数。输入  m(5
2014 
1、(本题 30 分)编程找出所有的 4 位超级素数。每行输出 6 个数,两个数之间空格分隔。超级素数:一个 n 位超级
素数是指一个 n 位正整数,它的前 1 位,前 2 位,……,前 n 位均为素数,例如,2333  是个 4 位超级素数,因为 2, 
23, 233, 2333  均为素数。 
 
2、(本题 30 分)以二进制方式输入两个正整数(即 0 和 1 组成的字符串),然后输入一个 4 则运算符(+、-、*、/)按
short 型计算这两个数的运算结果,并将结果按二进制输出(高位 0 可不输出)。 
例如,输入 101        100 
输出 10100 (或 00000000000010100) 
输入 101        100   
输出 1001 
 
3、(本题 40 分)编写一个程序,判断给定的字符串是否是法的 C 整型常量,是,输出 Yes;不是,输出 No。C 整型
常量的语法图如下图所示(图中 0 是数字零)。要求程序能循环接受用户的输入,每行输入 1 个字符串给出判定结果,
再输入 1 个字符串,给出判定结果,直至输入 CTRIL+Z 结束。例如: 
123 yes 078 no 100h no ^Z 
 
 
2015 
 
2016 
 
1.  七个评委给选手打分,去掉最高分和最低分,输出平均分,保留一位小数 
2.  输入字符串,共三问,去除前面的空格,中间多个空格只保留一个空格,数字字母中间加上_ 
Tutub整理(CSDN nineqblot)
3.  检测输入的  IP  地址是否合法 
 
2017 
 
 
2018 
1、(本题 40 分)从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间由若干个空格隔开,英文单
词由大小写字母组成,编程完成下列任务: 
(1)统计并输出此句子中英文字母的个数(10 分) 
(2)统计并输出此句子中单词的个数:(10 分) 
(3)查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)和次数,当出现最多的字符不只一个时,
都能找到,并输出找到的所有字母及次数。(输出字母时大小写均可) (20  分) 
例如,输入句子: This Is An Pencil Case 
则输出为: 
字母个数: 18 
单词个数: 5 
最多的字母: i, s 
出现的次数: 3 
 
2、(本题 30 分)十二进制是数学中一种以 12 为底数的记数系统,它由 0~9,a, b 组成。与十进制的对应关系是: 0~9
对应 0^9,  a 对应 10,  b 对应 11.例如,十二进制的 a2,  十进制是 122.输入一个仅含十二进制数字的字符串(字母
一律小写,  不超过 8 个字符),编程完成下列任务: 
(1)输出该十二进制数每一位对应的十进制数  (从高位到低位顺序输出,空格隔开)    (10  分) 
(2)实现“十二进制”转“十进制”算法,输出该十二进制数对应的十进制数    (10 分) 
(3)输出转换后的十进制数在内存中的每个二进制位(共 4 字节,字节之间空格隔开)。(10 分) 
例如,输入十二进制数: a2 
则输出为: 
10    2 
122 
00000000 0000000 0000000 01111010 
 
3、(本题 30 分)编写程序,接受 3 个以 ND 形式输入的分数,其中 N (0<=N<=65535)为分子,D(0<=D<=655)  为分
母,输出它们的小数形式。如果小数形式存在循环节,如用括号括起来。如 1/3=.33333…/表示为  .(3)。 
Tutub整理(CSDN nineqblot)
例如,输入: 8/5      1/3      11/13 
则输出为: 
8/5= 1.6 
1/3= .(3) 
11/13= .(846153) 
 
2019 
第一题(40 分) 
输入一个长整型  数字  输出所有  小于等于这个数字的梅森素数 
梅森数,是指形如 2p-1 的一类数,其中指数 p 是大于等于 2 的正整数,常记为 M(p)  。如果梅森数是素数,就称
为梅森素数。 
例 
输入  100 
输出   
M(2)=3 
M(3)=7 
还有一个记不清了 
 
第二题(30 分) 
  打开第一题的代码源文件      .c/      .cpp  要求原文件里含//和/*    xxxxx    */ 
输出该文件  共有三小问 
1、给每行代码加上序号,表明这是第几行 
2、对于//  字符  不予输出//及该行之后的文本 
3、同上  要求不输出/*    */  及其之内的文本 
 
 
第三题(30 分) 
输入一个字符串  长度小于 80 
要求 
1、对于字符串加密输出    加密方法为  对于字母字符输出其 ASCII 码值右移 2(就是+2)后的字母,但是对于字母 y,z 
加密后输出  a,b(加密后字母大小写不变) 
2、奇偶校验        对于加密后的字符串  判断每个 ASCII 码值(2 进制)中 1 的个数  如果不是奇数个 1  那么最高位
取 1 
3、输出第二问奇偶校验后的数值  十进制表示 
举例   
输入 aD 
输出   
cF 
c              11100011        227 
F              01000110        70 
 
 
 
 
不知名年份 
(1)输入一个数列以 0 位结束标志,建立链式线性表,查找其中最大的数并输出删除释放节点,然后对剩余的进行排
序,并输出释放节点。 
(2)输入一个数列以 0 位结束标志,建立二叉遍历数,并对其进行逆中序遍历,释放空间。 
(3)给出年分 m 和一年中的第 n 天,算出第 n 天是几月几号(提示中给出了判断闰年的方法),按  yyyy-mm-dd 的
格式打印出来。(07 应用) 
Tutub整理(CSDN nineqblot)
2.约瑟夫环(07 应用) 
3.关于链表(07 应用) 
  建立一个关于职工信息,如年龄,性别,要求输入至少 5 个职工信息,并输出其中年龄最大的三个职工信息 
 
(4)职工有职工号,姓名,年龄.输入 n 个职工的信息,找出 3 个年龄最小的职工打印出来,n 可以取 6。 
(5)n 个人排一圈 123 报数,报到 3 的人退到圈外,直到剩最后一个人为止。 
(6)冒泡排序。(07 软件) 
(7)建立二叉树,并中序遍历。(07 软件) 
(8)生成一个长度为 21 的数组,依次存入 1 到 21;建立一个长度为 21 的单向链表,将上述数组中的数字依次存入
链表每个结点中;将上述链表变为单向封闭(循环)链表;从头结点开始数,将第 17 个结点删除,将它的下一个结点
作为新的头结点;重复上述过程,直到该链表中只剩一个结点,显示该结点中存入的数字。 
第一题是对输入的 5 个数排序,输出的结果到文件里。 
第二题是用链表去对上面的 5 个数字排序。 
第三题是输入一个 ip 地址串,判断是否合法。 
 
1.统计一字符串字符重复的个数; 
例如:输入 q3s4sa1aa 
输出 s,3; s,5 
                        a,6; a,8; a,9 
2,输入一个 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                      AA 
      AB    BA              AB    BA 
  ABC        CBA              AA 
      AB    BA        (输入字符 B) 
          AA 
(输入字符 C) 
指针构建链表结构:输入一组数据,构建一个升序链表,完成插入,删除,遍历功能。 
例如,输入        1 8 5 4 3; 
构建        head->1->3->4->5->8->NULL; 
遍历        1 3 4 5 8; 
Tutub整理(CSDN nineqblot)