《C语言程序设计》课程设计报告.docx

上传人:b****1 文档编号:10483605 上传时间:2023-05-26 格式:DOCX 页数:27 大小:182.30KB
下载 相关 举报
《C语言程序设计》课程设计报告.docx_第1页
第1页 / 共27页
《C语言程序设计》课程设计报告.docx_第2页
第2页 / 共27页
《C语言程序设计》课程设计报告.docx_第3页
第3页 / 共27页
《C语言程序设计》课程设计报告.docx_第4页
第4页 / 共27页
《C语言程序设计》课程设计报告.docx_第5页
第5页 / 共27页
《C语言程序设计》课程设计报告.docx_第6页
第6页 / 共27页
《C语言程序设计》课程设计报告.docx_第7页
第7页 / 共27页
《C语言程序设计》课程设计报告.docx_第8页
第8页 / 共27页
《C语言程序设计》课程设计报告.docx_第9页
第9页 / 共27页
《C语言程序设计》课程设计报告.docx_第10页
第10页 / 共27页
《C语言程序设计》课程设计报告.docx_第11页
第11页 / 共27页
《C语言程序设计》课程设计报告.docx_第12页
第12页 / 共27页
《C语言程序设计》课程设计报告.docx_第13页
第13页 / 共27页
《C语言程序设计》课程设计报告.docx_第14页
第14页 / 共27页
《C语言程序设计》课程设计报告.docx_第15页
第15页 / 共27页
《C语言程序设计》课程设计报告.docx_第16页
第16页 / 共27页
《C语言程序设计》课程设计报告.docx_第17页
第17页 / 共27页
《C语言程序设计》课程设计报告.docx_第18页
第18页 / 共27页
《C语言程序设计》课程设计报告.docx_第19页
第19页 / 共27页
《C语言程序设计》课程设计报告.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《C语言程序设计》课程设计报告.docx

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

《C语言程序设计》课程设计报告.docx

《C语言程序设计》课程设计报告

《C语言程序设计》

课程设计报告

(2013—2014学年第3学期)

题目:

C语言课程设计

专业:

软件工程

班级:

软件工程技术2班

姓名学号:

1

林燕萍

指导教师:

吴芸

成绩:

计算机科学与技术系

2014年6月23日

一、课程设计的目的与要求………………………………………1

二、方案实现与调试……………………………………………3

2.1掷骰子游戏…………………………………………………5

2.2射击游戏……………………………………………………7

2.3计算存款本息之和………………………………………8

2.4肇事逃逸…………………………………………………10

2.5礼炮…………………………………………………12

2.6汽车加油…………………………………………………14

2.7大优惠…………………………………………………16

2.8金币…………………………………………………19

三、课程设计分析与总结…………………………………………23

附录程序清单…………………………………………………25

一、课程设计的目的与要求(含设计指标)

C语言是一种编程灵活,特色鲜明的程序设计语言。

C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。

这是学习语言的最终目的。

结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。

达到如下目的:

1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识;

3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。

编写程序要求遵循如下基本要求:

①模块化程序设计

②锯齿型书写格式

③必须上机调试通过

二、方案实现与调试

2.1掷骰子游戏

2.1.1题目内容的描述

1)两人轮流掷骰子,每次掷两个,每人最多掷10次。

2)将每人每次的分值累加计分

3)当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。

4)结束条件:

当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。

最后显示双方分数并判定优胜者。

2.1.2输入数据类型、格式和内容限制和输出数据的说明

数据类型:

整型;内容限制:

随机数的产生;输入数据结果:

胜利的一方

2.1.3主要模块的算法描述

本算法的思路过程:

首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。

程序流程图

图1掷骰子游戏

2.1.4调试过程及实验结果

编辑过程中遇到的困难有:

编程思路正确,但是无法正确编写出程序和编程过程缺乏。

图2掷骰子游戏

2.2射击游戏

2.2.1题目内容的描述

在程序运行时屏幕上方第一行随机出现一个符号,要求游戏者输入一个1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底端的该整数列向上移动,若移动到屏幕的顶端能撞上符号,则游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输。

提示:

1)输入符号可以采用printf("%c",'\1')

2)显示*号向上移动:

输出一些空行;输出*号;以循环的方式增加延时(for(i=0;i<100000;i++););clrscr()清屏重新绘制*号。

2.2.2输入数据类型、格式和内容限制和输出数据的说明

System(“cls”);清楚屏幕,

2.2.3主要模块的算法描述

本算法的思路过程:

