导航菜单
首页 >  西交大软件工程考研真题  > 西安交大软件考研915编程题总结

西安交大软件考研915编程题总结

西交软件915历年编程题汇总

今年刚刚参加了22年西交915考试,915的考试范围为(数据结构和算法,程序设计),相比于其他只考数据结构的高校来说,现在的915更偏,考试范围也更广。会考许多408数据结构没有涉及的部分。19年之前的915整体上来说是不难的,之后的年份考试难度有明显提升。下面对13年至22年915考试的编程题进行总结。

2013年西交915编程题

程序设计题 编写c语言程序,该程序的功能是确定字符串中首次出现的某字符在串中的位置(即该字符是字符串中的第几个字符),然后从字符串中删除该字符。要求: 1.如果未找到该字符,程序给出相应信息,否则,输出该字符在字符串中首次出现的位置,删除该字符,并且显示删除前后的字符串。 2.通过键盘输入字符串以及被确定的字符。

*(题解:915挺喜欢考这种简单的程序设计题目,通过遍历即可实现)

2014年西交915编程题 编写一个程序,输入一个十进制的数,输出相应的二进制数,八进制数和十六进制数。编写一个程序,输入一串字符,以回车结束,判断该字符串是否是回文串,如“abcddcba”是回文串,即正读反读相同的串。输入a,b两个字符串,将两个字符串a,b连接起来。

*(题解:这年的编程题也属于简答题,第一题可以用一个数组存储十进制所对应的二进制数,然后分别用二进制计算八进制和十六进制,也可以用其他方法。第二题可以遍历一半字符串分别比较前面和后面字符是否相同,也可以用递归。第三题可以用指针也可以用数组,比较简单)

2015年西交915编程题 编写一个函数,该函数有三个参数,一个是二维数组,一个是二维数组的行,一个是二维数组的列数,输出该二维数组两条对角线元素之和。编写一个函数,输入一个字符串,分别统计该字符串中出现的数字字符个数,字母字符个数和其他类型字符的个数。编写一个候选人的得票统计程序,设有m个选举人,n个候选人每输入一个得票的候选人名字,要求输出每一个候选人的得票情况。编写一个函数,统计出单链表中值等于x的个数。 2016年西交915编程题 编写一个函数,功能是:将字符串s中的所有数字字符去掉,保留其余的字符,并且将形成的新字符串存储在原来s的空间中。编写一个函数,功能:从一个整数m中,统计其中各位上等于n的数字数目,并返回,其中n在0到9之间,若n越界,则返回-1,并提示“第二个参数越界”。例如4500201中有0共3个,编写主函数并调试。建立一个学生在某一个课程到课情况统计程序。功能要求: (1)可一次性输入所有学生的到课情况,输入学生总人数,该课程总课时,学生学号,及其到课情况,分为正常,迟到,请假,旷课; (2)可统计某一学生的到课情况的上课率(包括正常,迟到),旷课率并输出。 (3)可统计所有学生的上课率,旷课率并输出。 写出所有的数据结构;写出算法描述;写出源代码。

*(题解:代码设计难度不大,但是像这种设计一个系统程序的代码量还不小,考场要注意时间。注意要写出结构体,注释等)

2017年西交915编程题 带头结点的单链表,只有头指针list,不改变链表的情况下,设计一个高效算法,查找倒数第k位上的结点,查找成功输出对应的data值,成功返回1,否则返回0.写一个折半查找函数,尽可能使得时间复杂度最小。设有两个栈s1,s2都采用顺序栈,并且共享一个存储区[0…maxsize-1].为了尽量使用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式,请设计s1,s2栈的出栈、进栈操作算法。假设有n个作业,m台机器设备,每个作业i可选择一台设备加工,加工时间为Ti,每次一台设备只可以加工一个作业,基于贪心策略,实现作业调度,使n个作业等待时间的和最小。

*(题解:编码题难度有提升,像最后一题要用到贪心策略,这个题可先将作业按照加工时间进行排序,按照完成时间最小的次序依次分配设备)

