北理C语言作业及答案3.doc
《北理C语言作业及答案3.doc》由会员分享,可在线阅读,更多相关《北理C语言作业及答案3.doc(53页珍藏版)》请在咨信网上搜索。
1、C语言作业343. 缩写展开成绩: 10 / 折扣: 0.8在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。例如用A-Z表示ABCD.XYZ,1-5表示12345,c-f表示cdef。输入:包含缩写形式的字符串输出:将缩写形式进行还原后的字符串说明:只分别对大写字母、小写字母和数字进行压缩,对于形如9-A,a-C这样的缩写不进行处理。测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 0-9以文本方式显示1. 01234567891秒 64M 0 测试用例 2以文本方式显示1. G
2、-I以文本方式显示1. GHI1秒 64M 0 测试用例 3以文本方式显示1. ABDG-K035-9abd-h以文本方式显示1. ABDGHIJK0356789abdefgh1秒 64M 0 测试用例 4以文本方式显示1. abcdef ghi jkl mn以文本方式显示1. abcdef ghi jkl mn1秒 64M 0 测试用例 5以文本方式显示1. 1-1以文本方式显示1. 1-11秒 64M 0 #include int main() int i=0; char s100; gets(s); while(si!=0) if(si+1!=-) printf(%c,si); i+;
3、else if(si+2si & (si=57)+(si+2=57)!=1) & (si=65) while(si!=si+2) printf(%c,si+); i+=2; else printf(%c,si+); printf(n); return 0; 44. 函数递归成绩: 10 / 折扣: 0.8编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。1当 n = 0 且 n 4 且n为偶数 时 f(n-2) + f(n-4) 当 n 4 且n为奇数 时 -1 其他 函数原型如下:int findf(int n);参数说明:n 项数;返回值是第n项值。例如输入:10,输出:8 预设
4、代码前置代码view plaincopy to clipboardprint?1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.3. #include 4.5. int main() 6. int n,s, findf( int ); 7. scanf(%d, &n); 8. s = findf(n); 9. printf(%dn, s); 10. return 0; 11. 12.13. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 测试输入期待的输出时间限制内存限制额外进程测试用例 1
5、以文本方式显示1. 10以文本方式显示1. 8无限制 64M 0 int findf(int n)if(n=0&n4&n%2=0)return findf(n-1) + findf(n-3);elseif(n4&n%2=1)return findf(n-2) + findf(n-4);elsereturn -1;45. 大家再来做游戏成绩: 10 / 折扣: 0.8还是那个大家做游戏的问题:幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,给出开始报数的小孩的编号后,从这个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,接着
6、从下一个小朋友在从1开始报数,直到只剩下一位小朋友游戏才中止。输入: 小朋友的个数(=50) 开始报数的小孩的编号 要被练习的数字输出: 最终被留下的小朋友的序号例如输入:4 1 3输出:The left child is NO 1.说明:这次,以函数的方式实现上述问题。主函数已经给出,仅需提交自己编写的函数。你可以尝试用递归方法来解决呦!这个问题是著名的约瑟夫问题,基于著名犹太历史学家 Josephus讲述的一个,所以函数的名字是josephus。函数原型:int josephus( int * boy, int n, int m, int r)参数说明:int * boy:保存参加游戏的小
7、孩编号的整型数组的首地址。小孩的编号从1开始。int n:开始参加游戏的小孩总数。int m:开始时第一次报数的小孩的编号。int r:要被练习的数字。预设代码josephus.cview plaincopy to clipboardprint?1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.3. #include stdio.h 4. int josephus( int *boy, int n, int m, int r ); 5.6. int main( ) 7. int i, boy50=0, n, m, r; 8. scanf
8、(%d%d%d,&n,&m,&r); 9. if( n50 | m50 | r=0 ) 10. printf(The number is wrong!n ); 11. else 12. 13. for( i=0; i1)if(m+r-1)%n!=0)for(j=(m+r-1)%n-1;jn-1;j+)boyj=boyj+1;return josephus(boy,n-1,(m+r-1)%n,r);elsereturn josephus(boy,n-1,1,r);if(n=1)return boy0;H18:拱猪计分(选作)成绩: 5 / 折扣: 0.8背景:拱猪是一种很有趣的扑克牌游戏。即使你
9、不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。 假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。 1. 我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至 13来代表A、2、Q、K等牌点,例如:H1为红心A,S13为黑桃K。 2. 牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有S12(猪),所有红心牌,D11(羊)及C10(加倍)等16张牌。其它牌均弃置不计。若未持有这16张牌之任一张则以得零分计算。 3. 若持有C10的玩家只有该张牌而没有任何其它牌则得+50分,若除了C10 还有其它计分牌,则将其它计分牌所
10、得分数加倍计算。 4. 若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50, -2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12与D11分别以-100及+100分计算。 5. 若红心牌H1至H13均在同一家,有下列情形: o 所有红心牌以+200分计算。 o 若S12、D11皆在吃下所有红心牌之一家,则此玩家得+500分。 o 而C10还是以前面所述原则计算之。 例一:若各玩家持有计分牌如下: ( 每列代表一玩家所持有之牌 ) S12 H3 H5 H13D11 H8 H9C10 H1 H2 H4 H6 H7H10 H11 H12 则各
11、家之得分依序为: -148 、 +83 、 -138 及 -60 。 例二:若各玩家持有计分牌如下:(第四家未持有任何计分牌)H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13S12 C10D11 则各家之得分依序为: +200 、 -200 、 +100 及 0 。 例三:若有一玩家持有所有 16 张计分牌,则得 +1000 分。其余三家均得零分。 输入:每个输入文件由多组测试数据构成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持有之所有计分牌,牌数与各计分牌均以一个以上的空格分开。相邻两组测试数据之间不会有空白行,读到四家持牌
12、数都为 0 表示文件结束。 输出:每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数 ( 含正负号,0 除外),相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。每组输出间不需要有空白行。 测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 4 S12 H3 H5 H132. 3 D11 H8 H93. 6 C10 H1 H2 H4 H6 H74. 3 H10 H11 H125. 13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H136. 2 S12 C107. 1 D118. 09. 010. 011. 012
13、. 0以文本方式显示1. -148 +83 -138 -602. +200 -200 +100 01秒 64M 0 #include stdio.h int myinput(int card,int number) int i,n; char s5; for(i=0;i4;i+) scanf(%d,&n); numberi=n; while(n-) scanf(%s,s); switch(s0) case S:card13=i;break; case D:card14=i;break; case C:card15=i;break; case H:s2=0?(cards1-1=i):(cards
14、2-1+10=i); return number0+number1+number2+number3; int main() int value15=-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40,-100,100, card16, score4=0,0,0,0, number4, i,s, input(); while(myinput(card,number) for(i=0,s=0;i13;i+) s+=cardi; if(s%13) for(i=0;i15;i+) scorecardi+=valuei; else if(card0=card13&ca
15、rd13=card14) scorecard0+=500; else scorecard0+=200; scorecard14+=value14; scorecard13+=value13; scorecard15+=numbercard15=1?50:scorecard15; for(i=0;i0?+:,scorei,i=3?n: ); for(i=0;i4;i+) scorei=0; return 0; 46 求表示方法成绩: 10 / 折扣: 0.8设 m、n 均为自然数,m 可表示为一些不超过 n 的自然数之和,f(m,n) 为这种表示方式的数目。例如,f(5,3)=5,有5种表示方法
16、:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。请编写程序,计算f(m,n)的值。输入:m n输出:f(m,n)的值测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 5 3以文本方式显示1. 51秒 64M 0 测试用例 2以文本方式显示1. 6 4以文本方式显示1. 91秒 64M 0 #includeint f(int y,int x) if(y=1) return 1; if(x=1) return 1; if(yx) return f(y,y); if(x=y) return 1+f(y,x-1); return f(y,x-1)+f(y-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北理 语言 作业 答案
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。