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