2018年西交915编程题 输入一串字符串,字符串以“#”结尾,判断输入的字符串中0至9的个数。输入学生的姓名和成绩,按照学生成绩进行排序后输出。输入年月日,求这是当年第几天。将m个相同的球全部放到n个相同的盒子里有多少种放法。 2019年西交915编程题 输入若干个点的坐标(x,y),x,y都是正整数。输入(0,0)表示输入结束。现要求输入完毕以后,输出一个长方形左下角和右上角的坐标。要求长方形区域覆盖所有输入点坐标。回文串可以被定义为形如abccba,也可以是a bc c b a(含空格)。 (1)使用递归思想,实现一个检测回文串的函数。 (2)不使用递归,使用栈来实现上述功能。一个无序序列,找出其中的逆序对。要求时间复杂度为O(nlogn)。如果不能实现上述时间复杂度,请分析你自己所实现程序的时间复杂度。关于一个包含N个非负整数的数组A[1…n],如果iA[J],则称(A[i],A[j])为数组A中的一个逆序对。

*(题解:关于逆序对,最常规的思想就是两层for循环遍历完所有可能,但是时间复杂度是n的平方。所以可以用归并排序的思想实现题目所要求时间复杂度)

2020年西交915编程题 a,b,c,d四个0~9的数字,输出所有使得abcd+cadb=9102的abcd数字。反序数指整数各位取反之后的数。如321的反序是123,147的反序是741.现输入n组a,b(a,b均大于0并小于10000),如果a,b反转的和等于和的反正,则输出a,b。例如a=123,b=456,那么a+b和为123+456=579,a与b的反转数和为321+654=975,579的反转数是975,满足题意故输出。 输入第一行为n代表输入的组数,下面几行代表几对数组。要求可以输入多组数据。符合条件则输出对应组数,否则输出none。公司发礼品,有n件商品价值为a1,a2…an的不同商品,其价值各不相同。某员工有总价值200元的商品可以选,问总共有多少种商品搭配。

*(题解:最后一题公司发礼品应该属于动态规划类型的题目,属于01背包的变形,可设f[i][w]为前i种商品搭配价值为w的搭配次数。最后求f[n][200])

2021年西交915编程题 请写应该程序,找出给定矩阵的马鞍点。若一个矩阵中的某元素在其所在行最小而在其所在列最大,则元素为矩阵的一个马鞍点。输入数据由m+1行构成,第一行只有两个整数m和n,分别表示矩阵的行数和列数,接下来m行,每行n个表示矩阵元素。输出马鞍点数,每行一个,为行列以及马鞍数。如果不存在,则输出“not exist”。完美数定义--------如果一个大于1的正整数的所有因子之和等于这个数本身,则这个数就是完美数。 输入:给定一个正整数 输出:输出两行,如果n是完美数,返回true,否则返回false。并在第二行按照从小到大输出10000内的完美数(以空格分隔)虚拟机器人复制,第一天生产一个成熟机器人。成熟机器人每天可生产一个新机器人,新机器人3天可变成成熟机器人。 输入:第n天 输出:第n天的机器人总数。

*(题解:最后一题机器人复制类似与斐波那契序列,想到的话就是一个特别简单的递推式,f[i]=f[i-1]+f[i-3]。用编程实现这个递推式即可。)

2022年西交915编程题 忘了(很简单)判断5张扑克牌是不是顺子,其中,大小王可以充当任何数。类似于20年的最后一题。一堆数中,求不同组合数加起来等于某一个target的数的组合,并要求输出所有的组合。

这就是编程题的大概难度,其实区分点主要在前面的解答题中。主要就是题量大导致后面写编程题的时间不多了。前面解答题中也有让你写伪代码的题,例如22年915就让写堆调整的一个伪代码,还有一个比较难,是优化dijskra算法求出所有的最短路径个数并写出伪代码。需要历年真题的可以私我(免费)。如果对你有帮助的话可以点个赞,加个关注。

相关推荐: