


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计大赛c语言模拟题试题及答案 模拟 c语言 本科 注意: 本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。 说明: 本试卷包含两种题型:“代码填空”与“程序设计”。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 1. 代码填空(满分2分) 下列代码,把一个2位整数交换十位与个位的位置。请
2、填写缺失的代码。 例如:当x=95时,返回59。 int switch_num(int x) int a = x / 10; int b = x % 10; return _b*10 + a_; 2. 代码填空(满分3分) 下列代码把一个二进制的串转换为整数。请填写缺少的语句; char* p = int n = 0; for(int i=0;i printf( n = _ (n 3. 代码填空(满分3分) 假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。 if(ab) swap( if(bc) swap(
3、if(ab)_swap( int m = b; 第 1/5 页 4. 代码填空(满分5分) 计算3个a,2个b可以组成多少种排列的问题(如:aaabb, aabba)是组合数学的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个a,n个b可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) if(m=0 | n=0) return 1; return _ f(m-1, n) + f(m, n-1)_; 详解: 对于m个a和n个b的情况来讲,你就假设把m+n个球放到袋子里然后随即往外拿。最后的结果只能有两种:最后拿
4、到的要么是a,要么是b。假设我们拿了f(m,n)次刚好把所有的情况都遍历了(意思就是所有的组合情况),那么试想一下:所有最后一个拿到a的情况以及所有最后一个拿到b的情况 一定正好分别把(m-1,n)和(m,n-1)的情况都遍历了,也就是f(m-1,n)和f(m,n-1)。所以把他们加起来就可以了。 至于最后递归条件满足时的返回值:return 1,其实很简单了,如果其中一种(a或b)被拿光了,肯定就只剩下一种情况了。 后来,我有想了下3个字母的情况:m个a,n个b,r个c。答案也类似,后面一个return返回的是f(m-1, n, r)+f(m, n-1, r)+f(m, n, r-1)。但是
5、前一个return的返回值就要变了,也就是说 不是1了。到底是多少呢?呵呵,我们可以利用2个字母时的情况,返回f(m,n)(m,n分别代表当三个字母中其中一个为0时,另外两个的个数)。 ok,应该就是这样,不准确之处还望大家指出。 5. 代码填空(满分6分) 此段代码的意图是把一个缓冲区中的整数重新排列,使得所有负数都在正数的左边。请分析其工作流程,补充缺失的代码。 void reorder(int *pdata, int len) if(pdata = null | len = 0) return; int *pbegin = pdata; int *pend = _pdata+len-1_
6、; while(pbegin if(*pbegin pbegin +; _continue_; if(*pend=0) pend -; _continue_; 第 2/5 页 int temp = *pbegin; *pbegin = *pend; *pend = temp; int main(int argc, char *argv) for(int i=0; iint a = 1,2,3,-5,-4,5,9,-8,-1; reorder(a, 9); 6. 代码填空(满分9分) 给定一个字符串,其含有的字符各不相同。程序输出该字符串的所有排列(全排列)情形。例如:给定字符串“xyz”,则程
7、序输出: xyz xzy yxz yzx zyx zxy 试完善程序中空缺的部分。 void f(char *str, int len, int n) _f(str, len, n+1)_; tmp = *(str+n); *(str+n) = *(str+i); *(str+i) = tmp; int i; char tmp; char *p = (char *)malloc(_strlen(str)+1_); if(n=len-1) printf(for(i=n;istrcpy(p,str); else 第 3/5 页 strcpy(str,p); free(p); int main(in
8、t argc, char *argv) char str = f(str,3,0); printf(return 0; 7. 代码设计(满分5分) 625这个数字很特别,625的平方等于390625,刚好其末3位是625本身。除了625,还有其它的3位数有这个特征吗? 请编写程序,寻找所有这样的3位数:它的平方的末3位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。比如那个625就输出为: 625 #include int main(int argc, char *argv) int max = 900; int minv = 100,maxv = 999; for ( ; mi
9、nv return 0; if(minv = minv*minv % 1000) printf(, minv); 8. 代码设计(满分11分) 某游戏规则中,甲乙双方每个回合的战斗总是有一方胜利,一方失败。游戏规定:失败的一方要把自己的体力值的1/4加给胜利的一方。例如:如果双方体力值当前都是4,则经过一轮战斗后,双方的体力值会变为:5,3。 现在已知:双方开始时的体力值甲:1000,乙:2000。 假设战斗中,甲乙获胜的概率都是50% 求解:双方经过4个回合的战斗,体力值之差小于1000的理论概率。 9. 代码设计(满分18分) 第 4/5 页 整数的分划问题。 如,对于正整数n=6,可以分划为: 6 5+1 4+2, 4+1+1 3+3, 3+2+1, 3+1+1+1 2+2+2, 2+2+1+1, 2+1+1+1+1 1+1+1+1+1+1+1 现在的问题是,对于给定的正整数n,编写算法打印所有划分。 用户从键 + 4 = 1634。 当n=5时,92727满足条件。 实际上,对n的每个取值,可能有多个数字满足
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物流行业调度员招聘模拟题集及答案
- 2025年建筑工程师考试冲刺题库及答案
- 【教案版】小学五班级下册 跳绳2
- 2025年人力资源管理师考试专业技能部分模拟题及答案
- 2025年营养师专业资格认证备考手册模拟题及答案全收录
- 2025年物资保管与盘点技能考核试题集
- 2025年法律行业律师招聘面试技巧及预测题集
- 2025年法律顾问面试指南与模拟题详解
- 2025年物资储备仓库IT招聘面试题预测与准备策略
- 2025年烈士纪念场所工作面试技巧与模拟题解答
- 2025年电抗器行业当前市场规模及未来五到十年发展趋势报告
- 新班主任自我介绍课件
- 新北师大单元分析六上第六单元《比的认识》单元教材解读
- 福建升辉鞋业有限公司年加工EVA鞋底385万双、TPR鞋底65万双、PVC鞋底60万双项目环评报告表
- 零星维修服务方案
- 胸腺瘤诊断治疗指南
- 视网膜静脉阻塞.LM
- 华为客户接待规范接待礼仪课件
- 海底捞-A级门店管理制度
- 员工创新奖励办法
- 毛衫各部位基本尺寸测量表示法中英文对照适用毛织厂
评论
0/150
提交评论