C语言课程设计报告.docx

上传人:b****6 文档编号:8217463 上传时间:2023-01-29 格式:DOCX 页数:48 大小:177.52KB
下载 相关 举报
C语言课程设计报告.docx_第1页
第1页 / 共48页
C语言课程设计报告.docx_第2页
第2页 / 共48页
C语言课程设计报告.docx_第3页
第3页 / 共48页
C语言课程设计报告.docx_第4页
第4页 / 共48页
C语言课程设计报告.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告.docx

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

C语言课程设计报告.docx

C语言课程设计报告

中南大学

课程设计报告

 

课程名称

C语言课程设计

学院

化学化工学院

姓名

******

班级

化工0808班

学号

1505080802

时间

09年7月

 

2008~2009学年第2学期

文档一.使用菜单选择趣味程序

【一.问题描述】菜单是应用程序的界面,控制语句用来改变程序执行的顺序,是实现结构化设计的基础。

本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。

【二.具体要求】本题的设计分两步:

(1).先设计一个含有多个菜单项的菜单演示程序;菜单内容程序运行后,给出七个菜单项的内容和输出提示:

1.FindNum2.FindRoot3.Detective4.Bear5.Curve6.YearDay7.GoodBye!

(2).设计要求:

使用数字1-7来选择菜单项,其他输入则不起作用。

再为上述菜单配上相应的功能,即以上述菜单的设计为基础,增加菜单项的处理功能。

菜单设计要求(这是六道编程题,要求在运行菜单时,能给出每个程序的运行结果):

1.FindNum

有1、2、3、4、5、6、7、8、9十个数,按要求填入下列算式中,要求每个数只使用一次,首位数不能为零,输出时显示所有可能的组合并统计个数。

□□□+□□□=□□□□

2.FindRoot

求方程x3-3x-1=0在区间【-8,8】内的全部实根。

3.Detective

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

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

4.Bear

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

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

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

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

求地里一共有多少玉米。

5.Curve

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

曲线如图所示。

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

也可以根据下面的方程来绘制滴定曲线。

[H+]=CHCl(1-a)/2+[(1-a)CHCl2/4+Kt-1]

其中,[H+]为氢离子浓度,CHCl为盐酸浓度,Kt=1014.00,a为滴定分数(令a在0-2范围内取值,步长为0.001),a=Vb/20,Vb为氢氧化钠加入到盐酸中的瞬时浓度。

6.YearDay

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

7.GoodBye!

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

【三.系统分析】

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

本程序运用switch……case语句实现了七个菜单项的演示程序,并分别定义了几个功能函数分别为上述菜单配上相应的功能,通过主函数调用各个函数而实现趣味菜单程序。

(9)本大题的流程图大体如下:

 

运行时,如下图顺序:

【四.测试数据及伪代码】

#include"stdio.h"

#include"conio.h"

#include"math.h"

#include"Process.h"

#defineYES1

#defineNO0

intcount2=0;

voidfindnum();

voidfindroot(floatgen[],floatx1,floatx2);

voiddetective();

voidyearday(intyear);

intbear(intdays);

main()

