当前位置:文档之家› 《程序设计实践》课程安排及要求-2017

《程序设计实践》课程安排及要求-2017

《程序设计实践》课程设计任务书适用专业年级:电信类2016级1. 课程安排1.1 教学目标与任务《程序设计实践》是电信类专业的一门重要的实践课。

本课程设计是为使《程序设计基础(C语言)》课程取得更好的教学效果而设置,是进一步培养学生综合应用VC的各种编程知识和技巧进行应用程序编写的实际能力,包括:⑴训练学生掌握对数组、指针、链表、文件等的基本操作;⑵训练学生掌握模块化程序设计方法;⑶训练学生对一个实际应用系统进行综合分析、设计、编程及调试等的能力;⑷培养学生自主学习和独立创新的精神。

通过本课程的学习,要求学生能够运用C语言的理论知识,运用流程图的基本手段,熟悉C语言的标准编程规范,取得程序设计说明书及源代码等成果。

同时,通过本课程的学习训练学生文档编写能力、问题的分析与解决能力、流程图的绘制能力、代码编写能力、程序调试能力、小组协调与合作能力等,从而强化学生对C语言的认识,能够熟练使用C 语言的基本语法结构,能够运用C语言的函数进行小组开发,并利用流程图进行程序设计和交流,掌握code review的形式和方法,掌握自主开发中小型程序的能力,了解大型程序开发的步骤和方法。

1.2 基本要求本课程要求以一人一组的形式进行程序开发。

在课程结束(含中期阶段性结束)时,每人都需提交以下几份成果:1) 电子版的系统设计报告2) 纸质版的课程设计报告3) 程序源代码1.3 课程阶段说明本次课程设计分为两个阶段,第一个阶段为1-8周,第9周进行考核(考试),主要训练程序设计的基本功,包括程序设计三个基本结构、函数、数组、指针、链表、文件等的基本操作和部分典型算法;第二个阶段为10-17周,利用模块化的程序设计方法,对一个应用系统进行分析、设计和编程调试并撰写课程设计报告。

本课程分为两个阶段,如表1所示。

表1 课程的3个阶段1.3.1 基本能力训练阶段按要求完成基本能力训练阶段的所有题目(题目见2.1):1.3.2 系统程序设计阶段根据给定的综合程序设计题目(2.2),选择1题或自主选择题目。

完成对题目的功能分析,数据结构设计,程序流程设计及代码编写,调试等工作。

1.4 评分标准本次课程设计第一阶段占50%(其中平时检查和考勤20%,考试占30%);第二阶段占50%(其中平时检查和考勤10%,答辩30%,报告10%)。

1.5 上机辅导安排本课程总共64学时,16周,每周4学时(2学时集中上机,2学时由指导教师自主安排答疑)。

班级:电信类1601-1606班。

表2 上机辅导安排1.6 选题要求1) 基础训练题目每题都做。

2) 综合题目选择1题,或自主选题。

自主选题必须要用到链表或数组,文件操作,用户交互操作等。

【注】如果最后发现学生提交上来的成果是抄袭自网上现成的程序和文档,那么这门课程的成绩为零分。

