北理C语言作业及答案2 .

上传人:Si****n 文档编号:144599312 上传时间:2020-09-11 格式:DOC 页数:29 大小:401.51KB
返回 下载 相关 举报
北理C语言作业及答案2 ._第1页
第1页 / 共29页
北理C语言作业及答案2 ._第2页
第2页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《北理C语言作业及答案2 .》由会员分享,可在线阅读,更多相关《北理C语言作业及答案2 .(29页珍藏版)》请在金锄头文库上搜索。

1、34 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数杀死恶龙,于是找到你寻求帮助。输入:第一行 龙头数 n , 勇士人数 m ( 1=n, m=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示

2、勇士的身高 l输出:如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “ bit is doomed! ” 测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 2 32. 53. 44. 75. 86. 4以文本方式显示1. 111秒 64M 0 测试用例 2以文本方式显示1. 2 12. 53. 54. 10以文本方式显示1. bit is doomed!1秒 64M 0#includevoid main() int s=0,t,i,j,m,n,a100,b100,c100; for(i=0;i=99;i+) ai=0,bi=0,ci=0; scanf(%d%

3、d,&m,&n); for(i=0;i=m-1;i+) scanf(%d,&ai); for(i=0;in)printf(bit is doomed!n);else for(i=0;i=m-1;i+) for(j=i;jaj) t=ai,ai=aj,aj=t; for(i=0;i=n-1;i+) for(j=i;jbj) t=bi,bi=bj,bj=t; t=0; for(i=0;i=m-1;i+) for(j=0;j=n-1;j+) if(ai=bj) ct=bj; t+; bj=0; break; if(tm) printf(bit is doomed!n); else for(i=0;i

4、=t;i+) s=s+ci; printf(%dn,s);35 杀鸡用牛刀要用递归啊!成绩: 5 / 折扣: 0.8背景:哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。功能:求整数 n 到 m 区间的累加和,其中n=m。输入:区间的起始点n 区间的终止点m输出:累加和要求:使用递归算法完成。如此简单的题目当然要有隐含的测试用例啦,就3个,看看谁能猜出来。测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 1 10以

5、文本方式显示1. The sum from 1 to 10 is 55.1秒 64M 0 测试用例 2以文本方式显示1. 10 15以文本方式显示1. The sum from 10 to 15 is 75.1秒 64M 0 #includeint sum(int m,int n)int i;if(n=m)i=n;elsei=n+sum(m,n-1);return(i);void main()int m,n;scanf(%d%d,&m,&n);printf(The sum from %d to %d is %d.n,m,n,sum(m,n);H13:安全的密码(选做)成绩: 5 / 折扣: 0

6、.8随着电子设备的广泛运用,密码也渐渐融入每个人的生活。保护好密码,不仅关系到个人隐私,更关系到个人的财产和安全。一个安全的密码,最好由大小写字母、数字或符号组成。包含越多种类的字符,其安全性就越高。同时密码还需要有一定的长度,通常至少要由六个以上的字符组成。并不是每个人都喜欢这样复杂的密码,很多人在设置密码的时候,喜欢使用自己的名字或者生日,但这是很大的安全隐患。任务林晓炜正在设计一个网络交易系统,为了保证用户的密码安全,他需要一个程序,判断用户自己设置的密码是否安全,如果不安全,则给出提示。现在他向你求助,请你帮忙设计一个程序来解决这个问题。应当按照以下的规则来判断密码是否安全:1. 如果

7、密码长度小于 6 位,则不安全 2. 如果组成密码的字符只有一类,则不安全 3. 如果组成密码的字符有两类,则为中度安全 4. 如果组成密码的字符有三类或以上,则为安全 通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。输入输入的第一行是一个整数 N,表明后面有多少组密码。随后的 N 行输入包括 N 个密码,每个密码的长度均小于 20 个字符。输出针对每一个密码判断并输出它是否安全。对于不安全的密码输出 Not Safe,对于中度安全的密码输出 Medium Safe,对于安全的密码输出 Safe输入样例41234abcdefABC1231#c3Gh输出样例Not SafeNo

8、t SafeMediumSafe Safe测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1. 102. abcDEF3. ABC4. qw5. 6. ABCDEFGHIJKLMNOPQRST7. 123456789012345678908. 1aB9. 1 B10. a X 11. qwe123%&ABC以文本方式显示1. Medium Safe2. Not Safe3. Not Safe4. Not Safe5. Not Safe6. Not Safe7. Safe8. Not Safe9. Safe10. Safe1秒 64M 0 #include #include

9、char check(char s) int strlength; strlength=strlen(s); int n4=0,0,0,0; int kind=0,i; if(strlength6) return n;/not safe else for(i=0;i=0&si=A&si=a&si=z)n2+; else n3+; for(i=0;i4;i+) if(ni!=0)kind+; if(kind=1) return n;/not safe if(kind=2) return m;/Medium Safe return s;/Safe void main() int N,i; char

10、 level; scanf(%dn,&N); char str50; for(i=0;iN;i+) gets(str); level=check(str); switch(level) case n:printf(Not Safen); break; case m:printf(Medium Safen); break; case s:printf(Safen);break; H14:身份证的奥秘(选做)成绩: 5 / 折扣: 0.8背景 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999公民身份号码中做了明确的规定。 GB11643-1999公民身份号码为

11、GB11643-1989社会保障号码的修订版,其中指出将原标准名称社会保障号码更名为公民身份号码,另外GB11643-1999公民身份号码从实施之日起代替GB11643-1989。GB11643-1999公民身份号码主要内容如下: 一、范围 该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。 二、编码对象 公民身份号码的编码对象是具有中华人民共和国国籍的公民。 三、号码的结构和表示形式 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一

12、位数字校验码。 2、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 3、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 4、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 5、校验码 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, . , 16 ,先对前17位数字的权求和 Ai: 表示第i位置上的身份证号码数字值 Wi: 表示第i位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (2)计算模 Y = mod(S, 11) (3)通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 四、举例如下: 北京市朝阳区: 11010519491231002X 广东省汕头市: 440524188001010014 15位的身份证号升级办法: 15位的身份证号:dddddd yymmdd xx p 18位的身份证号:dddddd yyyymmdd xx p y 其中dddddd为地址码(省地县三级) yyyymmdd yymmdd 为出生年月日 xx

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > C/C++资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号