《北京理工大学2013级C程序设计非信息类答案part2.doc》由会员分享,可在线阅读,更多相关《北京理工大学2013级C程序设计非信息类答案part2.doc(50页珍藏版)》请在金锄头文库上搜索。
1、北京理工大学2013级C程序设计非信息类答案part 249. 【小学递归】杀鸡用牛刀要用递归啊!成绩5开启时间2014年05月10日 星期六 14:00折扣0.8折扣时间2014年05月24日 星期六 23:55允许迟交否关闭时间2014年06月1日 星期日 23:55背景: 哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。功能:求整数 n 到 m 区间的累加和,其中n=m;i-)returni+sum(m,i-1); 3. #incl
2、ude 4. intmain()intm,n,s=0;scanf(%d%d,&m,&n);s=sum(m,n); 5. printf(Thesumfrom%dto%dis%d.n,m,n,s);return0;50. 【中学】求最大公约数递归成绩5开启时间2014年05月10日 星期六 14:00折扣0.8折扣时间2014年05月24日 星期六 23:55允许迟交否关闭时间2014年06月1日 星期日 23:55请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。 = m 当 m=n 且 n mod m =0GCD(N,M) = GCD(m,n) 当nm时 = GCD(m, n mod
3、 m) 其他输入: n和m 输出: n和m的最大公约数测试输入期待的输出时间限制内存限制额外进程测试用例 11. 24481. 241秒64M0测试用例 21. 13151. 11秒64M01. #include 2. intf(intx,inty) 3. ints,t;t=x%y; 4. if(t=0)s=y;elses=f(y,t); 5. returns; 6. intmain() 7. intm,n;scanf(%d%d,&m,&n); 8. printf(%dn,f(m,n);return0;51. 【数列递归】求序列之和递归成绩5开启时间2014年05月10日 星期六 14:00折
4、扣0.8折扣时间2014年05月24日 星期六 23:55允许迟交否关闭时间2014年06月1日 星期日 23:55请使用递归算法求序列1 + 1/2 - 1/3 + 1/4-1/5 .的前n项之和。输入:n 输出:序列的前n项和(精确到小数点之后第6位)测试输入期待的输出时间限制内存限制额外进程测试用例 11. 11. 11秒64M0测试用例 21. 21. 1.5000001秒64M0测试用例 31. 31. 1.1666671秒64M01. #include 2. floatsum(intn) 3. floats;if(n=1)s=1.0; 4. elseif(n%2=0)s=sum(n
5、-1)+1.0/n; 5. elses=sum(n-1)-1.0/n;returns; 6. intmain() 7. intn;floats;scanf(%d,&n); 8. if(n=1)printf(1n); 9. elses=sum(n);printf(%.6fn,s);52. 【大学】函数递归*成绩5开启时间2014年05月10日 星期六 14:00折扣0.8折扣时间2014年05月24日 星期六 23:55允许迟交否关闭时间2014年06月1日 星期日 23:55编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。1当 n = 0 且 n 4 且n为偶数 时f(n-2) +
6、 f(n-4)当 n 4 且n为奇数 时-1其他函数原型如下:int findf(int n);参数说明:n 项数;返回值是第n项值。例如输入:10,输出:8预设代码前置代码1. /*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/2. #include 3. intmain() 4. intn,s,findf(int); 5. scanf(%d,&n); 6. s=findf(n); 7. printf(%dn,s); 8. return0; 9. 10. /*PRESETCODEEND-NEVERTOUCHCODEABOVE*/测试输入期待的输出时间限制内存限制额
7、外进程测试用例 11. 101. 81秒64M01. intfindf(intn) 2. if(n=0&n=4)return1;if(n4&n%2=0)returnfindf(n-1)+findf(n-3); 4. if(n4&n%2=1)returnfindf(n-2)+findf(n-4);53.【大学递归】求解平方根成绩5开启时间2014年05月10日 星期六 11:35折扣0.8折扣时间2014年05月24日 星期六 11:35允许迟交否关闭时间2014年06月1日 星期日 11:35小明上了大学,学习了用求解平方根的迭代公式。 其中:p 为 x 的近似平方根,e 是结果允许的误差。
8、输入:x, e 输出:p 保留小数点后 8 位。1. #include2. #include3. floatf(floatx,floatp,floate)4. if(fabs(p*p-x)e)returnp;elsereturnf(x,(p+x/p)/2,e);5. intmain()floatp,e,x;scanf(%f%f,&x,&e);p=f(x,x,e);printf(%.8fn,p);return0;H12:安全的密码(选做)成绩5开启时间2014年05月10日 星期六 14:00折扣0.8折扣时间2014年05月24日 星期六 23:55允许迟交否关闭时间2014年06月1日 星期
9、日 23:55随着电子设备的广泛运用,密码也渐渐融入每个人的生活。保护好密码,不仅关系到个人隐私,更关系到个人的财产和安全。一个安全的密码,最好由大小写字母、数字或符号组成。包含越多种类的字符,其安全性就越高。同时密码还需要有一定的长度,通常至少要由六个以上的字符组成。并不是每个人都喜欢这样复杂的密码,很多人在设置密码的时候,喜欢使用自己的名字或者生日,但这是很大的安全隐患。任务 林晓炜正在设计一个网络交易系统,为了保证用户的密码安全,他需要一个程序,判断用户自己设置的密码是否安全,如果不安全,则给出提示。现在他向你求助,请你帮忙设计一个程序来解决这个问题。应当按照以下的规则来判断密码是否安全
10、:如果密码长度小于 6 位,则不安全;如果组成密码的字符只有一类,则不安全;如果组成密码的字符有两类,则为中度安全;如果组成密码的字符有三类或以上,则为安全通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。输入 输入的第一行是一个整数 N,表明后面有多少组密码。随后的 N 行输入包括 N 个密码,每个密码的长度均小于 20 个字符。输出 针对每一个密码判断并输出它是否安全。对于不安全的密码输出 Not Safe,对于中度安全的密码输出 Medium Safe,对于安全的密码输出 Safe输入样例41234abcdefABC1231#c3Gh输出样例Not SafeNot Saf
11、eMediumSafe Safe测试输入期待的输出时间限制内存限制额外进程测试用例 11. 102. abcDEF3. ABC4. qw5. 6. ABCDEFGHIJKLMNOPQRST7. 123456789012345678908. 1aB9. 1B10. aX11. qwe123%&ABC 1. MediumSafe2. NotSafe3. NotSafe4. NotSafe5. NotSafe6. NotSafe7. Safe8. NotSafe9. Safe10. Safe1秒64M01. #include 2. #include 3. intmain(void) 4. intn,i,j,x,m,b4;chara100;scanf(%d,&n); 5. for(i=1;i=n;i+)gets(a);if(i=1)gets(a);x=strlen(a); 6. if(x6)printf(NotSafen);continue; 7. b0=0;b1=0;b2=0;b3=0;for(j=0;j=x-1;j+) 8. if(48=aj&aj=57)b0=1; 9. elseif(65=aj&