还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
程序训练报告C题目语言程序设计综合训练C院系计算机学院专业班级信息安全班n-X学号201x302xxx学生姓名XXX指导教师xxx201x年x月x日scanfn%cH,A[i];fori=0;ivl7;i++,j++sum=sum+A|i W[j];Y=sum%ll;switchY{case O:M=l;break;case l:M=O;break;case2:M=X*;break;case3:M=*9*;break;case4:M=*8;break;case5:M=7;break;case6:M=6;break;case7:M=5;break;case8:M=4;break;case9:M=3;break;default:M=,21;break;}ifM==A
[17]身份证正确;printf\nelse身份证不正确printf\n;return0;测试数据
3.5小结
3.6通过该问题的解决我了解了身份证号的含义,同时掌握了整形数组的初始化及怎样将字符型数组的元素转化数值型并进行求和安徽理工大学程序训练任务书计算机学院院系信息安全教研室专业(班级)学号学生姓名亡()班201x302xxx xxx11-x信息女全设计题目()鸡兔同笼;()日历问题;()身份证校验123()用语言实现设计任务;1C()所设计的程序可读性好,执行效率高;2()有良好的操作界面;3设计技术参数()设计说明书能很好地反映设计内容4()问题分析及解决方案框架确定1()详细设计和编码2设计()上机前编写程序与检查3要求()上机调试程序4()完成课程设计报告5工作量要求设计说明书的字数在3000字以上根据课程设计大纲的要求,查找相关资料,完成需求分析;进行系统的概要设计;工作计进行系统的详细设计和源代码的书写;划对系统进行调试分析,写出程序训练报告何钦铭语言程序设计.北京高等教育出版社,
[1].C2008参考资
[2]颜晖.C语言程序设计实验指导.北京高等教育出版社,2008料谭浩强编著程序设计(第二版).北京清华大学出版社
[3]C,1999指导教师签字教研室主任签字年月日201x xx鸡兔同笼1-1-计内容
1.1-1-解题思路
1.2-1-调试过程
1.3-1-程序清单
1.4-2-测试数据
1.5-2-小结
1.6-3-日历问题2-3-设计内容
2.1-3-解题思路
2.2-4-调试过程
2.3-4-程序清单
2.4-4-测试数据
2.5-5-小结
2.6-5-身份证校验3-5-设计内容
3.1-5-解题思路
3.2-6-调试过程
3.3-6-程序清单
3.4-6-测试数据
3.5-7-小结
3.6-7-鸡兔同笼1设计内容
1.1•问题描述一个笼子里面关了鸡和兔子(鸡有只脚,兔子有只脚,没有例外)已经知道了笼子24里面脚的总数问笼子里面至少有多少只动物,至多有多少只动物a,•输入数据第行是测试数据的组数后面跟着行输入每组测试数据占行,包括一个正整数1n,n1a(〈)a32768•输出要求行,每行输出对应一个输入输出是两个正整数,第一个是最少的动物数,第二个是最n多的动物数,两个正整数用空格分开如果没有满足要求的情况出现,则输出个20•输入样例2320•输出样例
001.110解题思路
1.2这个问题可以描述成任给一个整型数组,其中包含(<)个数如果是奇数,输出n10N,N否则如果是的倍数,输出如果不是的倍数,输出()这是一个00,N4N/4N/2,N4N+2/4N/2o一般的计算题,只要实现相应的循环及判断和输出代码就可以了题目中说明了输入整数在一个比较小的范围内,所以只需要考虑整数运算就可以了调试过程
1.3()因对问题分析不清楚,给出了错误的计算公式;1()由于没有很好的准备,造成循环条件错误一直没有结果输出;2()输入程序时容易丢标点符号,如在每行末尾缺少分号3程序清单
1.4#includestdio.hint mainvoid{int i,n,max,min;int a
[10];printfnEnter n10:n;scanfn%dn,n;printfHEnter%d integers:”,n;fori=0;in;i++scanfn%dn,a[i];fori=0;in;i++{ifa[i]%2!=0a[i]%4!=0{min=0;max=0;printfn%d%6d%6d\nn,a[i],min,max;}elseifa[i]%2==0a[i]%4==0{min=a[i]/4;max=a[i]/2;printfn%d%6d%6d\n,,a[i],min,max;}else{min=a[i]+2/4;max=a[i]/2;printf,%d%6d%6d\nn,a[i],min,max;}return0;}测试数据
1.5通过该计算类的程序设计,使我掌握了语言中数组的定义及运用,同时又掌握了循环条C件的编写,能从自然语言描述中抽象出一个计算问题,继而能通过程序实现,并将计算结果还原成对原问题的解答日历问题2设计内容
2.1问题描述在我们现在使用的日历中,闰年被定义为能被整除的年份,但是能被整除而不能被4100整除的年是例外,它们不是闰年例如和不是闰年,而和4001700,1800,190021001600,2000是闰年给定从公元年月日开始逝去的天数,你的任务是给出这一天是哪年哪2400200011月哪日星期几输入数据输入包含若干行,每行包含一个正整数,表示从年月日开始逝去的天数输入最200011后一行是7,不必处理可以假设结果的年份不会超过9999输出要求对每个测试样例,输出一行,该行包含对应的日期和星期几格式为“YYYY-MM-DDDayOfWeek,,其中“DayOfWeek”必须是下面中的一个Sunday,Monday11,Tuesday1,J,,“Wednesday Thursday“Friday”and“Saturday,输入样例1730174017501751-1输出样例2004-09-26Sunday2004-10-06Wednesday2004-10-16Saturday2004-10-17Sunday解题思路
2.2对于这个问题我们首先要想办法解决如何实现天数减少,如天,怎样才能是这个天1740数减少到在一年之内及小于天,再要想的问题是在调用函数时怎样实现多个值返回给主函365数,解决这两个问题我们可运用指针来实现,因为指针的运用在语言中是很灵活的而对于C输出星期几,我们可以用函数与字符函数结合想到这些我们就可以解决日switch strcpy历问题了调试过程
2.31在包含命令中忘记了u#includestring.hv,而使调用函数“strcpy出现错误;由于对指针的掌握不够,造成指针定义混乱不能正常使用;2由于没有掌握指针,不能反回多个只给主函数;3在”中没有,而出现错误结果4“switch“default”程序清单
2.4#includestdio.h#includestring.hint mainvoid{int i,n,day,month,year,passday,choice;int a
[10];char sa
[10];void Year_of_Dayint passday,int*pyear,int*pmonth,int*pday;printfnEnter n10:n;scanfn%dn,n;printfnEnter%d passdays:,n;fori=0;in;i++scanfH%d;a[i];fori=0;ivn;i++{passday=a[i]-l;Year_ofLDaypassday,year,month,day;choice=passday%7;switchchoice{case O:strcpysa,Sundayn;break;case1:strcpysa,Monday n;break;case2:strcpysa,nTuesdayn;break;case3:strcpysa,nWednesdayH;break;case4:strcpysa,Thursday n;break;case5:strcpysa,Fridayn;break;default:strcpysa,Saturdayn;break;}printfn%d_%d_%d_%s\n\year,month,day,sa;}return0;void Year_ofLDayint passday,int*pyear,int*pmonth,int*pday{int j=O,k,leap;int tab
[2]
[13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};leap=j%4==0;k=l;whilepassdaytab[leap][k]{passday=passday-tab[leap][kJ;k++;ifk12{k=l;j++;}*pyear=2000+j;*pmonth=k;*pday=passday;测试数据
2.5s*C:\DOCU1EMTS ANDSETTIMGS\ADIIRISTRATOR\^ffi\D..Enter n105Enter5passdai/s173017401750175117602004_9_26_Sunday2004_10_6_Wednesday」20040/6__S aturday2004_10_17_Sunday2004_10_26-TuesdayPress anykey tocontinue.小结
2.6通过编程解决这个问题,我掌握了一些基本函数的定义及运用,如”和“switch“strcpy解决该问题运用了指针,是我对指针有了更深的了解在思考解决这个问题时我学会了怎样把一个复杂问题分成若干小问题使其简单化,结构化身份证校验3设计内容
3.1题目描述我国国标中规定公民身份号码是位特征组合码,由十七位数字本RGB11643-19991118体码和一位数字校验码组成排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码其校验码(最后一位)计算方法和步骤为⑴十七位数字本体码加权求和公式先对前位数字的权求和S=SumAi*Wi,i=0,...,16,17其中表示第位置上的身份证号码数字值Ai i表示第位置上的加权因子,前位加权因子从左到右分别为Wi i17Wi7910584216379105842⑵计算模Y=modS,11⑶通过模查下表得到对应的校验码YY012345678910校验码10X98765432例如某身份证前位为17*11234567891011121314151617wi791058421637910584211010519491231002积7905020292427718305004得到和为;则模为查⑶得校验码为167y=167%ll=2x请按上面所述步骤编程,输入一个二代身份证号,检查该身份证是否正确解题思路
3.2看到这个问题,首先我们应该想到如何将表格转化成计算机可读的语言及如何接受输入C的身份证号,解决该两个问题我们可以定义数组来解决而对于解决校验码的检验我们可以用”来解决“switch调试过程
3.3定义数组时,由于没有弄清其中元素的个数而造成无正确结果输出;1“W”定义数组时,错将其定义为整型而不能接受校验码为的身份证号;2“A”“X”在对前位数字的权求和时,没有将字符数组中的元素转化成数值型,造成无正确结317果输出;程序清单
3.4#includestdio.hint mainvoidintij,sum,Y,W[]={7,9,10,5,8,4,2,1,6,37,9,10,5,8,4,2};char X,M,A
[17];sum=0;j=0;printfHInput thenumber ofpeople:1;fori=0;i18;i++。
个人认证
优秀文档
获得点赞 0