厦门理工学院11级C语言C语言程序设计课程设计报告汇总.docx
- 文档编号:3810406
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:20
- 大小:86.72KB
厦门理工学院11级C语言C语言程序设计课程设计报告汇总.docx
《厦门理工学院11级C语言C语言程序设计课程设计报告汇总.docx》由会员分享,可在线阅读,更多相关《厦门理工学院11级C语言C语言程序设计课程设计报告汇总.docx(20页珍藏版)》请在冰豆网上搜索。
厦门理工学院11级C语言C语言程序设计课程设计报告汇总
《C语言程序设计》
课程设计报告
(2011—2012学年第1学期)
题目:
专业:
班级:
姓名学号:
指导教师:
成绩:
计算机科学与技术系
2011年12月31日
目录
一、课程设计的目的与要求………………………………………1
二、方案实现与调试……………………………………………2
2.1掷骰子游戏…………………………………………………2
2.2射击游戏…………………………………………………3
2.3汽车加油…………………………………………………4
2.4大优惠………………………………………………………5
2.5金币…………………………………………………………6
2.6小型图书馆系统…………………………………………7
三、课程设计分析与总结…………………………………………9
附录程序清单…………………………………………………10
二、设计要求
根据实验内容的要求自由选定题目。
编写程序要求遵循如下基本要求:
●模块化程序设计
●锯齿型书写格式
●必须上机调试通过
二、方案实现与调试
2.1.1掷骰子游戏
•2.1.1题目内容的描述
两人玩骰子,游戏规则如下:
1)两人轮流掷骰子,每次掷两个,每人最多掷10次。
2)第一个人投出的数,第二个人投出的数将每人每次的分值累加计分
3)当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4)结束条件:
当双方都掷10次或经过5次后一方累计分数为另一方的两倍。
最后显示双方分数并判定优胜者。
•2.1.2输入数据类型、格式和内容限制和输出数据的说明
数据类型:
整型;内容限制:
随机数的产生;输入数据结果:
胜利的一方
•2.1.3主要模块的算法描述
思路过程:
1.随机产生随机数
2.进行算法输出数值
3.执行条件判断输入结果
4.比较结果,判断胜利的一方
2.1.4调试过程及实验结果
编辑过程中遇到的困难有:
1.编程思路不正确,导致只有部分结果满足要求。
2.编程过程缺乏改错耐心。
实验结果图示如下:
2.2射击游戏
•2.2.1题目内容的描述
在程序运行时屏幕上方第一行随机出现一个符号,要求游戏者输入一个1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底端的该整数列向上移动,若移动到屏幕的顶端能撞上符号,则游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输。
•2.2.2输入数据类型、格式和内容限制和输出数据的说明
System(“cls”);清楚屏幕,
•2.2.3主要模块的算法描述
清楚屏幕
然后循环每行输出*
依次循环,判断是否击中目标
5次输入结束,或者击中目标结束
•2.2.4调试过程及实验结果
该题中大体循环是以次数,还是循环的结果作为判断,弄不清楚
记录程序执行的结果。
2.3汽车加油
•2.3.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之间有一个空格)。
•2.3.2输入数据类型、格式和内容限制和输出数据的说明
数组类型,循环条件判断
•2.3.3主要模块的算法描述
按题目格式输入数据;
首先进行判断可行驶的路程是否足够汽车到达加油站;
如果不能到达,则需要加油,此处记录一次并循环;
得出结果;
•2.3.4调试过程及实验结果
2.4大优惠
•2.4.1题目内容的描述
中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?
•2.4.2输入数据类型、格式和内容限制和输出数据的说明
整型,算法的应用,内容数字的限定;
•2.4.3主要模块的算法描述
思考数据间的关系;
分析K与天数的关系;
按M值递减的方式运算;
•2.4.4调试过程及实验结果
实验中所遇到的困难是:
没有注意到题目中给定的限制范围。
实验结果图示:
2.5大优惠
•2.5.1题目内容的描述
国王用金币奖励他忠诚的侍从。
第一天侍从工作结束后,国王奖励了他一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币。
这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。
要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。
•2.5.2输入数据类型、格式和内容限制和输出数据的说明
整型,算法的应用,内容数字的限定;
•2.5.3主要模块的算法描述
思考数据间的关系;
分析天数与获得金币的关系(类金字塔);
进行总求和;
•2.5.4调试过程及实验结果
循环条件的出口判断不明确;
求和处理不简约;
实验结果图示:
2.6小型图书管理系统设计
•2.6.1题目内容的描述
功能:
实现某班级的图书信息管理,图书的基本信息包括书号、书名、作者、单价、数量和简介(50字内)等。
•2.6.2系统功能说明
1设计简单的菜单,能够进行系统功能选择。
2实现信息的录入功能。
3在已有信息的基础上添加新的记录。
4删除指定书号的记录。
5修改指定书号的记录
6实现信息的浏览功能
7按书号查询功能
•2.6.3输入数据类型、格式和内容限制和输出数据的说明
结构体:
分割成几块
分别对其定义,并实现功能;
最后实现菜单,执行选择;
•2.6.4系统主要模块的算法描述
–结构体:
分割成几块
分别对其定义,并实现功能;
最后实现菜单,执行选择;
•2.6.5调试过程及实验结果
详细记录程序在调试过程中出现的问题及解决方法。
记录程序执行的结果。
三、课程设计分析与总结
学习C语言的过程中,深刻认识到实践是最好的老师,对于一个初学者来说,编程经验好比身边携带的熟悉事物,必须掌握熟悉之后才能有所发挥,有所作为。
从实践中的点滴积累起来的,就是所谓的经验,通过不断的上机编程,不但能够几下那些常用的函数和代码,熟悉程序的结构,从而使我们暂时脱离课本的本来编程可能够积累更多的敬仰。
提高程序设计能力的一个重要的途径就是学习书上别人编写的程序,从中掌握解决问题的核心方法和关键步骤。
只有知道语言的特点和构造后,才能达到自己编写的程度,并在不断的编程过程中学习,提高。
附录:
源程序清单
第一题:
#include
#include
#include
voidmain()
{
inti,j,k,b,n,m,add1=0,add2=0;
srand((unsigned)time(NULL));//生成随机数发生器
for(i=1;i<11;i++)
{
for(b=1;b<60000000;b++);
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()产生随机数
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("第二个人胜利");
}第二题:
#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"); } } 第三题: #include voidmain() { intk,i,n,a,x[999],m=0,o=0; printf("输入: "); scanf("%d%d",&n,&k); for(i=0;i<=k;i++) { scanf("%d",&a); x[i]=a; } for(i=0;i<=k;i++) { if(n { printf("NoSolution.\n"); break; } else m=m+x[i]; if(n { o++; m=x[i]; } if(i==k) printf("输出: %d\n",o); } } 第四题: #include voidmain() { intK,M,i=0; printf("PleaseinputKandM\n"); scanf("%d%d",&K,&M); if(2<=K&&K<=M&&M<=1000) { while(M>0) {i++; M=M-1; if(i%K==0)M=M+1; } printf("可用天数%d\n",i); } else printf("Inputiserror"); } 第五题: #include voidmain() { inti,j; intsum=0; printf("Pleaseinputdays\n"); scanf("%d",&j); for(i=1;j! =0;i++) { if(j>=i) sum=sum+i*i,j=j-i; else sum=sum+j*i,j=0; } printf("得到的金币%d\n",sum); } 第六题: #include #include intsum=0; structbook { intnum; charname[100]; charperson[100]; charabout[100]; intp; intn; }book[1000]; voidnewbook() { inta; system("cls"); printf("\n请输入书号: "); scanf("%d",&a); if(book[a-1].num! =0) { printf("\n该书号已有书\n"); getchar(); return; } else { printf("\n请输入图书内容: \n"); printf("书号: "); scanf("%d",&book[a-1].num); printf("书名: "); scanf("%s",&book[a-1].name); printf("作者: "); scanf("%s",&book[a-1].person); printf("简介: "); scanf("%s",&book[a-1].about); printf("单价: "); scanf("%s",&book[a-1].p); printf("数量: "); scanf("%s",&book[a-1].n); ++sum; return; } } voidfind() { inta; system("cls"); printf("\n请输入您要查找的书号: "); scanf("%d",&a); if(book[a-1].num==0) { printf("无书号信息"); getchar(); return; } printf("书号: "); printf("%d",&book[a-1].num); printf("书名: "); printf("%s",book[a-1].name); printf("作者: "); printf("%s",book[a-1].person); printf("简介: "); printf("%s",book[a-1].about); printf("单价: "); printf("%s",&book[a-1].p); printf("数量: "); printf("%s",&book[a-1].n); getchar(); return; } voidchange() { inta; system("cls"); printf("\n请输入您要查找的书号: "); scanf("%d",&a); if(book[a-1].num==0) { printf("无书号信息"); getchar(); return; } printf("书号: "); printf("%d",book[a-1].num); printf("书名: "); printf("%s",book[a-1].name); printf("作者: "); printf("%s",book[a-1].person); printf("简介: "); printf("%s",book[a-1].about); printf("单价: "); printf("%s",&book[a-1].p); printf("数量: "); printf("%s",&book[a-1].n); printf("输入要修改的内容: \n"); printf("书号: "); scanf("%d",&book[a-1].num); printf("书名: "); scanf("%s",&book[a-1].name); printf("作者: "); scanf("%s",&book[a-1].person); printf("简介: "); scanf("%s",&book[a-1].about); printf("单价: "); scanf("%s",&book[a-1].p); printf("数量: "); scanf("%s",&book[a-1].n); return; } voiddele() { inta; system("cls"); printf("\n请输入您要删除的书号: "); scanf("%d",&a); if(book[a-1].num==0) { printf("无书号信息"); getchar(); return; } printf("书号: "); printf("%d",book[a-1].num); printf("书名: "); printf("%s",book[a-1].name); printf("作者: "); printf("%s",book[a-1].person); printf("简介: "); printf("%s",book[a-1].about); printf("单价: "); printf("%s",&book[a-1].p); printf("数量: "); printf("%s",&book[a-1].n); printf("\n\n按回车删除此书信息\n"); getchar(); book[a-1].num=0; return; } voidlook() { inta; system("cls"); for(a=0;a<1000;a++) { if(book[a-1].num! =0) { printf("书号: "); printf("%d",book[a-1].num); printf("书名: "); printf("%s",book[a-1].name); printf("作者: "); printf("%s",book[a-1].person); printf("简介: "); printf("%s",book[a-1].about); printf("单价: "); printf("%s",&book[a-1].p); printf("数量: "); printf("%s",&book[a-1].n); printf("******************************\n"); } } getchar(); return; } voidmain() { m: intn; system("cls"); printf("*******************************************\n"); printf("图书管理系统\n\n操作选单\n\n"); printf("\t\t1输入图书\t2查找图书\n"); printf("\t\t3修改图书\t4删除旧书\n"); printf("\t\t5浏览图书\t0退出程序\n"); printf("*******************************************\n"); printf("\n请输入选项: "); scanf("%d",&n); switch(n) { case1: newbook();break; case2: find();break; case3: change();break; case4: dele();break; case5: look();break; case0: exit(0);break; } getchar(); gotom; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 厦门 理工学院 11 语言 语言程序设计 课程设计 报告 汇总