C程序设计课程实践报告.docx

上传人:b****3 文档编号:718606 上传时间:2022-10-12 格式:DOCX 页数:36 大小:913.93KB
下载 相关 举报
C程序设计课程实践报告.docx_第1页
第1页 / 共36页
C程序设计课程实践报告.docx_第2页
第2页 / 共36页
C程序设计课程实践报告.docx_第3页
第3页 / 共36页
C程序设计课程实践报告.docx_第4页
第4页 / 共36页
C程序设计课程实践报告.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

C程序设计课程实践报告.docx

《C程序设计课程实践报告.docx》由会员分享,可在线阅读,更多相关《C程序设计课程实践报告.docx(36页珍藏版)》请在冰豆网上搜索。

C程序设计课程实践报告.docx

C程序设计课程实践报告

中南大学化学化工学院

《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

求方程在区间[-8,8]内的全部实根。

3、Detective

这是一个侦探题,有一辆汽车撞人后跑了,4个目击证人提供如下线索:

牌照三、四位

相同;牌号为31xxxx;牌照五、六位相同,三到六位是一个整数的平方。

4、Bear

有一只狗熊到玉米地里吃玉米,一边掰一边吃。

第一天吃了一半,又拿走一

个回去喂小熊。

第二天又去吃了剩下的一半,走是仍带走一个回去喂小熊。

以后每天都吃前天剩下的一半,拿走一个。

到第十天,地里只剩下一个玉米。

求地里一共有多少玉米。

5、Curve(可选作)

绘制一条滴定曲线(已知是0.1000mol/L的氢氧化钠滴定20.00mL同浓度的

盐酸)。

曲线如图所示。

此题可以根据所给曲线大致形状,运用常规的编制图形的方法来绘制。

也可

根据下面所列的方程式来绘出滴定曲线。

其中[H]为氢离子浓度,cHCl为盐酸浓度,Kt=1014.00,a为滴定分数(令a在0—2范围

内取值,步长为0.001),,Vb为氢氧化钠加入到盐酸中的瞬时浓度。

6、YearDay

已知2000年1月1日为星期六,请输入任一年的年份后,打印该年的年历。

7、Goodbye!

这里除了输出一个信息外,还必须结束程序运行。

二、系统功能模块结构图:

 

三、数据结构设计及说明(程序):

#include

#include

usingnamespacestd;

#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))//判断各位数字不相等,并且符合题意等式要求

{cout<<""<

}

}

}

}

cout<<"共有组合个数:

"<

}

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*s2<0)

{

do

{

k=(i+j)/2;

s=k*k*k-3*k-1;

if(s1*s<0){j=k;s2=s;}

else{i=k;s1=s;}

}//二分法循环逼近所求实根

while(fabs((double)s)>=1e-6);//利用数学函数对输出的解进行精度控制

cout<<"方程的实根为:

"<

}

}

}

 

voidDetective()

{inta,A,i,j;

for(i=0;i<=9;i++)

for(j=0;j<=9;j++)//车牌后四位的排列组合

for(a=0;a<100;a++)//对所有可能的数字进行平方,为之后的比较做准备

{A=1000*i+100*i+10*j+j;//算出车牌后四位数的数学值

if(a*a==A)

cout<<"车牌号为"<<"31"<

 

}

 

voidBear()

{

intday=10,x1,x2=1;

cout<<"有一只狗熊到玉米地里吃玉米,一边掰一边吃."<

cout<<"第一天吃了一半,又拿走一个回去喂小熊。

"<

cout<<"第二天又去吃了剩下的一半,走是仍带走一个回去喂小熊。

"<

cout<<"以后每天都吃前天剩下的一半,拿走一个。

到第十天,地里只剩下一个玉米。

求地里一共有多少玉米。

"<

while(day>0)//循环直到时间的始端0

{

x1=(x2+1)*2;//前一天的数量是后一天加一的两倍

x2=x1;

day--;//天数递减,倒退

}

cout<<"玉米田里共有玉米"<

 

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<<"请输入年份:

";

cin>>year;

 

/*因为你的要求是已知2000年1月1日是星期六,所以这里不用week_of_newyears_day去求星期六了*/

weekday=week_of_newyears_day(year);/*求元旦是星期几*/

cout<

/*打印年份*/

for(month=1;month<=12;month=month+1)/*打印12个月的月历*/

{

cout<

cout<<"-------------------------------------------------------------"<

cout<<"星期日星期一星期二星期三星期四星期五星期六"<

cout<<"-------------------------------------------------------------"<

for(i=0;i

cout<<"";

if(month==4||month==6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1