{intch1,t1=1;

floatgen[100];

intyear;

while(t1)

{

system("cls");

printf("1.FindNum\n2.FindRoot\n3.Detective\n4.Bear\n5.Curve\n6.YearDay\n7.GoodBye!

\n");

printf("Pleaseinputanumberwhichisbetween1and7:

");

fflush(stdin);

scanf("%d",&ch1);

switch(ch1)

{

case1:

findnum();break;

case2:

findroot(gen,-8.0,8.0);printf("一共有%d个解:

x1=%fx2=%fx3=%f\nPressanykeytoreturn.\n",count2,gen[0],gen[1],gen[2]);getch();break;

case3:

detective();break;

case4:

printf("地里一共有%d个玉米\nPressanykeytoreturn.\n",(2*(bear(9)+1)));getch();break;

case6:

printf("\n输入年份:

");

fflush(stdin);scanf("%d",&year);yearday(year);printf("\nPressanykeytoreturn.\n");getch();break;

case5:

break;

case7:

printf("goodbye!

");t1=0;break;

default:

printf("Only1~7,please!

Pressanykeytoreturn.\n");getch();continue;

}

}

}

 

intpanduan(ints[10],intx)

{

intt;

for(t=0;t

{

if(s[x]==s[t])return1;

}

return0;

}

 

voidfindnum()

{

inta[10],count=0;

longintji=1;

for(a[0]=1;a[0]<=9;a[0]++)

for(a[1]=0;a[1]<=9;a[1]++)

{if(panduan(a,1))continue;

for(a[2]=0;a[2]<=9;a[2]++)

{if(panduan(a,2))continue;

for(a[3]=0;a[3]<=9;a[3]++)

{if(panduan(a,3))continue;

for(a[4]=0;a[4]<=9;a[4]++)

{if(panduan(a,4))continue;

for(a[5]=0;a[5]<=9;a[5]++)

{if(panduan(a,5))continue;

for(a[6]=1;a[6]<=9;a[6]++)

{if(panduan(a,6))continue;

for(a[7]=0;a[7]<=9;a[7]++)

{if(panduan(a,7))continue;

for(a[8]=0;a[8]<=9;a[8]++)

{if(panduan(a,8))continue;

for(a[9]=0;a[9]<=9;a[9]++)

{

{if(panduan(a,9))continue;

if(100*a[0]+10*a[1]+a[2]+100*a[3]+10*a[4]+a[5]!

=1000*a[6]+100*a[7]+10*a[8]+a[9])continue;

printf("%d%d%d+%d%d%d=%d%d%d%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);

count++;

}

}

}

}

}

}

}

}

}

}

printf("Thereare%ldpossibleanswersinall.\nPressanykeytoreturn.",count);

getch();

}

 

floathanshu(floatx)

{

floatjie;

jie=x*x*x-3*x-1;

returnjie;

}

 

floatqiudao(floatx)

{

floatdao;

dao=3*x*x-3;

returndao;

}

voidfindroot(floatgen[],floatx1,floatx2)

{

floatnear1,l=x1,h=x2,j,d;

intkey1=-1;

near1=(l+h)/2;

j=hanshu(near1);

while

(1)

{

d=qiudao(near1);

near1=near1-j/d;

j=hanshu(near1);

printf("x=%lf,y=%lf\n",near1,j);

if(near1>h||near1

if(j<0.0001&&j>-0.0001){key1=1;gen[count2++]=near1;break;}

}

if(key1==1)

{

findroot(gen,near1,x2);

findroot(gen,x1,near1);

}

elsereturn;

}

voiddetective()

{

inttemp1,temp2;

intpai3,pai5;

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

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

{

temp1=1100*pai3+11*pai5;

temp2=(int)sqrt(temp1);

if(temp2*temp2==temp1)printf("车牌号为:

31%d%d%d%d\n",pai3,pai3,pai5,pai5);

elsecontinue;

}

printf("Pressanykeytoreturn.");

getch();

}

 

intbear(intdays)

{

if(days==1)return1;

elsereturn(2*(bear(days-1)+1));

}

 

intisleap(intyear)

{

intleap=NO;

if(year%4==0&&year%100!

=0||year%400==0)leap=YES;

returnleap;

}

 

intweek_of_newyears_day(intyear)

{

intn=year-2000,leaps_num;

if(year>2000)

{

leaps_num=1+(n-1)/4-(n-1)/100+(n-1)/400;

n=n+leaps_num-1;

n=n%7;

returnn;

}

if(year==2000)return6;

if(year<2000)

{

leaps_num=(n+1)/4-(n+1)/100+(n+1)/400;

n=n+leaps_num;

n=6+n%7;

returnn;

}

return0;

}

voidyearday(intyear)

{

intmonth,day,weekday,len_of_month,i;

weekday=week_of_newyears_day(year);

for(month=1;month<=12;month++)

{

printf("\n%d年%d月\n",year,month);

printf("---------------------------------\n");

printf("SUMMONTUEWEDTHUFRISAT\n");

printf("---------------------------------\n");

for(i=0;i

if(month==4||month==6||month==9||month==11)len_of_month=30;

elseif(month==2)

{

if(isleap(year))

len_of_month=29;

else

len_of_month=28;

}

else

len_of_month=31;

for(day=1;day<=len_of_month;day++)

{

if(day>9)

printf("%2d",day);

else

printf("%1d",day);

weekday++;

if(weekday==7){weekday=0;printf("\n");}

}

printf("\n");

}

}

【五.运行结果】

1.FindNum

2.FindRoot

3.Detective

4.Bear

5.Curve

6.YearDay

7.GoodBye!

Pleaseinputanumberwhichisbetween1and7:

1

246+789=1035

249+786=1035

264+789=1053

269+784=1053

284+769=1053

286+749=1035

289+746=1035

289+764=1053

324+765=1089

325+764=1089

342+756=1098

346+752=1098

347+859=1206

349+857=1206

352+746=1098

356+742=1098

357+849=1206

359+847=1206

364+725=1089

365+724=1089

423+675=1098

425+673=1098

426+879=1305

429+876=1305

432+657=1089

437+589=1026

437+652=1089

439+587=1026

452+637=1089

457+632=1089

473+589=1062

473+625=1098

475+623=1098

476+829=1305

479+583=1062

479+826=1305

483+579=1062

487+539=1026

489+537=1026

489+573=1062

537+489=1026

539+487=1026

573+489=1062

579+483=1062

583+479=1062

587+439=1026

589+437=1026

589+473=1062

623+475=1098

624+879=1503

625+473=1098

629+874=1503

632+457=1089

637+452=1089

652+437=1089

657+432=1089

673+425=1098

674+829=1503

675+423=1098

679+824=1503

724+365=1089

725+364=1089

742+356=1098

743+859=1602

746+289=1035

746+352=1098

749+286=1035

749+853=1602

752+346=1098

753+849=1602

756+342=1098

759+843=1602

764+289=1053

764+325=1089

765+324=1089

769+284=1053

784+269=1053

786+249=1035

789+246=1035

789+264=1053

824+679=1503

826+479=1305

829+476=1305

829+674=1503

843+759=1602

847+359=1206

849+357=1206

849+753=1602

853+749=1602

857+349=1206

859+347=1206

859+743=1602

874+629=1503

876+429=1305

879+426=1305

879+624=1503

Thereare96possibleanswersinall.

Pressanykeytoreturn.

1.FindNum

2.FindRoot

3.Detective

4.Bear

5.Curve

6.YearDay

7.GoodBye!

Pleaseinputanumberwhichisbetween1and7:

2

x=-0.333333,y=-0.037037

x=-0.347222,y=-0.000196

x=-0.347296,y=0.000000

x=2.762340,y=11.791083

x=2.169573,y=2.703559

x=1.926472,y=0.370286

x=1.880948,y=0.011883

x=1.879387,y=0.000014

x=3.448102,y=29.651591

x=2.540444,y=7.774325

x=2.065286,y=1.613427

x=1.900587,y=0.163600

x=1.879711,y=0.002475

x=1.879385,y=0.000001

x=-1.532097,y=-0.000031

x=-2.931592,y=-17.399994

x=-2.167854,y=-4.684463

x=-1.745783,y=-1.083378

x=-1.569432,y=-0.157397

x=-1.533573,y=-0.006008

x=-1.532091,y=-0.000010

x=1.879442,y=0.000428

x=-3.308333,y=-27.284940

x=-2.393812,y=-7.535910

x=-1.862778,y=-1.875395

x=-1.609682,y=-0.341762

x=-1.538082,y=-0.024389

x=-1.532129,y=-0.000163

x=-1.532089,y=0.000000

一共有3个解:

x1=-0.347296x2=1.879387x3=-1.532091

Pressanykeytoreturn.

1.FindNum

2.FindRoot

3.Detective

4.Bear

5.Curve

6.YearDay

7.GoodBye!

Pleaseinputanumberwhichisbetween1and7:

3

车牌号为:

310000

车牌号为:

317744

Pressanykeytoreturn.

 

1.FindNum

2.FindRoot

3.Detective

4.Bear

5.Curve

6.YearDay

7.GoodBye!

Pleaseinputanumberwhichisbetween1and7:

4

地里一共有1534个玉米

Pressanykeytoreturn.

1.FindNum

2.FindRoot

3.Detective

4.Bear

5.Curve

6.YearDay

7.GoodBye!

Pleaseinputanumberwhichisbetween1and7:

6

输入年份:

2005

2005年1月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

1

2345678

9101112131415

16171819202122

23242526272829

3031

2005年2月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

12345

6789101112

13141516171819

20212223242526

2728

2005年3月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

12345

6789101112

13141516171819

20212223242526

2728293031

2005年4月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

12

3456789

10111213141516

17181920212223

24252627282930

 

2005年5月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

1234567

891011121314

15161718192021

22232425262728

293031

2005年6月

---------------------------------

SUMMONTUEWEDTHUFRISAT

---------------------------------

1234

567891011

12131415161718

19202122232425

2627282930

2005年7月

---------------------------------

SUMMONTUE

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

当前位置:首页 > 高中教育 > 其它课程

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

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