2009年华为软件设计大赛两道编程题

 

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

 

以上两题,我的解法如下:(希望感兴趣的朋友,一起分享自己的想法)

第一题:

第二题:

注意:不仅要考虑dst的回溯,还要考虑src的回溯。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值