[C/C++]2009年華爲軟件設計大賽兩道編程題

 

編程題(共2題,第1題40分,第2題30分。請上機編寫程序,按題目要求提交文件。本試題採用自動測試用例進行評分,測試用例不對考生公開?,凡不滿足提交要求導致不能編譯或用例不通過,不予評分)。

1. 報數遊戲
問題描述: 
設有N個人圍坐一圈並按順時針方向從1到N編號,從第S個人開始進行1到M報數,報數到第M個人時,此人出圈,再從他的下一個人重新開始1到M的報數,如此進行下去直到所有的人都出圈爲止。現要打印出出圈次序。  
要求實現函數: 
void circle_sort (int n, int s, int m, int *p)
輸入:n 遊戲總人數  s 報數的起始編號  m 報數的數值    
輸出:p 指向長度爲n的數組,出圈次序保存在p指向的數組中
示例 
   n=7 s=2 m=3  出圈次序爲:4 7 3 1 6 2 5
   n=3 s=1 m=2  出圈次序爲:2 1 3  

 

 

 

2. 實現子串查找程序
問題描述: 
判斷一個字符串(dst)是否是另一個字符串(src)的子串; 
輸出子串在母串中的第一次出現的起始位置; 
匹配的時候不區分大小寫; 
不能使用庫函數(使用庫函數按0分計算); 
要求實現函數: 
unsigned int str_str(char * src, char *dst);
返回:如果dst是src的子串 則返回起始位置       如果不是 則返回0
輸入:src 指向母串的指針; dst 指向子串的指針
示例 
src->akrsd5859  dst->rsd
則返回3
src->Rstsawerst36ds  dst->rst
則返回8
src->dfsge         dst-> dfsgesa
則返回0




update:這道題可以採用KMP算法.


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章