高级语言课程设计任务书.docx
- 文档编号:29676587
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:24
- 大小:38.75KB
高级语言课程设计任务书.docx
《高级语言课程设计任务书.docx》由会员分享,可在线阅读,更多相关《高级语言课程设计任务书.docx(24页珍藏版)》请在冰豆网上搜索。
高级语言课程设计任务书
高级语言课程设计指导书
一.课程设计的目的
“高级语言程序设计课程设计”是在学完《高级语言程序设计》之后开设的一门独立的实践性课程,是对高级语言程序设计的综合实践,其目的在于加深对高级语言程序设计的基本思想、基础知识和方法的理解,进一步锻炼分析、解决比较复杂问题的能力,提高学生独立编程的能力,为实际软件开发和后续课程的学习打下坚实的基础。
二.课程设计的基本要求
首先要明确课程设计的目的和重要性,选择适当的题目,分组或独立有计划地按照软件工程的思想,在教师的指导下,对题目进行分析、设计和实现,并按照一定的格式写出设计报告。
在课程设计过程中,要学会如何运用所学知识和技巧,如何查阅、搜集、归纳整理相关资料,注意如何有意思的按照软件工程的基本规范进行分析、设计和实现。
选定题目之后,需要经历下面几个阶段进行课程设计。
1)题目分析:
弄清楚问题到底要干什么,明确设计目标,搜集和查阅相关资料。
2)系统设计:
怎么做才能实现系统的目标。
首先确定问题中有哪些数据,该如何存储,是用多个单个的数组呢,还是用结构体数组,是连续的数组存储,还是不一定连续存储,结构体之间通过指针链接起来呢;数据是怎样输入的,是在运行时通过键盘输入,还是从文件读入,有哪些数据需要输出,输出格式如何,输出到屏幕上还是写到文件中。
然后确定解决该问题有哪些功能模块,每个功能的名字什么,给出对应的函数原型,画出主函数的流程图和典型功能模块的流程图;对所有的功能模块,从主模块,到各个层次的子模块,画出各个功能模块之间的调用层次图。
其次设计一个系统操作界面,确定用户如何使用系统,是命令窗口界面还是图形界面,如何操作。
3)系统实现:
建立一个工程文件,其中至少包含三个文件,第一个是主函数所在的源文件,第二个是各个功能子模块对应的函数所在的源文件,第三个是各个功能子模块的函数原型所在的头文件。
4)调试程序:
上机调试。
未必要等把所有的代码都写好才进行编译调试。
可以先实现主模块,只调试主函数,所有的子模块函数均使用所谓的树桩函数进行测试。
然后逐个实现各个模块,一个一个添加,实现一个调试一个。
5)系统测试:
通过精心准备的测试数据,对系统进行测试,如果发现错误要查找原因改正错误。
检查系统是否真正实现了系统的设计目标,操作界面是否方便使用。
测试数据最好是通过文件加载,这样可以避免重复输入。
6)撰写报告:
按照给定的格式写出完整、规范的报告并打印。
其中模块图、流程图要画得清楚、规范,尽量避免错别字。
(另附报告模板)
7)答辩:
告知指导教师设计任务已经完成,进入考核阶段。
首先展示和讲解设计报告然后运行系统,演示系统功能和运行结果,准备回答指导教师提出的问题。
三.课程设计的基本内容(题目)
A组必做题目:
1.由键盘输入10个数,然后按由小到大的顺序排列。
#include
intmain(void)
{
inti,j,temp;
inta[10];
printf("enter10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
2.程序由键盘接收一串字符串,然后统计其中小写字母的个数,并输出。
#include
intmain(void)
{
printf("Enterasentence\n");
charstr[100];
inti=0;
intch=0;
gets(str);
while(str[i]!
='\0')
{
if(str[i]>='a'&&str[i]<='z')
ch++;
i++;
}
printf("小写字母%d个",ch);
return0;
}
3.求最大值与最小值
题目描述
定义一个函数max_min,求一组数据的最大值和最小值.
在主函数中输入n和n个数据,调用max_min函数求出最大最小值,然后在主函数中输出这n个数的最大值和最小值。
输入描述
输入n和n个数
输出描述
输出最大值占一行,保留2位小数
输出最小值占一行,保留2位小数
样例输入
65.2-780.8441
样例输出
8.00
-7.00
4.统计非负数之和
题目描述
输入n个(1≤n≤200)整数,统计非负数的个数,并计算非负数之和。
输入描述
先输入n(1≤n≤200),再输入n个整数
输出描述
输出“非负数的个数非负数之和”
如果n值越界,输出“Error”
样例输入
10
0569-843-712
5
-1-2-3-4-5
400
样例输出
830
00
Error
#include
intmain()
{intn,i,j=0;
inta[n],sum=0;
scanf("%d",&n);
if(n>200)
printf("error");
for(i=0;i scanf("%d",a[i]); for(i=0;i if(a[i]>0) { j++; sum+=a[i]; } i++; printf("输入的一组数据中正数和: %d\n个数为: %d",sum,j); return0; } 5.写一个函数求求圆周率的近视值,精确到小数7位。 计算公式是. #include #include double func() { double s=1,b=1,a=0; int i=0; double num,s1=0; while(fabs(2*s-2*s1)>=1e-7) { s1=s; if(i%2==0) a+=2; else b+=2; num=a/b; i++; s*=num; } s*=2; return s; } int main() { double s=1; printf("pi=%.7f\n",func(s)); return 0; } 6.写一个函数可以打印下面的图案 * *** ***** ******* ***** *** * #include #include intmain(void) { intn; scanf("%d",&n); printf("菱形图案如下: \n"); tu(n); return0; } inti,j; voidtu(intn){ if(n<1) printf("error\n"); for(i=0;i for(j=n-1-i;j>0;j--) printf(""); for(j=0;j<2*i+1;j++) printf("*"); printf("\n"); } for(i=n-1;i>0;i--){ for(j=n-1-i;j>=0;j--) printf(""); for(j=0;j<2*i-1;j++) printf("*"); printf("\n"); }} 7.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。 数据从键盘输入,要求打印出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据。 题目描述 有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。 数据从键盘输入,要求打印出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据 输入描述 输入5个学生的数据,每个学生的数据包括学号、姓名、三门课的成绩 输出描述 输出每个学生的总分、三门课的总平均成绩、以及总分最高的学生数据(保留一位小数) 样例输入 201090101张三898873 201090102李四775591 201090103王五819484 201090104周六977161 201090105徐七768090 样例输出 姓名总分平均成绩 张三25083.3 李四22374.3 王五25986.3 周六23979.7 徐七24682 总分数最高的学生信息如下: 201090103王五819484 8.求阶乘的和。 输入正整数n,在主函数中输出1! +2! +3! +...n! 的值,要求将计算阶乘的运算写成函数JC(n)。 输入描述 输入一个int型的正整数n 输出描述 输出阶乘的和 样例输入 3 样例输出 9 #include intmain() { intn,x; scanf("%d",&n); x=produce(n); printf("输入的数字阶乘为%d",x); return0; } intproduce(inti) {intpro=1; while(i>0) { pro*=i; i--; } returnpro; } intproduces(intn) { if(n==0) returnprintf("错误数据"); else return(produce(n)+produce(n-1)); } 9.写一个函数计算下列函数的值f(0),f(3),f(-3)。 测试之 #include intmain() { intx; scanf("%d",&x); printf("方程的解为: %d\n",fx(x)); return0; } intfx(intx) { if(x==0) return2; elseif(x>0) return(3*x*x-4); else return(0); } 10.写一个函数用指针型字符串实现两个字符串比较,intmystrcmp(constchar*str1,constchar*str2),如果大于返回1,等于返回0,小于返回-1,测试之 #include intstrcmp(char*p1,char*p2); intmain(void) { chara[100],b[100]; printf("enter2sentance\n"); gets(a); gets(b); printf("%d",strcmp(a,b)); } intstrcmp(char*p1,char*p2) { while(*p1&&*p2) { if(*p1>*p2) return1; elseif(*p1<*p2) return-1; else {p1++;p2++;} } if(*p1==0&&*p2==0) return0; elseif(*p1==0) return-1; else return1; } A组选做以下10道题目中的5题: 题目1: 青年歌手大奖赛_评委会打分 题目描述 青年歌手大奖赛中,评委会给参赛选手打分。 选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。 输入描述 输入数据的第一个数是n(2 输出描述 对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。 4100999897 样例输出 98.50 题目2: 写一个函数voidmaxMinAver(int*dta,int*max,int*min,float*ave,intsize),求一组数据的最大值、最小值和平均值,测试之。 其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。 要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。 测试之 题目3: 定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的平均值,函数原型为floatave(STUstu[],intsize)。 测试之。 题目4 写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组中。 题目5 写一个函数能够输出某一学生结构体数组STUstu[10]的信息和每个人的总分、平均分到某一文本文件中,测试之。 输出格式是: “%s%s%d%d%d%d%d%5.2f” 题目6 写一个函数能够打印输出学生结构体数组STUstu[10]的信息到屏幕上,测试之 题目7 写一个函数能够把一组学生成绩信息按总分进行排序,测试之。 题目8 写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“notfound! ”.测试之。 题目9 设计一个界面函数,包含上述11个题目的调用,即 请选择 1调用第一个函数(具体的函数名) 2调用第二个函数(具体的函数名) 3 4。 。 。 。 。 。 59调用第9个函数(具体的函数名) 继续吗? 输入y继续下一次选择,输入n结束 题目10 创建一个工程文件,包含三个文件,第一个是主函数所在的源文件,含有显示界面,选择1-10,调用不同的函数,第二个是各个函数所在的源文件,第三个是各个函数原型所在的头文件。 B组: 必做题: 1几种排序方法进行比较 编一程序对几种排序方法进行比较: 交换法、选择法、插入法、冒泡法四种方法选2。 具体比较方法是: 随机生成一组(≥300个)的100以内的整数数据,用选定的几种排序方法进行排序。 纪录排序过程中数据比较和交换的次数,输出比较结果。 2指针作为函数的参数 写一个函数voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize),求一组数据的最大值、最小值和平均值,测试之。 其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。 要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。 测试之。 下列题目必选其一 题目1: 基于结构体数组的学生成绩管理系统的设计与实现 具体要求: (1)系统具有打开已有数据文件、添加一条学生纪录(即一条学生成绩信息)、删除一条学生纪录、修改一条学生纪录,查看所有的成绩信息、按照学号查找学生成绩信息、按照总分降序排序学生成绩信息、按照平均值查询平均值大于90的学生信息、按照平均值查询平均值小于60的学生信息等功能。 注意添加、修改、删除学生纪录之后要把修改后的数据输出到相应的文件中。 (2)程序应该能进行简单的异常处理。 如检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不应中断程序的执行,应该给出提示。 打开文件时检查文件是否存在。 除数是否为零的检测。 (3)从文件中读入的数据保存在一个结构体数组中,对数组的操作可以用指针,也可以只用下标,最好有用指针的函数模块,如通过文件加载数据到数组。 题目2: 基于链表的学生成绩管理系统的设计与实现 具体要求: (1)系统具有打开已有数据文件、添加一条学生纪录(即一条学生成绩信息)、删除一条学生纪录、修改一条学生纪录,查看所有的成绩信息、按照学号查找学生成绩信息、按照总分降序排序学生成绩信息、按照平均值查询平均值大于90的学生信息、按照平均值查询平均值小于60的学生信息等功能,注意添加、修改、删除学生纪录之后要把修改后的数据输出到相应的文件中。 (2)程序应该能进行简单的异常处理。 如检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不应中断程序的执行,应该给出提示。 打开文件时检查文件是否存在。 除数是否为零的检测。 (3)从文件中读入的数据保存在一个结构体链表中,对数据的访问是遍历已经建好的链表。 题目3: 通讯录管理系统 问题描述: 写一个通讯录管理程序,使其具有增加(插入)、删除、排序输出、查询功能。 输入输出样例: 1 pleaseinput name: aaaaa telnum: 12356565 address: ajkfshdffs 2 pleaseinput name: bbbbb telnum: 2376823 address: akfjklsdjfl 3 pleaseinput name: ccccc telnum: asdkljsdlkfj address: aslsdkf ^Z addressbook ================= name: aaaaa telnum: 12356565 taddress: ajkfshdffs -------------------- name: bbbbb telnum: 2376823 taddress: akfjklsdjfl -------------------- name: ccccc telnum: asdkljsdlkfj taddress: aslsdkf -------------------- querywhatname: bbbbb name: bbbbb telnum: 2376823 taddress: akfjklsdjfl querywhattelnum: 2376823 name: bbbbb telnum: 2376823 taddress: akfjklsdjfl deletewhichname: bbbbb addressbook ================= name: aaaaa telnum: 12356565 taddress: ajkfshdffs -------------------- name: ccccc telnum: asdkljsdlkfj taddress: aslsdkf -------------------- 选做其它类型的题目: 题目4模拟简单的计算器 设计一个程序来模拟一个简单的手持计算器。 程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。 基本要求 程序运行时,显示一个窗口或菜单界面,等待用户选择运算类型,并输入数据,回车后输出计算结果(不用考虑运算符的优先级) 测试数据 程序输入不少于5种不同的表达式进行测试。 题目5写一个日历显示程序 基本功能: 1).输入任一年将显示出该年的所有月份日期,对应的星期 2).注意闰年情况 其显示格式要求如下: 1)月份: 中文英文都可以, 2)下一行显示星期,从周日到周六,中英文都可以 3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐 当输入2004显示如下: Inputtheyear: 2004 Inputthefilename: a Thecalendaroftheyear2004. Januray1February2 SunMonTueWedThuFriSatSunMonTueWedThuFriSat 1231234567 45678910891011121314 1112131415161715161718192021 1819202122232422232425262728 2526272829303129 ====================================================== March3April4 SunMonTueWedThuFriSatSunMonTueWedThuFriSat 123456123 7891011121345678910 1415161718192011121314151617 2122232425262718192021222324 28293031252627282930 ====================================================== … 题目6: 五子棋游戏 问题描述: 五子棋是起源于中国古代的传统黑白棋之一,在一块类似围棋的棋盘上,你和对手轮流放下黑白棋子,无论是横竖还是斜。 只要有五颗相同颜色的棋子连成一线即可获得胜利。 现在五子棋有“连珠”、“连五子”、“五子连珠”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。 五子棋的棋盘可以是15行15列或19行19列。 模拟这个游戏,对手为计算机。 提示: 可以使用TurboC或GRX图形库设计棋盘。 四.学时安排: 课程设计的时间是一周。 具体地点: 学校计算中心,北教1号楼 具体时间: 周1: 1、2节集中辅导,3-6实验 周2: 1-6实验 周3: 1-4实验 周4: 1-6实验 周5: 1-6考核 其它时间自由利用。 五.程序设计可选编译器或集成开发环境 (1)TurboC或WinTC(机房电脑已安装) (2)VisualC++6.0(机房电脑已安装) (3)Gcc和Code: : Blocks(自行安装) 六、建议教材和参考书 建议教材: 自编教材《问题求解与程序设计》以及本课程设计指导 参考书: [1]《C程序设计语言》(第2版·新版),(美)BrianW.Kernighan,DennisM.Ritchie著,许宝文等译,机械工业出版社,2004 [2]《C语言程序设计·现代方法》(美)K.N.King著,吕秀锋译,人民邮电出版社,2007 [3]《CPrimerPlus中文版(第五版)》,(美)StephenPrata著,云巅工作室译,人民邮电出版社,2005 [4]《C大学教程》(第5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言 课程设计 任务书