您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计课程实践报告
1中南大学化学化工学院《C++语言程序设计》实验报告专业班级:姓名:学号:同组人员:指导教师:完成日期:2目录第一题(必做)·········································31.题目···············································32.系统功能模块结构图·································43.数据结构设计及说明(程序)···························54.程序结构(流程图)·································105.各模块的功能······································156.运行结果··········································16第二题(必做)········································211.题目··············································212.数据结构设计及说明(程序)··························213.程序结构(流程图)··································244.运行结果··········································25第三题(选做)········································26第四题(选做)········································261.题目··············································262.系统功能模块结构图································273.数据结构设计及说明(程序)··························274.程序结构(流程图)··································305.各模块的功能······································316.运行结果··········································313总结及参考文献·······································35第一题一、题目:使用菜单选择趣味程序△菜单是应用程序的界面,控制语句用来改变程序执行的顺序,是实现结构化设计的基础。△本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。△本题的设计分两步:(1)先设计一个含有多个菜单项的菜单演示程序;A、菜单内容:程序运行后,给出六个菜单项的内容和输出提示1、FindNum2、FindRoot3、Detective4、Bear5、Curve6、YearDay7、Goodbye!B、设计要求:使用数字1-7来选择菜单项,其他输入则不起作用。(2)再为上述菜单项配上相应的功能,即以上述菜单的设计为基础,增加菜单项的处理功能。菜单设计要求(这是6道编程题,要求在运行菜单时,能给出每个程序的运行结果):1、FindNum有0、1、2、3、4、5、6、7、8、9十个数,按要求填入下列算式中,要求每个数只使用一次,首位数不能为零,输出时显示所有可能的组合并统计个数。□□□+□□□=□□□□2、FindRoot求方程0133xx在区间[-8,8]内的全部实根。3、Detective这是一个侦探题,有一辆汽车撞人后跑了,4个目击证人提供如下线索:牌照三、四位相同;牌号为31xxxx;牌照五、六位相同,三到六位是一个整数的平方。4、Bear有一只狗熊到玉米地里吃玉米,一边掰一边吃。第一天吃了一半,又拿走一个回去喂小熊。第二天又去吃了剩下的一半,走是仍带走一个回去喂小熊。以后每天都吃前天剩下的一半,拿走一个。到第十天,地里只剩下一个玉米。求地里一共有多少玉米。5、Curve(可选作)绘制一条滴定曲线(已知是0.1000mol/L的氢氧化钠滴定20.00mL同浓度的4盐酸)。曲线如图所示。此题可以根据所给曲线大致形状,运用常规的编制图形的方法来绘制。也可根据下面所列的方程式来绘出滴定曲线。21122)1(4)1(2][tHClHClKacacH。其中[H]为氢离子浓度,cHCl为盐酸浓度,Kt=1014.00,a为滴定分数(令a在0—2范围内取值,步长为0.001),20/bVa,Vb为氢氧化钠加入到盐酸中的瞬时浓度。6、YearDay已知2000年1月1日为星期六,请输入任一年的年份后,打印该年的年历。7、Goodbye!这里除了输出一个信息外,还必须结束程序运行。二、系统功能模块结构图:主调main函数启动FindnumDetectiveBearCurveGoobye!5三、数据结构设计及说明(程序):#includeiostream#includecmathusingnamespacestd;#defineYES1/*定义符号常数“是”*/#defineNO0/*定义符号常数“否”*/voidFindNum()//函数1{intA,B,C,N,M,O,a,b,c,d,e,f,g,h,i,j,mm=0;cout符合条件的组合是:;{for(A=1000;A=9999;A++){for(B=100;B=999;B++){for(C=100;C=999;C++)//多层循环对可能的数字进行组合{N=A;a=N/1000;N=N%1000;b=N/100;N=N%100;c=N/10;N=N%10;d=N;M=B;O=C;e=M/100;M=M%100;f=M/10;M=M%10;g=M;h=O/100;O=O%100;i=O/10;O=O%10;j=O;//提取出各位数字if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i)&&(a!=j)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(b!=i)&&(b!=j)&&(c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(c!=h)&&(c!=i)&&(c!=j)&&(d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(d!=i)&&(d!=j)&&(e!=f)&&(e!=g)&&(e!=h)&&(e!=i)&&(e!=j)&&(f!=g)&&(f!=h)&&(f!=i)&&(f!=j)&&(g!=h)&&(g!=i)&&(g!=j)&&(h!=i)&&(h!=j)&&(i!=j)&&(A==B+C))//判断各位数字不相等,并且符合题意等式要求{coutB+C=Aendl;mm++;}FindrootYearday6}}}}cout共有组合个数:mm;//输出组合的个数}voidFindRoot(){floati,j,k,s1,s2,s;for(i=-8;i=7;i++){j=i+1;s1=i*i*i-3*i-1;s2=j*j*j-3*j-1;if(s1*s20){do{k=(i+j)/2;s=k*k*k-3*k-1;if(s1*s0){j=k;s2=s;}else{i=k;s1=s;}}//二分法循环逼近所求实根while(fabs((double)s)=1e-6);//利用数学函数对输出的解进行精度控制cout方程的实根为:kendl;}}}voidDetective(){inta,A,i,j;for(i=0;i=9;i++)for(j=0;j=9;j++)//车牌后四位的排列组合for(a=0;a100;a++)//对所有可能的数字进行平方,为之后的比较做准备{A=1000*i+100*i+10*j+j;//算出车牌后四位数的数学值if(a*a==A)cout车牌号为31iijjendl;}}7voidBear(){intday=10,x1,x2=1;cout有一只狗熊到玉米地里吃玉米,一边掰一边吃.endl;cout第一天吃了一半,又拿走一个回去喂小熊。endl;cout第二天又去吃了剩下的一半,走是仍带走一个回去喂小熊。endl;cout以后每天都吃前天剩下的一半,拿走一个。到第十天,地里只剩下一个玉米。求地里一共有多少玉米。endl;//基本故事叙述while(day0)//循环直到时间的始端0{x1=(x2+1)*2;//前一天的数量是后一天加一的两倍x2=x1;day--;//天数递减,倒退}cout玉米田里共有玉米x1个endl;}intisleap(intyear)/*函数isleap():判断某年是否闰年*/{intleap=NO;if((year%4==0&&year%100!=0)||year%400==0)leap=YES;returnleap;}/*函数week_of_newyears_day():求元旦是星期几*/intweek_of_newyears_day(intyear){intn=year-1900;n=n+(n-1)/4+1;n=n%7;returnn;}intYearDay(){intyear,month,day,weekday,len_of_month,i;cout请输入年份:;cinyear;/*因为你的要求是已知2000年1月1日是星期六,所以这里不用week_of_newyears_day去求星期六了*/weekday=week_of_newyears_day(year);/*求元旦是星期几*/8coutyear年endl;/*打印年份*/for(month=1;month=12;month=month+1)/*打印12个月的月历*/{coutmonth月endl;cout-------------------------------------------------------------endl;cout星期日星期一星期二星期三星期四星期五星期六endl;cout-------------------------------------------------------------endl;for(i=0;iweekday;i=i+1)/*找当月1日的打印位置*/cout;if(month==4||month==6||month==9||month==11)len_of_month=30;elseif(month==2){if(isleap(year))len_of_month=29;elselen_of_month=28;}elselen_of_month=31;for(day=1;day=len_of_month;day=day+1)/*打印当月日期*/{coutday;if(day10)cout;elsecout;weekday=weekday+1;if(weekday==7)/*打满一星期应换行*/{weekday=0;coutendl;}}coutendl;/*打完一月应换行*/}return0;}9intmain(){intN;cout----------------------趣味选择菜单程序---------------------endl;cout1.FindNumendl;cout2.FindRootendl;cout3.Detectiveendl;cout4.Bearendl;cout5.Curve(不可使用
本文标题:C++程序设计课程实践报告
链接地址:https://www.777doc.com/doc-6586148 .html