首先清楚屏幕,然后循环每行输出*,依次循环,判断是否击中目标,最后5次输入结束,或者击中目标结束。

程序流程图

图3射击游戏

2.2.4调试过程及实验结果

该程序在调试过程中出现的问题是:

该题中大体循环是以次数,还是循环的结果作为判断,弄不清楚

图4射击游戏

2.3计算存款本息之和:

以“存款利率”为关键字上网搜索目前我国整存整取不同期限我国的银行存款利率,只计算一年(3%)、三年(4.25%)和五年(4.75%)三种期限。

问题:

1)要求输入存钱的本金和期限,求到期能从银行得到的利息与本金合计。

2)假设存款期限为三十年本金为10万,比较一年、三年和五年滚存三十年后的本息金额。

261036.844332020.963359146.175

*

1)数据类型:

长整型;

2)内容限制:

键入本金与年限;

3)输出数据:

本息和PI

2.3.3主要模块的算法描述

本算法的语言描述:

输入限定之内的年份与存款金额,选择对应的年利率计算本息和

程序流程图

 

图5计算存款本息之和

2.3.4调试过程及实验结果

图6计算存款本息之和

图7计算存款本息之和

2.4肇事逃逸

2.4.1题目内容的描述

某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提供信息如下:

1)车牌号后两位相同;

2)车牌号前两位相同;

3)车牌号是一个整数的平方。

请编程查出肇事逃逸车辆的车牌号。

2.4.2输入数据类型、格式和内容限制和输出数据的说明

1)数据类型:

整型;2)内容限制:

前两位相同,后两位相同,整数的平方;3)输出数据:

四位整数

2.4.3主要模块的算法描述

本算法的思路描述:

前两位,后两位相同,则前两位用i表示,后两位用均表示,用k是100以内的两位整数,l表示这个四位数,用循环语句依次判断结果适合公式:

k*k=l=1000*i+100*i+10*j+j,即为肇事车牌号!

程序流程图

图8肇事逃逸

2.4.4调试过程及实验结果

实验中所遇到的困难是:

书写代码时,定义四位车牌号为l,由于字母i与数字1比较像,结果导致混淆。

图9肇事逃逸

2.5礼炮:

2.5.1题目内容的描述

鸣放礼炮起源于英国。

据说400多年前英国海军用的是火炮。

当战舰进入友好国家的港口之前,或在公海上与友好国家的舰船相遇时,为了表示没有敌意,便把船上大炮内的炮弹统统放掉,对方的海岸炮舰船也同样做以表示回报。

这种做法以后就逐渐成为互致敬意的一种礼仪。

由于当时最大的战舰装有大炮21门,所以鸣炮21响就成了一种最高礼节。

有四艘战舰ABCD开始鸣放礼炮各21响,已知A战舰每隔5秒放一次,B战舰每隔6秒放一次,C战舰每隔7秒放一次,D战舰每隔8秒放一次.假设各炮手对时间掌握非常准确,请问观众共可以听到几次礼炮声?

2.5.2输入数据类型、格式和内容限制和输出数据的说明

2.5.3主要模块的算法描述

本算法的思路过程:

根据条件“A战舰每隔5秒放一次,B战舰每隔6秒放一次,C战舰每隔7秒放一次,D战舰每隔8秒放一次”确定可能性!

依次判断,累计听到的次数,得出结果!

程序流程图

图10礼炮

2.5.4调试过程及实验结果

程序在调试过程中出现的问题是:

编码时要注意“||”,“&&”

图11礼炮

2.6汽车加油

*2.6.1题目内容的描述

一辆汽车加满油后可行驶n公里。

旅途中有若干个加油站。

设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。

输入:

第一行有2个正整数N和K(1<=N<=100,1<=K<=100),表示汽车加满油后可行驶N公里,且旅途中有K个加油站。

接下来的1行中,有K+1个整数,表示第K个加油站与第K-1个加油站之间的距离。

第0个加油站表示出发地,汽车已加满油。

第K+1个整数表示第K个加油站与目的地的距离。

输出:

将编程计算出的最少加油次数输出。

如果无法到达目的地,则输出NoSolution。

(注意:

No和Solution之间有一个空格)。

例如:

输入:

88

323654272

输出:

5

2.6.2输入数据类型、格式和内容限制和输出数据的说明

1)数据类型:

数组类型;

2)内容限制:

键入数据:

3)用到的主要语句:

循环条件判断;

4)输出数据:

加油次数(整型)

2.6.3主要模块的算法描述

本算法的语言描述是:

按题目要求输入数据;首先判断可行驶的路程是否足够汽车到达加油站;如果不能到达,则需要加油,在此处记录一次并循环;得出累计加油次数之和算得出结果。

程序流程图

 

图12礼炮

*2.6.4调试过程及实验结果

实验中所遇到的困难是:

循环条件判断错误。

图13礼炮

2.7大优惠

2.7.1题目内容的描述

中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?

输入的测试数据为一行,实例包括2个整数M,K(2<=K<=M<=1000)。

输出一个整数,表示M元可以用的天数。

101011

502052

2.7.2输入数据类型、格式和内容限制和输出数据的说明

整型,算法的应用,内容数字的限定;

2.7.3主要模块的算法描述

程序流程图

图14

–简要的语言描述

思考数据间的关系;

分析K与天数的关系;

按M值递减的方式运算;

2.7.4调试过程及实验结果

实验中所遇到的困难是:

没有注意到题目中给定的限制范围。

注意大小写

图15

2.8金币

2.8.1题目内容的描述

国王用金币奖励他忠诚的侍从。

第一天侍从工作结束后,国王奖励了他

一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励

了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一

天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第

九天,第十天)的每一天,国王奖励了他四个金币。

这种奖励的模式将是固

定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的

N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。

要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。

2.8.2输入数据类型、格式和内容限制和输出数据的说明

整型,算法的应用,内容数字的限定;

2.8.3主要模块的算法描述

–以程序流程图的方式给出。

 

图16

–简要的语言描述

思考数据间的关系;

分析天数与获得金币的关系(类金字塔);

进行总求和;

2.8.4调试过程及实验结果

实验中所遇到的困难是:

循环条件的出口判断不明确;求和处理不简约;

三、课程设计分析与总结

由于上学期在语言的学习方面还有很多不足之处,因此,这次课程设计显得特别吃力,很多不足都暴露了出来。

不过最终还是基本完成了此次课程设计的内容。

在各个实验中解决问题的基本流程是:

分析问题→分析解决问题的基本流程→选择合适的算法语句→书写程序→调试修改→按要求书写实验报告。

在这些过程中,我认为分析问题的解决流程最为重要,分析好解决流程之后,就可以清楚的知道自己这一步要干什么,下一步要干什么,思路就显得十分清楚,按照这个流程解决问题是我感觉做得好的一面。

不过也有很多不足,例如:

好久没碰C语言了,for,while之类的循环语句的基本功能都模糊了,在选择运用时还要在课本、网络上熟悉这些内容,还有一点就是自己对函数、模块化的思想掌握不够,按照实验要求需运用模块化的方式来解决问题,自己却很少使用这种思想,这就是实验中的不足之处。

总而言通过这次5天的课程设计我进一步了解C程序设计语言的编程功能,握C程序设计语言的相关知识,体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。

众多不足之处我会课余时间进一步加固,力争将这门基础课真正的学好、用好,摆正思想,为以后的专业课的学习大好基础!

最后感谢谢老师的一而再再而三的严格要求及耐心指导,感谢感谢同学们的帮助,谢

谢你们!

附录程序清单

2.1掷骰子游戏:

#include

#include

#include

voidmain()

