编程题(共3题,第一题20分,第二题30分,第三题50分,共100分。请上机编写程序,按题目要求提交文件。
本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。
1、 排序算法(20分)
l 问题描述
将给定的无序整数数组降序排列后输出,输入的无序数组长度为N,类型为unsigned int
l 要求实现函数
void DscSort (const int InputArray[], unsigned int n, int OutputArray[])
【输入】InputArray: 给定的无序数组
n: 数组长度
【输出】OutputArray: 排序后的数组
【返回】无
l 示例
输入:InputArray={1,5,4,8,3,2,9,6,7,0}
输出:OutputArray={9,8,7,6,5,4,3,2,1,0}
2、查找最大的不重复数(30分)
l 问题描述
如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、1234和12121都是“不重复数”,而11、100和1225不是。给定一个正整数A,返回大于A的最小“不重复数”。A小于100000
l 要求实现函数
unsigned int GetNotRepeatNum(unsigned int lValue)
【输入】lValue: 给定的数字,返回大于该值的最小不重复数
【输出】无
【返回】大于iValue的最小不重复数
l 示例
输入:iValue =54
返回: 56
输入:iValue =10
返回: 12
输入:iValue =98
返回: 101
输入:iValue =21099
返回: 21201
3、字符串匹配(50分)
l 问题描述
判断包含通配符的匹配字符串是否完全匹配输入的字符串,匹配字符串中包含的通配符仅有‘*’和‘?’,且通配符不会连续出现 。(要求完全匹配,而不是包含)
其中,通配符‘*’:代替0个或多个字符,通配符‘?’:代替一个字符
l 要求实现函数
int GetMatchSta (const char *ArrStr, const char *KeyStr)
【输入】 ArrStr: 给定的字符串
KeyStr: 包含通配符的匹配字符串
【输出】无
【返回】是否匹配,匹配返回1,不匹配返回0
l 示例
输入:” abcdefg”, “a*'”
返回:1
输入:“tommababcabc” , t?m*ab*abc
返回:1