厦门理工学院C语言课程设计报告
更新时间:2024-02-01 14:28:01 阅读量: 教育文库 文档下载
《C语言程序设计》 课程设计报告
(2012— 2013学年 第 2 学期)
专 业: 班 级: 姓名学号: 指导教师: 成 绩:
计算机科学与技术系
2013 年 6 月 27 日
1
目 录
一. 课程设计的目的与要求(含设计指标) ................................................................................ 3
1.实验目的 ................................................................................................................................ 3 2.设计要求 ................................................................................................................................ 3 3.课程设计报告(按《C语言程序设计课程设计报告》格式要求完成) ........................ 3 4.检查标准 ................................................................................................................................ 4 二. 方案实现与调试 ........................................................................................................................ 4
2.1 题目:①掷骰子游戏: ...................................................................................................... 4 2.1.1算法描述及实验步骤 ...................................................................................................... 4 2.1.2调试过程及实验结果 ...................................................................................................... 6 2.2题目:③计算存款本息之和: ......................................................................................... 7 2.2.1算法描述及实验步骤 ...................................................................................................... 7 2.2.2调试过程及实验结果 ...................................................................................................... 8 2.3题目:④肇事逃逸: ......................................................................................................... 9 2.3.1算法描述及实验步骤 ...................................................................................................... 9 2.3.2调试过程及实验结果 .................................................................................................... 11 2.4题目:⑥汽车加油: ....................................................................................................... 11 2.4.1算法描述及实验步骤 .................................................................................................... 11 2.4.2调试过程及实验结果 .................................................................................................... 13 2.5题目:⑧大优惠: ........................................................................................................... 13 2.5.1算法描述及实验步骤 .................................................................................................... 14 2.5.2调试过程及实验结果 .................................................................................................... 15 2.6题目:⑨金币: ............................................................................................................... 15 2.6.1算法描述及实验步骤 .................................................................................................... 16 2.6.2调试过程及实验结果 .................................................................................................... 16 2.7提高题:毕业设计论文管理系统设计: ....................................................................... 17 2.7.1算法描述及实验步骤 .................................................................................................... 18 2.7.2调试过程及实验结果 .................................................................................................... 21 三.课程设计分析与总结 ............................................................................................................. 22 四. 源程序清单 .............................................................................................................................. 22
①掷骰子游戏: ..................................................................................................................... 22 ③计算存款本息之和 ............................................................................................................. 24 ④肇事逃逸 ............................................................................................................................. 25 ⑥汽车加油 ............................................................................................................................. 26 ⑧大优惠 ................................................................................................................................. 28 ⑨金币..................................................................................................................................... 29 提高题:毕业设计论文管理系统设计 ................................................................................. 29 五. 设计日志与教师评价 .............................................................................................................. 38
2
(报告正文部分的格式):
(要求:正文部分一律用五号字,宋体,单倍行距。一级大标题靠左,四号,宋体,加粗。二级大标题靠左,小四,宋体,不加粗。) 课程设计的内容如下:
一. 课程设计的目的与要求(含设计指标)
1.实验目的
C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的:
1. 在课程结束之前,让学生进一步了解C程序设计语言的编程功能; 2. 让学生扎实掌握C程序设计语言的相关知识;
3. 通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识
与专业知识有效地结合,更全面系统地了解行业知识。
2.设计要求
根据实验内容的要求自由选定题目。编写程序要求遵循如下基本要求: ? 模块化程序设计 ? 锯齿型书写格式 ? 必须上机调试通过
3.课程设计报告(按《C语言程序设计课程设计报告》格式要求完成)
1、设计目的
2、总体设计(程序设计组成框图、流程图)
3、详细设计、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。
5、源程序清单和执行结果:源程序中应有足够的注释。
3
4.检查标准
1、学生必须编写可运行的程序,对教师的提问能熟练地当面解释清楚,回答的问题和程序运行的结果作为评分的主要衡量标准;(课程设计当周的周三开始逐一检查)
2、按照本文后要求须提交电子内容的清单提交相关内容。
二. 方案实现与调试
2.1 题目:①掷骰子游戏:
两人玩骰子,游戏规则如下:
1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分
3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计
7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%
及以上。最后显示双方分数并判定优胜者。
2.1.1算法描述及实验步骤
4
开始 随机数输入num1,num2 是 num1=num2? 否 num1=num2=6? 是 否 是 num1>num2? 否 sum1+=8 sum1+=7 sum1+=num2 sum1+=sum1 输出得分sum1 结束
5
开始 随机数输入num3,num4 是 num3=num4? 否 num3=num4=6? 是 否 是 num3>num4? 否 sum2+=8 sum2+=7 sum2+=num4 sum2+=sum3 输出得分sum2 结束
2.1.2调试过程及实验结果
问题:需要手动输入骰子点数
6
解决方法:引入#include
2.2题目:③计算存款本息之和:
以“存款利率”为关键字上网搜索目前我国整存整取不同期限我国的银行存款利率,只计算一年、三年和五年三种期限。 问题:
1) 要求输入存钱的本金和期限,求到期能从银行得到的利息与本金合计。 2)假设存款期限为三十年本金为10万,比较一年、三年和五年滚存三十年后
的本息金额。
2.2.1算法描述及实验步骤
7
开始 输入money,输入year 是 year=1? year=3? 是 否 money=money*1.0300 money=money*1.0425^3 money=money*1.0475^5 输出money 结束
2.2.2调试过程及实验结果
问题:滚利问题
解决方法:上网查询后,了解每一个期限才能滚利一次。
8
执行结果:
2.3题目:④肇事逃逸:
某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提供信息如下:
1) 车牌号后两位相同; 2) 车牌号前两位相同;
3) 车牌号是一个整数的平方。
请编程查出肇事逃逸车辆的车牌号。
2.3.1算法描述及实验步骤
9
开始 输入i=34 sum sum=i*i num/1000=num00/100&&num000/10==num000? 否 是 输出num i++ 是 i<=100? 否 结束 10
2.3.2调试过程及实验结果
问题:无。 解决方法:无。 运行结果:
2.4题目:⑥汽车加油:
一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。输入:第一行有2 个正整数N和K(1 <= N <= 100,1 <= K< = 100),表示汽车加满油后可行驶N公里,且旅途中有K个加油站。接下来的1 行中,有K+1 个整数,表示第K个加油站与第K-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第K+1 个整数表示第K个加油站与目的地的距离。输出:将编程计算出的最少加油次数输出。如果无法到达目的地,则输出 No Solution。(注意:No和Solution之间有一个空格)。
例如:输入:8 8
3 2 3 6 5 4 2 7 2 输出:5
2.4.1算法描述及实验步骤
11
开始 输入可行公里数和加油站数N,K 输入各个加油站的距离a[i] 是 a[i]>N? 否 j=0 i=0 No Solution 否 i<=k? 是 s=s+a[i] s>N? 输出最少加油次数j j=j+1 s=a[i] 结束 12
i=i+1
2.4.2调试过程及实验结果
问题:无。 解决方法:无 运行结果:
2.5题目:⑧大优惠:
中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?
输入的测试数据为一行,实例包括2个整数M, K(2 <= K <= M <= 1000)。输出一个整数,表示M元可以用的天数。
13
2.5.1算法描述及实验步骤
开始 输入m,k 否 2<=k<=m<=1000 是 否 m!=0 是 day%k=0? 否 是 m=m+1 day=day-1 输出day m=m-1 day=day+1 结束
14
2.5.2调试过程及实验结果
问题:无。 解决方法:无。 运行结果:
2.6题目:⑨金币:
国王用金币奖励他忠诚的侍从。第一天侍从工作结束后,国王奖励了他一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币。这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。
15
2.6.1算法描述及实验步骤
开始 输入day i=1 num=0 day>=0 是 num=i^2 num=num+day*(i-1) day=day-1 输入day i=i+1 结束
2.6.2调试过程及实验结果
遇到问题:无。 解决方法:无。
16
运行结果:
2.7提高题:毕业设计论文管理系统设计:
功能:实现我学院的学生毕业设计论文管理,论文的基本信息包括:年级、专业、班级、学生学号、学生姓名、论文题目、指导老师姓名、提交日期、论文简介(50字内)等。 基本要求:
1设计简单的菜单,能够进行系统功能选择。 2实现信息的录入功能。
3在已有信息的基础上添加新的记录。 4删除指定学号的记录。 5修改指定学号的记录 6实现信息的浏览功能 7按学号查询功能 8按学生姓名查询 9 按班级查询功能
10 其他功能:根据题目,自行设计若干查询统计功能;
17
2.7.1算法描述及实验步骤
开始 显示提示 进入菜单 录入 增加 显示 查询 修改 删除 退出 学号 姓名 班级 结束 功能描述: 录入功能:
进入录入功能,首先进入输入学生人数输入窗口
,输入人数后进入论文信息录入,输入完毕后按回车,如图(1)所
示。
18
图(1)
增加:
致,但不会覆盖原有的信息。 显示:示
,显示出目前所录入的所有学生的论文信息,如图(2)所在原有的记录上添加学生论文信息,录入步骤与录入功能一
图(2)
查询:
A.
图(3)所示
通过输入学号查找学生论文信息,显示结果如
19
图(3)
B.C.
通过输入学生姓名查找相应学生的论文信息,步骤与A一致 通过输入班级来查找学生的论文信息,步骤与A一致
修改:
进入修改,如图(4)
输入要修改学生的序号即可
图(4)
删除:
输入要删除的学生的序号
即可删除该同
学的论文信息,如图(5),然后按y确认,按n取消。
20
图(5)
退出:
退出程序。
2.7.2调试过程及实验结果
出现问题:在子模块删除中的确认输入y/n中,无法自动转换为小写字母。 解决:使用toupper(getch())=='Y'转换 运行结果:
21
三.课程设计分析与总结
二十六个字母,十个阿拉伯数字,外加一些常用字符,简单得掉渣,地球人都懂,可一组合成C语言,强大而神秘,那些字符如毛毛虫般在屏幕上蠕动,还看着,老眼便昏花,恨不得拿出杀虫剂,几下狂喷,看你行还是我强。只不过,这不是毛毛虫的一生,化蛹成蝶才是毛毛虫一生追求,生命最美丽的时刻。当程序运行出正确答案,当程序可以实现论文系统的时候,字符不在是字符,字符已经脱text成exe了。
刚上机的第一天,恍若又回到了刚接触到C语言的时候,除了int除了char,其他基本是它认识我,我不认识它,甚至连头文#include
总之,这次课程设计学到了两点:一是把C语言简单的编程在学一遍;二是,指针、链表等的章节必须课后要花时间再学,因为下个学期还有数据结构。
四. 源程序清单
①掷骰子游戏:
#include
#include
int i;
int num1,num2,num3,num4,sum1=0,sum2=0;
srand( (unsigned)time( NULL ) );
for(i=1;i<=10;i++)
22
num1=rand()%6+1; num2=rand()%6+1; if(num1==num2) { if(num1==6&&num2==6)
sum1+=8;
else sum1+=7;
} else { if(num1>num2)
sum1+=num2; else sum1+=num1;
}
num3=rand()%6+1; num4=rand()%6+1; if(num3==num4) { if(num3==6&&num4==6)
sum2+=8; else sum2+=7;
} else { if(num3>num4)
sum2+=num4;
else sum2+=num3;
23
{
}
printf(\第%d次掷出点数为:%d %d A总得分:%d\\nB第%d次掷出点数
为:%d %d B总得分:%d\\n\ if(i>=5&&((float)(sum1-sum2)/sum2>=0.3||(float)(sum2-sum1)/sum1>=0.3))
break;
}
if(sum1>sum2)
printf(\获胜!\\n\
else if(sum1 printf(\获胜!\\n\ else printf(\平局!\\n\ } ③计算存款本息之和 #include printf(\请输入存款金额:\ scanf(\ printf(\请输入存款期限:\ scanf(\ printf(\请输入要存款的年限:\ scanf(\ switch(year) 24 { case 1:money=money*1.0300;printf(\年后本息金额 为:%f\\n\ case 3:money=money*pow(1.0425,3);printf(\年后本息金额 为:%f\\n\ case 5:money=money*pow(1.0475,5);printf(\年后本息金额 为:%f\\n\ } printf(\年后本息金额为:%f\\n\} if(year==1) { } { } { } for(i=2;i<=(all/5);i++) money=money*pow(1.0475,5); if(year==5) for(i=2;i<=(all/3);i++) money=money*pow(1.0425,3); if(year==3) for(i=2;i<=all;i++) money=money*1.0300; ④肇事逃逸 #include 25 void main() { } if(((num/1000)==(num00/100))&&((num000/10)==(num000))) } printf(\该车牌号为:闽DT%d\\n\ int i,num; for(i=34;i<100;i++) { num=i*i; ⑥汽车加油 #include int N,K,a[M],i,e; int times(int b,int c,int d[M]); do{ printf(\请输入加满油后可行驶公里数和加油站数:\scanf(\if(K>100||K<1||N>100||N<1) printf(\输入有误请重新输入\\n\ }while(K>100||K<1||N>100||N<1); { printf(\请输入各加油站间的距离:\ 26 for(i=0;i<=K;i++) scanf(\ e=times(N,K,a); if(e!=0) printf(\最少加油次数为:%d\\n\ } } int times(int b,int c,int d[M]) { int i,s=0,j=0; for(i=0;i<=c;i++) { if(d[i]>b) { printf(\ break; } else { for(i=0;i<=c;i++) { s=s+d[i]; if(s>b) { j++; s=d[i]; } } } 27 } } return j; ⑧大优惠 #include int m,k,i,day=1; printf(\请输入m,k (2<=k<=m<=1000) :\ loop:scanf(\ } 28 if(k>m||k<2||m>1000) { } else while(m!=0) { } day--; printf(\可用天数为:%d\\n\ if(day%k==0) m++; printf(\输入有误,请重新输入:\goto loop; m--; day++; ⑨金币 #include int sum(int day) { } int s=0,i; for(i=1;day>=0;i++) { } s=s+day*(i-1); return s; s+=pow(i,2); day=day-i; int day,num; int sum(int day); printf(\请输入工作天数:\scanf(\num=sum(day); printf(\共奖励金币:%d\\n\ 提高题:毕业设计论文管理系统设计 #include 29 #include /*学生论文信息结构体*/ typedef struct { char num[5]; char grade[N]; char discipline[N]; char Class[N]; char number[N]; char studentName[N]; char thesisName[50]; char teacherName[N]; char date[N]; char introduction[100]; }Student; Student stud[M]; int length; int menu(); int enter(Student t[]); int add(Student t[],int n); void list(Student t[],int n); void find(Student t[]); void searchnumber(Student t[],int n); void searchstudentName(Student t[],int n); void searchClass(Student t[],int n); void out(Student t[],int c[],int n); int searchNum(Student t[],int n); void update(Student t[],int n); int delete(Student t[],int n); /*主函数*/ void main() { system(\清屏*/ for(;;)/*无限循环*/ { switch(menu()) { case 1:length=enter(stud);break; /*录入学生论文信息*/ case 2:length=add(stud,length);break; /*增加学生论文信息*/ 30 case 3:list(stud,length);break; /*显示全部学生论文信息*/ case 4:find(stud);break; /*查找学生论文信息*/ case 5:update(stud,length);/*修改学生论文信息*/ case 6:length=delete(stud,length);break; /*删除学生论文信息*/ case 7:exit(0); /*如返回值为6则程序结束*/ } } } /*菜单*/ int menu() { char s[80]; int c; printf(\按任意键进入菜单......\\n\ getchar(); system(\ printf(\菜单*********************\\n\ printf(\ 1.录入学生论文信息\\n\ printf(\ 2.增加学生论文信息\\n\ printf(\ 3.显示学生论文信息\\n\ printf(\ 4.查找学生论文信息\\n\ printf(\ 5.修改学生论文信息\\n\ printf(\ 6.删除学生论文信息\\n\ printf(\ 7.退出\\n\ printf(\ do { printf(\输入你的选择(1~7):\ scanf(\ c=atoi(s); if(c<1||c>7) { printf(\输入有误,请重新输入:\ } }while(c<1||c>7); return c; } /*录入学生信息*/ int enter(Student t[]) { int i,n; system(\ 31 printf(\请输入学生人数\\n\ scanf(\ system(\ printf(\请输入学生论文信息,录完一个按回车\\n\ printf(\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\\n\\n\\n指导老师 日期 内容简介\\n\\n\\n\\n\ printf(\ for(i=0;i /*增加学生论文信息*/ int add(Student t[],int n) { int i,j; system(\ printf(\请输入要增加的学生人数\\n\ scanf(\ system(\ printf(\请输入学生论文信息,录完一个按回车\\n\ printf(\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\\n\\n\\n指导老师 日期 内容简介\\n\\n\\n\\n\ printf(\ for(i=n;i /*显示所有学生论文信息*/ void list(Student t[],int n) { 32 int i; system(\ printf(\**************\\n\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\ printf(\ for(i=0;i /*查找学生论文信息*/ void find(Student t[]) { int i; system(\ printf(\按学号查找\\n\ printf(\按姓名查找\\n\ printf(\按班级查找\\n\ printf(\返回\\n\ scanf(\ switch(i) { case 1:searchnumber(stud,length);break; case 2:searchstudentName(stud,length);break; case 3:searchClass(stud,length);break; case 4:break; } } /*按学号查找*/ void searchnumber(Student t[],int n) { char s[N]; int i,c[M]; 33 system(\ printf(\请输入学号:\ scanf(\ for(i=0;i /*按姓名查找*/ void searchstudentName(Student t[],int n) { char s[N]; int i,c[M]; system(\ printf(\请输入姓名:\ scanf(\ for(i=0;i /*按班级查找*/ void searchClass(Student t[],int n) { char s[N]; int i,c[M]; system(\ printf(\请输入班级:\ scanf(\ for(i=0;i /*信息输出*/ void out(Student t[],int c[],int n) { int i; printf(\**************\\n\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\ 34 printf(\ for(i=0;i /*序号查找*/ int searchNum(Student t[],int n) { char s[N]; int c=-1,i; scanf(\ for(i=0;i /*修改学生论文信息*/ void update(Student t[],int n) { int i; system(\ printf (\请输入想要修改的序号:\ i=searchNum(t,n); if(i==-1) printf(\无记录!\\n\ else { printf (\请输入新的资料\\n\ printf(\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\\n\\n\\n指导老师 日期 内容简介\\n\\n\\n\\n\ printf(\ 35 scanf(\t[i].studentName,t[i].thesisName,t[i].teacherName,t[i].date,t[i].introduction); } getchar(); } /*删除学生论文信息*/ int delete(Student t[],int n) { char s[N]; int i,j; system(\ printf(\请输入删除序号\\n\ i=searchNum(t,n); if(i==-1) printf(\无记录!\\n\ else { printf(\**************\\n\ printf(\序号 年级 专业 班级 学号 姓名 论文题目\\n\ printf(\ printf(\.Class,t[i].number,t[i].studentName,t[i].thesisName); printf(\指导老师 日期 简介\\n\ printf(\ printf(\ printf(\***********\\n\ printf(\你确定要删除这个记录吗?(y/n)\\n\ if(toupper(getch())=='Y') { for(j=i+1;j 36 strcpy(t[j-1].studentName,t[j].studentName); strcpy(t[j-1].thesisName,t[j].thesisName); strcpy(t[j-1].teacherName,t[j].teacherName); strcpy(t[j-1].date,t[j].date); strcpy(t[j-1].introduction,t[j].introduction); } n--; } } getchar(); return n; } 37 五. 设计日志与教师评价 记录每天的主要设计内容、遇到的问题、解决方法及效果,等。 2013-6-24: 发现问题: ①掷骰子游戏:只能手动输入,不能自动生成随机数 ③计算存款本息之和:存款利率问题,滚利问题 完成题目: ④肇事逃逸⑧大优惠 2013-6-25: 解决问题: ①掷骰子游戏:引入#include (注:指导教师评语和成绩所在表格另起一页) 指导教 师 评 语 课程设计 成 绩 指导教师签字 年 月 日 39
正在阅读:
厦门理工学院C语言课程设计报告02-01
新标准英语第五册第六模块第一单元You_can_play_football_well.09-07
咸宁旅游业发展情况汇报10-29
浙大远程会计专业毕业论文格式规范参考03-08
个人辞职申请书精品范文08-02
喜迎十八大01-29
胜似亲人 - 小学四年级作文400字03-20
政治必修四哲学生活第三单元框架12-05
树木照片及养护 - 图文05-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 厦门
- 理工学院
- 语言
- 课程
- 报告
- 设计
- ICHQ9
- 机能实验学习题集
- 水利概预算试题库
- 小学五年级家长座谈会发言稿
- 236条高考英语高频短语及固定搭配大汇总!
- 最新-2018学年第二学期天河区学生期末学业质量测八年级数卷 精品
- 钟洞学区第二届教学节活动方案
- 国有林场森林资源管理中存在的问题及其相应对策研究
- 自控实验指导书
- 乌金木分析报告
- SCI论文写作重要结构2
- 2014-工程材料-学生复习题
- 2018-2019学年人教版八年级英语上册双休滚动作业6
- 宫干四化法
- 零售银行客户经理队伍建设的战略意义
- 三年级2015人教版美术(难忘的朋友)教案
- 铲土运输机械和基础施工机械司机安全技术交底
- 峡江三等施工网技术设计
- 科目四安全文明驾驶知识个人错题集(题库为2017模拟考试1103题)
- OFDM信道估计论文(IP大作业)分析