课程设计任务书
指导教师: 仝瑞阳 张妍琰 周二强
课程名称:高级语言程序设计 班 级:0814101/2
计算机科学与工程系
2011年8月
河南城建学院
课程设计是学习掌握C语言知识的重要实践环节,是在课程实验基础上进行的综合性实践教学活动。
一、课程设计目的
该课程设计的目的,就是要通过一次集中的强化训练,使学生能及时地巩固已学的知识,补充未学的但又是必需的内容,为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。本课程设计将以学生上机进行程序设计为主,教师的适当指导为辅。利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,让学生熟悉程序编写,及时查究错误,独立完成设计题目。
通过课程设计,进一步熟悉掌握以下知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。
通过课程设计,达到系统理解、综合运用课程知识的学习目标。 通过课程设计,学会用C语言程序解决实际问题的方法。
通过课程设计,掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。
二、课程设计的基本过程
C语言课程设计一般包括6个步骤,即程序的功能设计、程序的数据设计、程序的函数设计、函数编码及调试、程序整体调试和课程设计总结等,各个步骤都有其特定的任务。
1.程序的功能设计
功能设计是课程设计的第一个环节,其任务是根据课程设计题目的描述和要求,确定程序要实现的功能,并把这些功能划分为不同的层次,确定各层功能的上下级关系,然后绘制出分级描述的程序功能框图,必要时对所列功能进行说明。 2.程序的数据设计
程序的数据设计主要包括对以下各类数据进行设计: ①对程序中用到的主要数据确定数据类型。 ②对程序中用到的数据定义。 ③定义程序中使用的数组等。 ④定义程序中通用的符号常量。
⑤确定文件的数据类型,如二进制文件、文本文件等。
3.程序的函数设计
一个综合性的程序,需要设计若干个函数。各个函数功能各异,使用的层次也不尽相同。为了使总体设计协调有序地进行,需要在程序编码之前,对主要的函数做出预先设计,即所谓的函数设计。程序的函数设计包括函数的功能设计和函数调用设计两个方面。
①函数的功能设计。对应程序功能框图,确定各项功能要使用的主要函数,并进行明确描述,包括:函数名称、函数功能、函数参数、函数返回值类型等。
②函数调用设计。对函数的调用关系进行描述,明确说明在实现程序功能时,函数
河南城建学院
之间将发生的调用和被调用关系。
4.函数编程及调试
函数编程及调试是实现程序功能的核心阶段,需要注意以下问题:
①课程设计具有一定的综合性,其程序通常由多个函数构成,每个函数都有独立的功能,实现特定的操作。但程序中的所有函数是一个有机的整体,都围绕实现程序的功能进行设计。
②有些函数之间有调用和被调用关系,在进行函数设计时需要注意顺序问题,有的函数先设计,有的函数后设计,而没有调用关系的函数可以并列设计。当多人合作进行一个课程设计时,可以并列设计的函数即可由不同的设计人员承担。 ③程序设计是一个循序渐进的过程。有的函数在程序设计前的函数设计阶段就被考虑到了,而有的函数是在程序设计过程中因需要才产生的。但无论哪一个函数,都会经历由简单,到功能完善定型的过程。
④函数设计一般以功能实现为主线,围绕程序的一个功能进行函数设计。每一个函数完成之后,都要立即进行函数功能测试,直到确认函数能实现其功能为止。
⑤有时在测试一个主调函数时,其被调用的函数还没有完成设计,这时最简便的方法,就是把被调用函数先设计为只有一个空的“return;”语句的函数,然后进行主调函数的基本测试。当被调用函数设计完成之后,再进行详细的测试。
⑥不同功能的函数,对磁盘文件可能有不同的使用要求,因此在进行文件操作时,打开文件的方式就可能不同。 5.整体调试
整体调试是程序设计的必要阶段,是在前期程序设计调试基础上进行的基本过程。需要设计准备一个较大规模的数据集,按照课程设计题目的功能要求,对组装完成的程序逐项进行功能测试和调试,直至确认程序达到了设计目标为止。 6.设计总结
设计总结是课程设计的最终阶段,通过对课程设计的各个过程进行系统全面地总结,按照指导教师的具体要求,形成课程设计报告。
三、课程设计题目
在以下题目中任选一题即可,星号代表难度。 (***)1、建立n阶方阵,任选一题完成打印:
(1) 螺旋方阵,如下图:
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
(2) 蛇形方阵,如下图:
1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16
(***)2、已知2000年1月1日为星期六,请输入任一年的年份后,打印该年的年历;
1
河南城建学院
(***)3、长整数的处理。假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为: m=a[k]×10k-1+a[k-1]×10k-2+?.+a[2]×10+a[1]
其中a[0]保存该长整数的位数。求: 长整数加长整数或长整数减长整数。
(*)4、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组.数组长度为M. (*)5、输入一成绩数组a[N],N=10,要写一函数找出大于平均成绩的最小数和小于平均成绩
最大数. 采用全局变量实现。例如:a[N]={62,71,82,89,90,59,88,65,84,96}, 平均成绩为77.则82和71就是待求的数。
(***)6、输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求: 1)排序用一个函数实现。
2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。 (**)7、用递归法求:
(x/1!)+(x*x*x/3!)+(5个x相乘/5!)+??+((2n-1)个X相乘/(2*n-1)!) 当N为某值时上式为多少?(到第n项,n和x的值由键盘输入。)
(*)8、从键盘上输入n个数保存到数组中,找出这n个数的最小值和它的位置,然后把它和数组最前面的元素对调位置. (*****)9、基本要求如下:
编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩. 具体功能如下:
1)创建信息链表并以磁盘文件保存.
2)读取磁盘文件并显示输出所有学生的成绩. 3)按学号或姓名查阅成绩.
4)修改指定姓名或学号的学生的成绩并存盘.
5)显示输出60分以下,60到79,80到89,90以上各分数段的学生信息
(*)10、求Sn=a+aa+aaa+......+aa......a(则由n个a组成)其中a是一个数字,例如2+22+222+2222+22222(此处n=5,a=2)程序运行时由键盘输入a与n的值. (***)11、用一个字符数组保存一个英文句子,要求:
删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);
统计该句子中,单词出现的频率; 查找并替换某个单词。 (**)12、(1)、正文统计。统计一段正文,求各字母出现的频度(忽略大小写) (2)、查找并替换正文中的字符串。
(***)13、求两字符串中的最大公共字符串个数及公共字符串。 (*****)14、图书管理系统:
问题提出:XX校图书馆现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力。图书馆希望设计一个图书馆系统,管理读者的登记、图书的购入、借出、归还以及注销等。管理人员还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计,给出统计表格,以全面掌握图书的流通情况。 使用文件进行存储和管理。
2

