編程題(共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