{

inti,j,k,b,n,m,add1=0,add2=0;

srand((unsigned)time(NULL));//生成随机数发生器

for(i=1;i<11;i++)

{

printf("第一个人第%d次投出的数\n",i);

j=rand()%6+1;

printf("%d\n",j);

k=rand()%6+1;

printf("%d\n",k);

if(k==j==6)add1=add1+8;

if(k==j==5||k==j==4||k==j==3||k==j==2||k==j==1)

add1=add1+7;

else

if(k>j)

add1=add1+j;

else

add1=add1+k;

printf("第二个人第%d次投出的数\n",i);

m=rand()%6+1;

printf("%d\n",m);//rand()产生随机数-12-

n=rand()%6+1;

printf("%d\n",n);

if(n==6||m==6)add2=add2+8;

if(n==m==5||n==m==4||n==m==3||n==m==2||n==m==1)

add2=add2+7;

else

if(n>m)

add2=add2+m;

else

add2=add2+n;

if(i==6)

if(add1==2*add2||add2==2*add1)

i=10;

}

printf("第一个人分值累加计分%d\n",add1);

printf("第二个人分值累加计数%d\n",add2);

if(add1>add2)

printf("第一个人胜利");

if(add2>add1)

printf("第二个人胜利");

2.2射击游戏

#include

#include

#include

voidmain()

{

inti,j,n,t,m;

longintk;

printf("*****************Welcome*****************");

printf("\nGameBegin:

\n");

srand((unsigned)time(NULL));

n=rand()%80+1;

for(i=0;i

printf("");

printf("%c\n",'\1');

for(m=0;m<5;m++)

{

scanf("%d",&t);

for(j=10;j>0;j--)

{

system("cls");

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

{

if(i==n)printf("%c",'\1');

elseprintf("");

}

for(i=1;i

printf("\n");

for(k=0;k<80;k++)

{

if(k==t)printf("*");

elseprintf("");

}

for(k=0;k<100000;k++);

}

if(t==n)

{

printf("YourWinner\n");

break;

}

if(m==4)

printf("YouLose\n");

}

}

2.3计算存款本息之和

#include

voidmain()

{

floatm,n,PI;//定义m存款本金,n存款年限,

printf("Pleaseinputtheprincipal:

");

scanf("%f",&m);

printf("Pleaseinputtheyears:

");

scanf("%f",&n);

if(n==1)

{

PI=m*(1+0.03*1);

}

elseif(n==3)

{

PI=m*(1+0.425*3);

}

elseif(n==5)

{

PI=m*(1+0.475*5);

}

printf("Yousave:

%f\n",PI);

}

2.3.2

#include

#include

main()

{

floati,save,total,profit,term;

while

(1)

{

printf("total=");

scanf("%f",&total);

if(total==0)

{

break;

}

printf("Pleaseinputtheprincipal:

");

scanf("%f",&save);

printf("Pleaseinputtheyears:

");

scanf("%f",&term);

if(term==5)

{

for(i=1;i<=30;i=i+term)

{

save=0.0475*save*term+save;

}

printf("Yousave:

%f\n",save);

}

elseif(term==3)

{

for(i=1;i<=30;i=i+term)

{

save=0.0425*save*term+save;

}

printf("Yousave:

%f\n",save);

}

else

{

for(i=1;i<=30;i=i+term)

{

save=0.03*save*term+save;

}

printf("Yousave:

%f\n",save);

}

}

}

2.4肇事逃逸

#include

#include

main()

{

inti,j,k,c;

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

{

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

{

c=1000*i+100*i+10*j+j;

for(k=1;k<=(c/2);k++)

{

if((k*k)==c)

printf("肇事逃逸车辆的车牌号为:

%d\n",c);

}

}

}

}

2.5礼炮

#include

#include

main()

{

inti,j=1;

for(i=1;i<=168;i++)

{

if(i<=100)

{

if((i%5==0)||(i%6==0)||(i%7==0)||(i%8==0))j=j+1;

}

elseif(i<=120&&i>100)

{

if((i%6==0)||(i%7==0)||(i%8==0))j=j+1;

}

elseif(i<=140&&i>120)

{

if((i%7==0)||(i%8==0))j=j+1;

}

else

{

if(i%8==0)j=j+1;

}

}

printf("%d\n",j);

}

2.6汽车加油

#include

voidmain()

{

intK,N,i,j,i[999],x=0,y=0;//i表示第几个加油站;j为第K个加油站与第K-1个加油站直接的距离;x表示总距离;*/

printf("输入NK:

");

scanf("%d%d",&N,&K);

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

{

scanf("%d",&j);

l[i]=j;

}

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

{

if(N

{

printf("NoSolution.\n");

break;

}

else

x=x+l[i];

if(N

{

y++;

x=l[i];

}

if(i==K)

printf("输出最少加油次数:

%d\n",y);

}

}

2.7大优惠

#include

main()

{

intM,K,i=0;

printf("PleaseinputMandK\n(2<=K<=M<=1000)\n");

scanf("%d%d",&M,&K);

if(2<=K<=M<=1000)

{

while(M>0)

{

i++;

M=M-1;

if(i%K==0)M=M+1;

}

printf("可用天数%d\n",i);

}

else

{

printf("Inputiserror");

}

}

2.8金币

#include

#include

main()

{

inti,j,money=0,sum=0,days;

printf("pleaseinputdays=");

scanf("%d",&days);

for(i=1;i<=days;i++)

{

for(j=1;j<=i;j++)

{

money=money+i;

sum=sum+1;

if(sum==days)

{

printf("%d\n",money);

break;

}

}

}

}

设计

日志

2014年6月23日

好久没碰C语言了,for,while之类的循环语句的基本功能都模糊了,在选择运用时还要看一下课本,写的代码有很多小细节有缺漏,调试修改了几遍,重新熟悉了C语言。

2014年6月24日

在经过一天的补

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

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2