1、科目代码: 632 科目名称: C 语言程序设计(含数据结构) 第 1 页 共 2 页 南京师范大学南京师范大学 20212021 年硕士研究生入学考试初试试题(年硕士研究生入学考试初试试题( B B 卷)卷) 科目代码:科目代码: 632 科目名称:科目名称: C 语言程序设计(含数据结构)语言程序设计(含数据结构) 满分: 150 分 考生注意:认真阅读答题纸上的注意事项;所有答案必须写在考生注意:认真阅读答题纸上的注意事项;所有答案必须写在答题纸答题纸上,写在本试题纸或草稿纸上上,写在本试题纸或草稿纸上均无效;均无效;本试题纸须随答题纸一起装入试题袋中交回!本试题纸须随答题纸一起装入试题
2、袋中交回! 一、编程实现以下功能:输入一个正整数,将其反转后输出。如输入 123,输出321。(10 分) 二、编程实现以下功能:输入年月日,判断这一天是这一年的第几天。如输入:2020/1/1,输出:此日期是 2020 年的第 1 天;输入:2020/3/1,输出:此日期是 2020年的第 61 天。(15 分) 三、编写函数 int maxSubArray(int nums,int N),实现以下功能:给定一个长度为N 的整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。例如:输入: -2,1,-3,4,-1,2,1,-5,4;输出: 6。即,连续
3、子数组 4,-1,2,1 的和最大为 6。(15 分) 四、编写函数 void maxLenWord(char str,char maxWord),实现给定一个字符串 str,找到 str 中最长的单词存入 maxWord 中。在主函数中输入字符串 str,调用函数输出最长的单词。注意:由连续字母组成的词即为单词,不必关注是否为真实的英语单词,出现多个长度一样的单词时返回第一个出现的最长单词。(20 分) 示例 1: 输入: a 88bbc eefg ccf 输出: eefg 示例 2: 输入: I love Nanjing Normal University 输出: University 五
4、、中位数是一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数,表征一组数据的中间水平,是统计学中重要的指标之一。如果数组元素总数个数是奇数,取中间的那个数;如果是偶数,则取中间那两个数的平均数。例如, 2,3,4 的中位数是 3; 2,3 的中位数是 (2 + 3) / 2 = 2.5。编写程序实现无序数组中位数。(20 分) 六、最小二乘法是一种数学优化算法,它通过最小化误差的平方和寻找数据的最佳函数匹配。请编写函数实现最小二乘法拟合一条直线,函数声明如下,并在主函数中初始化坐标点,调用函数,输出直线方程。 科目代码: 632 科目名称: C 语言程序设计(含数据结构) 第
5、 2 页 共 2 页 提示:最小二乘法拟合直线 y = a*x + b,可用如下公式实现,其中,N 表示二维点的个数,(xi,yi)表示第 i 个点的坐标值,符号表示求和。(20 分) =(xy)=1(x)=1(y)=1(2)=1(x)=12 =y=1 (x)=1 typedef struct POINT/点的结构 double x; double y; Point; void leastSquareLinear(Point P, int N, double *a,double *b) ; /Point P表示点结构体数组;N表示点的个数,a,b分别表示拟合的系数。 七、用 C 语言定义二叉树
6、的数据结构;编写函数实现二叉树的构建;实现二叉树的中序遍历,并写出以下这棵树的中序遍历结果。(25 分) 八、给定一个由 1(陆地)和 0(水)组成的二维网格,请计算网格中岛屿的数量。假定岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(25 分) 示例 1: 输入:grid = 1 , 1 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 输出:1 示例 2: 输入:grid = 1 , 1 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 输出:3