C程序设计课程实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学化学化工学院《C++语言程序设计》
实验报告
专业班级:
姓名:
学号:
同组人员:
指导教师:
完成日期:
目录
第一题(必做) (3)
1.题目 (3)
2.系统功能模块结构图 (4)
3.数据结构设计及说明(程序) (5)
4.程序结构(流程图) (10)
5.各模块的功能 (15)
6.运行结果 (16)
第二题(必做) (21)
1.题目 (21)
2.数据结构设计及说明(程序) (21)
3.程序结构(流程图) (24)
4.运行结果 (25)
第三题(选做) (26)
第四题(选做) (26)
1.题目 (26)
2.系统功能模块结构图 (27)
3.数据结构设计及说明(程序) (27)
4.程序结构(流程图) (30)
5.各模块的功能 (31)
6.运行结果 (31)
总结及参考文献 (35)
第一题
一、题目:
使用菜单选择趣味程序
△ 菜单是应用程序的界面,控制语句用来改变程序执行的顺序,是实现结构化设计的基础。
△ 本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。 △ 本题的设计分两步:
(1)先设计一个含有多个菜单项的菜单演示程序;
A 、菜单内容:
程序运行后,给出六个菜单项的内容和输出提示 1、FindNum 2、FindRoot 3、Detective 4、Bear 5、Curve 6、YearDay 7、Goodbye!
B 、设计要求:使用数字1-7来选择菜单项,其他输入则不起作用。
(2)再为上述菜单项配上相应的功能,即以上述菜单的设计为基础,增加菜单项的处理功能。
菜单设计要求(这是6道编程题,要求在运行菜单时,能给出每个程序的运行结果): 1、FindNum
有0、1、2、3、4、5、6、7、8、9十个数,按要求填入下列算式中,要求每 个数只使用一次,首位数不能为零,输出时显示所有可能的组合并统计个数。 □ □ □ + □ □ □ = □ □ □ □ 2、FindRoot
求方程0133
=--x x 在区间[-8,8]内的全部实根。
3、Detective
这是一个侦探题,有一辆汽车撞人后跑了,4个目击证人提供如下线索:牌照三、四位
相同;牌号为31xxxx ;牌照五、六位相同,三到六位是一个整数的平方。 4、Bear
有一只狗熊到玉米地里吃玉米,一边掰一边吃。第一天吃了一半,又拿走一 个回去喂小熊。第二天又去吃了剩下的一半,走是仍带走一个回去喂小熊。以后每天都吃前天剩下的一半,拿走一个。到第十天,地里只剩下一个玉米。求地里一共有多少玉米。 5、Curve (可选作)
绘制一条滴定曲线(已知是0.1000mol/L 的氢氧化钠滴定20.00mL 同浓度的
盐酸)。曲线如图所示。
此题可以根据所给曲线大致形状,运用常规的编制图形的方法来绘制。也可 根据下面所列的方程式来绘出滴定曲线。
2
1122
)1(4)1(2][⎥
⎦
⎤⎢⎣⎡+-+-=-+
t HCl
HCl K a c a c H 。
其中[H]为氢离子浓度,c HCl 为盐酸浓度,Kt=1014.00,a 为滴定分数(令a 在0—2范围 内取值,步长为0.001),20
/b V a =,V b 为氢氧化钠加入到盐酸中的瞬时浓度。
6、YearDay
已知2000年1月1日为星期六,请输入任一年的年份后,打印该年的年历。 7、Goodbye!
这里除了输出一个信息外,还必须结束程序运行。
二、系统功能模块结构图:
主调main 函数启动
Findnum
Detective
Bear Curve
Goobye !
三、数据结构设计及说明(程序):
#include
#define YES 1 /* 定义符号常数“是” */ #define NO 0 /* 定义符号常数“否” */
void FindNum() //函数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))//判断各位数字不相等,并且符合题意等式要求 { cout<<"
"<