《c语言程序设计》课程设计(实训)提纲。
一、 意义和目的。
c语言是计算机应用、计算机网络及相关专业的重要专业基础课。通过c语言课程的学习,培养学生逻辑思维和程序思路,为后续课程奠定基础。
学生通过对c语言的学习,已经具备了使用c语言编写简单的应用程序的能力。为了加强程序设计能力,通过课程设计(实训),使学生对c语言有更全面的理解,进一步提高运用c语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。
课程设计目的:
1. 提高用程序设计解决实际问题的能力。
2. 通过提出算法、制定输入输出来设计一个解决方案。
3. 用c语言合理的开放两个简洁有效的程序**来实现该设计。
4. 测试程序是否工作且满足设计指标并评价其效率。
二、 目标。
本课程设计的目的,是使学生应能在以下几方面得以提高:
a、 分析问题。各种简单的与计算机有关的案例中所需要的输出结果,吧大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。
b、 提出算法执行特定任务。模块表示为算法,使用自顶向下或伪**等设计手段将模块细化成更详细的成分,清楚的表明顺序、选择和重复等到控制结构。
c、 把一个算法变为用c语言编写的结构化程序。
d、 把合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。
e、 写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档功能的运行程序。
f、 写出技术文档,对程序中主要标识符的含义或作用加以说明,并提供一个完整的程序流程图。
g、 调试程序、测试数据过程成功。
三、 要求。
参加本课程设计的学生,应当认真完成本课程设计的全部过程,并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。
完成课程设计应提交如下文档(电子版):
1. 程序的总体设计和方法分析。
2. 技术文档。
3. 用户文档。
4. 源程序**清单。
5. 测试数据和测试过程记录。
6. 遇到的问题及解决方法分析。
四、 选题。
每人两个题,其中第一题为指定题目,第二题自拟题目。
第一题:链表操作题。
1、 建立一个链表,然后通过键盘输入不少于十个无序整数,将输入的数据插入链表;
2、 能删除选定数据(如果表中没有此数据,则给出提示);
3、 对形成的链表进得排序(升、降序均可);
4、 能输出排序前、后的链表。
第二题:文件操作,具体题自拟。
如果选题确实有困难的同学,可参考后面参考题目来完成本课程设计。
五、 评价。
评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的电子版文档,严格检查以下各项任务完成情况:
1、 课程设计文档是否齐全。
2、 程序的用户文档。
如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。
3、 问题或任务陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围。)是否正确。
4、 问题的解决方案采取有顶向下设计的形式,使整个解决方案划分成若干模块。
5、 程序完成后的**应当加以注解,最少应清楚指出每一个模块。
6、 用于检查程序的测试数据,或者对一个控制程序给出测试的例程。
7、 程序的技术文档
程序**注解得好,文档也可以是简要的,但是必须包含所用变量的全体清单。
8、 程序顺利执行,结果正确。
参考题目。1、 长整数四则预算。
问题描述】设计任意两个长正整数(小于80位)的加法函数add()和乘法函数mult(),并求任意整数(≤58)的阶乘。
实现提示】用无符号整型或字符数组存储任意长整数。测试数据】
算法介绍:问题描述:编写程序,对给定的n(n≦100),计算并输出k的阶乘k!(k=1,2,…,n)的全部有效数字。
由于要求的整数可能大大超出一般整数的位数,程序用一维数组存储长整数,存储长整数数组的每个元素只存储长整数的一位数字。如有m位成整数n用数组a[ ]存储:
n=a[m]×10m-1+a[m-1]×10m-2+ …a[2]×101+a[1]×100
并用a[0]存储长整数n的位数m,即a[0]=m。按上述约定,数组的每个元素存储k的阶乘k!的一位数字,并从低位到高位依次存于数组的第二个元素、第三个元素……。
例如,5!=120,在数组中的存储形式为:
首元素3表示长整数是一个3位数,接着是低位到高位依次是,表示成整数120。
计算阶乘k!可采用对已求得的阶乘(k-1)!连续累加k-1次后求得。例如,已知4!=24,计算5!,可对原来的24累加4次24后得到120。细节见以下程序。
# include
# include
# define maxn 1000
void pnext(int a[ ]int k)
int *b,m=a[0],i,j,r,carry;
b=(int * malloc(sizeof(int)* m+1));
for ( i=1;i<=m;i++)b[i]=a[i];
for ( j=1;j<=k;j++)
if (carry) a[++m]=carry;
free(b);
a[0]=m;
void write(int *a,int k)
int i;
printf(“%4d!=”k);
for (i=a[0];i>0;i--)
printf(“%d”,a[i]);
printf(“”);
void main()
int a[maxn],n,k;
printf(“enter the number n: “
scanf(“%d”,&n);
a[0]=1;
a[1]=1;
write(a,1);
for (k=2;k<=n;k++)
2、 单词统计。
问题描述】统计某篇英文小数中某些单词的出现次数。
实现提问】英文**存储在一个文本文件中。待统计的词汇集合要一次输入完毕,及统计工作必须在程序的一次运行之后全部完成。输出的每个单词的出现次数。
约定**中的词汇一律不跨行,这样每从文本文件中读入一行,就统计每个单词在这行**现的次数,直到文件结束。
要求在程序运行时才输入文本文件名和要统计的词汇。
测试数据】以c语言源程序模拟英文**。统计某些保留字(如:if、else、for、while等)的出现次数。
3、 保龄球计分。
问题描述】打保龄球使用一个滚球去击撞10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球一次或多次,以击倒的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。
积分规则如下:
1 某一轮的第一次滚球就击倒全部10个瓶,则本轮不在滚球(如是第十轮还需加2次滚球),该轮得分为本次击倒瓶数40与以后2次滚球所击倒瓶数之和。
2 若某一轮的第一次滚球未击倒全部10个球,则对剩下为击倒的瓶在滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不在滚球(若是第10轮还需加1次滚球),该轮得分为这2词击倒瓶数10与以后1次滚球所击倒瓶数之和。
3 若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。
实现提示】1 模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。
2 逐人逐轮逐次输入一次滚球击倒的瓶数。
3 对10人的得分由低到高排序并显示。
4 最后,把排序的存入文件中。
测试数据】自定模拟数据。
4、 学生成绩统计。
问题描述】学期考试结束,统计有n个班某每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不几个人名单。输入输出格式自定。
实现提示】假设某班有:30人(姓名自定)
考试课程有:高中数学、物理、外语、c语言、德育5门课程。
将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面:
1 输入成绩到文件中。
2 输出成绩。
3 输出不及格学生名单。
4 成绩排序。
5 修改记录。
6 删除记录。
7 插入记录等。
主函数中对3个功能选择(菜单),调用对应的函数完成。
测试数据】自定模拟数据。
5、 readme软件的制作。
问题描述】在现代的一些软件中,常常有这样一个程序,它主要显示某些软件的使用方法及注意事项。比如:tc2.0下readme等。设计制作一个有自己特色的说明软件。
实现提示】1 某软件的使用方法及注意事项等内容存储在文件中。
2 使用编写的程序能方便地阅读中的内容。
3 能实现上翻一页、下翻一页、上一行、下一行等操作。
测试数据】以某个语言源程序模拟文件。
6、 编制一个学生的选课及学籍管理程序。
问题描述】现有若干个班级的学生,进行下学期课程的选课,假设已经通过文件储存了选课内容的数据库,数据库中包括7门课(课程内容由学生自己定)
第i门课程的接纳的学生数为10×i,i为课程的序号,如第一门课的接纳的学生数为。
10×1,第二门课为10×2,……依此类推,每门课的学分数分别为,现要求每一个学生至少选3门课,最多不超过5门。
实现提示】1) 显示课程内容供学生选择,并能进行选课的操作。
2) 随着学生选课工作的进行,动态更新数据库的内容。
3) 进行学生的最少选课量和最多选课量的控制。
4) 显示所有学生的选课的结果。
5) 把学生所选的课按学分总积分由小到大排列,同样学分按姓名的英文字母排序。
6) 录入学生的各科成绩。
7) 学生的参数有:姓名、学号、性别、总学分、各科成绩、补考情况,请把一门和三门功课不及格的学生的姓名列出,并自动生成补考通知书,通知书中要有学生的姓名、学号、不及格的科目及补考时间(由编程者自定)
测试数据】7、一个用于医院门诊候诊的队列管理程序。
问题描述】要求采用先来先就诊的排队方式(就诊顺序与**单编号无关),假设**时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下的男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:
实现提示】1——**。
2——叫号。
3——分诊室。
4——显示各诊室队列信息。
5——统计当天就真的患者情况(要求按性别进行统计和按任意年龄区段进行统计)
6——结束程序。
选1时,提示用户在一行内输入姓名及**单编号。
选2时,显示排在队列中第一位患者姓名、**单编号,并将其从**序列中删除。
选3时,进行诊室分配。
选4时,按队列顺序显示个诊室排队人的姓名、**单编号及所在诊室。
选5时,进行两种统计方法的选择,并进行必要的统计计算。
选6时,退出程序的运行。
要求1-5中每一个步骤完成后都能显示此选择菜单。
测试数据】自拟定。
附:课程设计样式。
编写课程设计说明说书。
第一页。第二页。
第三页。六、 准备答辩。
设计完成后,应做好答辩的准备,能分析设计的优、缺点发现今后在设计中应注意的问题,总结初步掌握的设计方法和步骤,进一步把不懂的或尚未考虑到的问题弄懂,以取得更大的收获。
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...