2. 参考选题2.1 基础题1、输入x ,求分段函数⎪⎪⎩⎪⎪⎨⎧<+<≤----≥+-=10)sin()cos(0102101)(22x x x x x xx x x x f 的值。

2、分别利用循环和递归求1+2+3+……+n 的和,其中n 从键盘输入。

3、输入一个正整数,求该正整数的位数以及各位数字之和。

4、输入一个正整数,将该正整数表示为其各个质因子之积的形式,如24=2*2*2*3。

5、输入一个正整数,求其各个因数之和(所谓一个数的因数,是指除了这个数本身之外,其它能整除这个数的数,如18,其因数有1,2,3,6,9)。

6、求出100~999之间的所有水仙花数(所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身)。

7、任何大于等于6的偶数都可以表示为两个素数之和,请将6~100之间的所有偶数都表示来两个素数之和,其中判断一个数是否是素数设计成函数。

8、输入两个正整数,输出这个两正整数的最大公约数和最小公倍数。

9、有斐波拉契数列1,1,2,3,5,8,13……,请按每行6个数据输出该裴波拉契数列的前30项。

请分别用循环和递归算法求解。

10、利用泰勒展开式求cosx 和sinx 的值,要求当最后一项的值小于10-7时停止。

+-+-=!6!4!21)cos(642x x x x+-+-=!7!5!3)sin(753x x x x x11、输出九九乘法表(可以全部输出,也可以按要求输出上三角或下三角的形式,要求每个式子数字占两位,其它符号1位,如 9* 9=81)。

12、输出1000以内的所有亲密数对,所谓亲密数对是指,如果m的因素和是n,而n的因数和是m,且m和n不相等,则称m和n是亲密数对。

13、用矩形法求函数)fπx=在区间(a,b)之间的积分,其中a,b从键盘输2cos()(x入(a<b)。

14、输入n打印如下实心菱形图案和空心菱形图案(下图为n=5时)。

15、输入一个正整数,将其转换为二进制、八进制或十六进制之后输出(程序中可以进行进制的选择)。

16、输入一行字符,统计其中字母、数字、其它符号的个数。

17、输入一行字符,将其中的大(小)写字母转换成小(大)写字母。

18、输入一个英文句子,统计其中单词的个数。

19、输入若干个数据,求输入数据中的最大值、最小值、平均值。

20、输入若干个数据,统计输入数据中大于平均值的数据个数。

21、输入n个数据存入一个一维数组中,将其顺序倒置后输出。

22、输入一个字符串,倒序输出该字符串。

23、输入n个数据,对其进行排序输入(简单排序、冒泡排序、选择排序、插入排序)。

24、输入n个数据,查找其中是否存在x ,如果存在输出其下标号。

25、输入n个数据,删除其中的x,再输出剩下的n-1个数据。

26、输入n个数据,将其中所有重复的数据删除只剩一个。

27、输入n个数据,对其进行循环移位输出。

28、以直角或等腰三角形的形式输出杨辉三角形。

29、以高斯消元法求解多元一次方程组的解。

30、输入一个m×n的矩阵,求该矩阵每行的最大值、最小值、平均值,每列的最大值、最小值或平均值。

31、输入一个m×m的矩阵,求其对角线上元素之和,或求其对角线上元素的最大值、最小值。

32、输入一个m×n的矩阵,输出其中所有在行上最大列上最小的元素的下标和元素本身。

33、输入一个m×m的矩阵,求其转置矩阵。

34、输入若干个字符串,按字符串从小到大输出,或按字符串的长度从短到长输出。

35、输入一个字符串,输出其左子串、右子串或中间的子串。

36、随机出十道100以内的加减乘除运算题(每题只含一个运算符),并根据输入结果给出得分。

37、结构体数组的排序输出(如:学生的成绩管理)。

38、带有头结点的单链表的建立和遍历。

39、不带头结点的单链表的建立和遍历。

40、对带有头结点的链表中满足某个条件的结点进行删除。

41、对不带头结点的链表中满足某个条件的结点进行删除。

42、对带有头节点的有序链表,插入一个结点,使其仍然有序。

43、对不带头结点的有序链表,插入一个结点,使其仍然有序。

44、利用链表实现两个多项式相加。

45、利用链表实现两个多项式相乘。

46、利用位操作输出一个整数的二进制数据。

2.2 综合题2.2.1 图书管理系统设计并实现一个小型的图书管理系统,要求设计一个数据结构来管理多本图书,并能实现图书的添加、删除、插入等,以及将图书信息保存到文件中、从文件中读入图书信息。

主要用到的数据结构:结构体、简单链表。

主要用到的C语言知识:结构体、指针、链表、文件输入/输出等。

2.2.2 学生管理系统设计并实现一个小型的学生管理系统,要求设计一个数据结构来管理多个学生,并能实现学生的添加、删除、插入等,以及将学生信息保存到文件中、从文件中读入学生信息。

主要用到的数据结构:结构体、简单链表。

主要用到的C语言知识:结构体、指针、链表、文件输入/输出等。

类似的管理系统包括:课程管理系统、社团管理系统、超市商品管理系统、超市会员管理系统、车辆管理系统等。

2.2.3 字符界面扫雷游戏【注1】这个例子摘自教材:王衍,王桂平,冯睿,马雪英编著. 程序设计方法及在线实践指导. 浙江大学出版社. 2010年1月. (附有电子版)编程实现一个字符界面的扫雷游戏。

功能需求如下:1) 允许用户输入地图的大小,为简化起见,地图的大小是N×N的,N的值从键盘输入,5≤N≤20。

默认为5。

2) 地图中地雷的个数允许用户输入。

建议用户输入的地雷个数小于N*N/4。

地雷的分布是随机的。

3) 初始时显示地图,各个位置都没有点开,也没有标记,格式如下图所示(该地图大小为10×10)。

_______________________________________|___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___||___|___|___|___|___|___|___|___|___|___|图1 字符界面扫雷游戏的地图4) 玩游戏时,用户每次操作是从键盘输入3个数据:x y op来表示的,(x,y)表示操作的位置,字符op表示要执行的操作。

可以执行的操作有:点开(用字符“.”表示)、标记地雷(用字符“!”表示)、取消标记地雷(用字符“c”表示)、退出游戏(用字符“q”表示)。

a) 如windows扫雷游戏一样,当点开的位置(x,y),其8个相邻位置上地雷总数为0,则点开连成一片的空白区域。

某个位置的8个相邻位置从左上角开始按顺时针顺序依次为:左上角、上、右上角、右、右下角、下、左下角、左。

b) 如果在游戏过程中踩到地雷,则游戏失败。

c) 如果用户标记出来的每个地雷位置跟实际的位置一致,并且标记出来的地雷个数与实际地雷个数一致,则游戏成功完成。

并且,这时把还没有点开的位置(这些位置上都没有地雷)都点开。

5) 每执行一次操作后,显示操作后的地图。

6) 使用文件记录游戏的步骤,时间和结果。

7) 使用6)的文件,重现游戏过程。

图2 某次游戏过程。

相关主题