题目 - 沈航817程序设计

时间:2024-03-03 12:32:10

2011 年 数据结构和程序设计

  1. 设线性表 L 以顺序存储结构存储,请编程实现在表 L 中的第 i 个元素前插入一个新的数据元素 e。 (1 <= i <= n+1)(10分)

  2. 在存储一组递增的整形数的单链表中,要求删除所有元素 x (min < x < max)。请编程实现。

  3. 编程实现,求二叉树的叶节点个数。(10分)

  4. 设有一个带头节点的单链表,请编程实现,若表不为空,将一新的值为 K 的节点插入到该单链表结尾之前(作尾节点的直接前驱),否则,新街点做表尾节点。(15分)

  5. 设有两个动态实现的顺序表 L1, L2 各存储递增有序的一组整形数。现要求将 L2 合并到 L1 ,且合并后的 L1 仍然保持递增有序。请编程实现。(15分)

2012 年

  1. 输入一个合理的年、月、日,计算日期距离 1970.1.1 的天数(20分)

  2. 编写程序实现大整数的加法和减法运算。(25分)(大整数为 40 到 100 位之间的十进制数)

  3. 输出所有同时符合下列条件的整数(15分)

    • 该数是4位整数;
    • 该数是完全平方根;
    • 该数减去 1111 后,结果仍是一个完全平方数。
      (完全平方是一个整数,它数另一个数的平方,例如 15、36 等)
  4. 输入 M 个字符串,输出重复 1 到 M 次 的字符串的个数、(25分)
    例如:输入 BBA BBA BEA DEC CCF
    输出 1 3; 2 1; 3 0; 4 0; 5 0
    表示重复次数一次的字符串有 3 个,重复两次的字符串有 1 个,重复三次、四次、五次的字符串有 0 个。

  5. 编写程序求斐波那契额数列的前 40 项之和。要求用递归函数实现计算斐波那契额数列的第某项的值。(15分)
    (斐波那契额数列的第一项和第二项为 1,其余每项都等于前两项之和)

  6. 编写函数实现利用链表对 20 个单词降序排列。(25分)

  7. 打开带有注视的 C 语言源程序文件,显示过滤掉注释后的文件内容。(25分)
    注释有两种方式: ”//“ 和 “ /* ” 开始 “ */ ” 结束

2013 年

  1. 输入一个字符串,分别统计并输出其中大写字母的个数、小写字母的个数、数字字符的个数和其他字符的个数。(15分)

  2. 输入 10 个整数,对这组数进行由小到大排序,输出排序结果并统计其中交换的次数。(20分)

  3. 输出 100 - 200 之内所有素数。要求:利用自定义函数识别一个数是否为素数(温馨提示:素数是指能被 1 和自身整除的数)(20分)

  4. 已知有两个整数链表(两个链表都是无序链表),完成链表的合并,保证合并后的链表升序排列(25分)

  5. 从键盘输入 20 个学生信息(学号、姓名、年龄、身高、体重),计算全部学生的平均身高和体重,并统计输出平均体重以上的学生的人数,以及这些学生的学号、姓名、年龄、体重等信息。(25分)

  6. 实现两个 5*5 矩阵的加分、减法和乘法。(25分)

  7. 实现从磁盘文件 “d:\stu.dat” 中读出全部学生信息(学号、姓名、性别、成绩),分别统计高于平均成绩和低于平均成绩的人数,并将结果写入到 “d:\Result.dat” 文件中。(20分)

2014 年

  1. 利用递归算法求两个整数的最小公倍数。(20分)

  2. 输入一元二次方程的三个系数 a, b, c 输出该方程的根。需要考虑 delta < 0 的情况。

  3. 用字符串数组(数组长度为20)表示大整数,完成两个大整数的加、减法计算。(25分)

  4. 输入 5*5 的矩阵 A, 并计算矩阵 A 的平方(25分)

  5. 从键盘输入一组学生信息(学号、姓名、高考英语成绩、高考数学成绩、高考语文成绩),计算每个学生 3 门 课程的平均成绩,并按照平均成绩由高到低排序。(输入以 3 门成绩都为 0 结束)(30分)

  6. 输入 m,n 其中 n 表示有 n 个人,围城一圈,顺序排好(编号为 n 的人的下一个人编号为 1)。从第一个人开始循环报数(从 1 到 m 报数),凡报到 m 的人退出圈子,要求输出所有人出圈的次序。(用链表方式实现)。

2015 年

1.输入一元二次方程的三个系数,输出该方程的根。(15分)

2.输入20个数,将它们按照从小到大的次序输出。(20分)

3.编程实现将9*9矩阵按照顺时针方向旋转90度,要求不允许使用临时矩阵作为转换的内存单元。(20分)

4.输入一个正整数N,利用递归实现求N的阶乘。(20分)

5.计算两个整数的最大公约数。(20分)

6.现有两个学生信息文件“studentA.dat”和“studentB.dat”,每个文件中各有10名学生信息(学号,姓名,性别,年龄,住址),将两个文件中的学生信息按照学号由小到大顺序合并,合并结果写入到“studentC.dat”中。(30分)

7.定义一个函数实现两个集合的相加运算。(用链表的方式实现) (25分)

2017 年

  1. 计算一百以内所有完数,输出个数及累加和

  2. 给定任意正整数n,计算n以内素数个数

  3. 输入十个数排序并输出结果(选择,起泡)

  4. 输入年月日,计算是这一年的第几天

  5. 链表操作,增删改查与合并

  6. 输入一个3×3矩阵,输出最大值及其行列号

  7. 文件操作,从文件中读取数据,处理过后再写回文件

2020年

  1. 输入正数 m 和 n,输出 m 和 n 之间的所有素数(m < n,包括 m 和 n)。

  2. 自定义函数,判断该数是否是完全数(如果一个数恰好等于它的因子之和,则称该数为“完全数”)

  3. 数组元素去重。假设某数组有 10 个整数,要求对于相同的元素,仅保留第一次出的元素,删除其余的重复元素。保持数组的整体顺序不变。

  4. 给定同一年当中的任意两个日期,计算间隔的天数(模块接收 5 个参数:year-年、month1-月份1、day1-日期1、month2-月份2、day2-日期2)

  5. 输入一个 3 x 3 的矩阵,将每行中最大的数字放到该行的第一的位置上,然后输出该矩阵。

  6. 输入 5 名学生的信息(学号、成绩、年龄)、按照学生的成绩进行排序,然后输出这 5 名学生的信息(用结构体来存储学生信息)。

  7. 在一个升序的链表中插入一个元素,要求插入任意元素后使得链表依然保存升序(假设链表有 5 个元素)。