人人范文网 范文大全

《程序设计实践》教学大纲

发布时间:2020-03-02 23:09:15 来源:范文大全 收藏本文 下载本文 手机版

课程编号:02202001 课程名称:程序设计实践 课程性质:专业基础限选

总 学 时:30(实践学时30)

学分:2 适用专业:计算机科学与技术

《程序设计实践》教学大纲

一、教学目标

《程序设计实践》课程的教学目标旨在训练学生C语言编程的基本能力。通过本课程的训练,使学生具备后续程序设计类课程,如数据结构、算法分析与设计等,所要求的编程能力,为这些教学活动的顺利开展打下良好基础。

二、教学说明

《程序设计实践》分模块对学生的C语言编程技能进行训练,涵盖了基本设计方法、输入输出、指针、字符串、参数传递、递归调用、文件操作等项目。这些技能即是后续与程序设计类课程经常要用到的,也是日后从事C语言程序开发所必备的,乃至对掌握其他编程语言,如C++、Java和C#等也是非常有益的。

训练模块的设计,以及各模块中训练题目的选择是基于以往教学经验,挑选学生普遍薄弱以及未来经常使用的编程技能编辑而成。教师可根据具体情况,特别是学生对C语言编程的掌握情况,灵活调整训练模块和模块中的训练题目。

目前各模块基本相对独立,前后顺序可以调整,但仍建义将实验一和实验二放在最开始;实验三不晚于实验六;实验四不晚于实验五。建议每次课能抽出部分时间对与本模块相关的理论知识做简单归纳总结。

本课程是对编程能力的训练,因此反对学生参考成熟的程序,甚至鼓励学生尽量少用库函数,而是自己独立编程实现。这一点与其他程序设计类课程有所不同,望在教学实施过程中予以注意。本课程虽是对编程能力的训练,但在注重结果正确的前提下,也应注意对学生良好编程风格的培养。

鼓励学生选择与训练模块相关的,来自于自己程序开发实践活动的题目参与训练,但要事先征得教师的认可。

如果条件允许,应该全程开展对训练结果的机器自动检查。

三、教学内容及要求

实验一 基本设计方法训练

(一)实验内容

本次实验对基于程序流程图写代码,以及通过程序流程图分析代码的程序设计方法进行训练。 实验题目分如下两大类,学生可分别从每类中选择1道来完成: 1.流程图转换为代码

(1)写出下列流程图对应的代码

1

(2)写出下列流程图对应的代码

2 2.代码转换为流程图

(1)画出下列代码的流程图

p = head;

for(j=1; j

p = p->next;

while(head->next != head)

{

for(j=1; j

p = p->next;

q = p->next;

p->next = q->next;

printf(\"%d \",q->number);

if(q == head)

head = q->next;

free(q);

p = p->next;

}

printf(\"%d\\n\",head->number); (2)画出下列代码的流程图

r1=head1; p1=head1->next; r2=p2=head2->next; while(p1&&p2) { if(p1->index==p2->index) {

p1->modulus=(p1->modulus)+(p2->modulus); p2=p2->next; free(r2); r2=p2; r1=p1; p1=p1->next; } else if(p1->index>p2->index) {

r2->next=p1; r1->next=r2; p2=p2->next; r2=p2; } else if(p1->indexindex) {

r1=p1; p1=p1->next; } 3 }

(二)实验要求

能写出程序流程图对应的代码,并能画出代码对应的程序流程图。 实验二 输入输出格式控制训练

(一)实验内容

本次实验对输入输出语句的使用,主要是格式控制参数的使用进行训练。 实验题目分如下两大类,学生可分别从每类中选择2道来完成: 1.输入语句

(1)读入一组以空格分隔的数,把它们存入数组,用逗号分隔的方式输出,并统计数的个数。

例:【输入】20 37.5 43 5 87.0【回车】

【输出】20,37.5, 43,5,87.0 5 (2)按照“学号【空格】姓名【空格】性别【空格】年龄【回车】”的格式输入若干学生信息,将他们存储在结构体数组中(即每一个学生的信息存储在一个结构体中),输入以“##”结束。统计学生信息数量,并按行输出每条学生信息(逗号分隔)。 例:【输入】20142101 zhang Male 19【回车】

20142102 wang Female 18【回车】

##【回车】 【输出】2

20142101,zhang,Male,19【回车】

20142102,wang,Female,18【回车】

(3)读入一组以制表符(Tab)分隔的数,把它们存入数组,并用逗号分隔输出。 例:【输入】5【Tab】35【Tab】15【Tab】100【回车】

【输出】5,35,15,100【回车】 2.输出语句

(1) 打印如下图形,层数由用户输入,最后一行左侧顶格。

* *** ***** ******* (2)打印如下图形,层数由用户输入,中间一行左侧顶格。

* *** ***** *** * (3)打印倒的杨辉三角形,层数由用户输入,第一行左侧顶格。例:

1 3.综合类

(1)输入一组以逗号分隔的整数,以回车结尾,以每行5个,空格分隔,左对齐的方式输

4 出它们。

例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】 【输出】100

21

3950 7

8 3289 943 495

34134 343 209

47

7293

29 2732 843 392

24

(2)输入一组以逗号分隔的整数,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。

例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】 【输出】 100

21

3950

8 3289 943

495

34134 343 209

47

7293

29 2732 843

392

24

(3)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,左对齐的方式输出它们。 例:【输入】

Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning is

that words (4)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。 例:【输入】

Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning

is

that words (5)输入一组以逗号分隔的小数,以回车结尾,以每行5个,空格分隔,小数点对齐的方式输出它们。

例:【输入】10.0,2.1,39.50,7.8,328.9,9.43,49.5,341.34,34.3,2.09,0.47,2.0,7.293,29.00【回车】 【输出】 10.0

2.1

39.50

7.8

328.9 9.43 49.5 341.34

34.3

2.09 0.47

2.0

7.293 29.00 (6)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,中间对齐的方式输出它们。 例:【输入】

Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning

is

that words

(二)实验要求

the

term learning patterns In

other

refers

to

data in

the

the

term In

other

refers

to

learning

patterns in

the data

the

term learning

patterns In

other

refers

to

data in

the 能利用输入输出语句完成相应任务。 实验三 指针及字符串训练

(一)实验内容

本次实验对指针的使用和字符串的操作进行训练。 实验题目如下,学生可从中选择2道来完成: 1.用指针操作实现一个二维数组的转置运算。

输入:输入包含m + 1行。第一行是整数m和n,两项之间用一个空格隔开(1

其中,m,n分别为数组的行数和列数。第二行到第m + 1行每行均有n个整数,相邻两项之间用一个空格隔开。

输出:包含n行,是转置后的二维数组。每行均有m个整数,相邻两项之间用一个空格隔开。

例:【输入】3 2【回车】

1 2【回车】

4 5【回车】

7 8【回车】

【输出】1 4 7【回车】

2 5 8 2.输入一段英文,从中找出最长的英文单词。英文单词由空格分隔。(用字符指针实现,且不能调用库函数。)注:英文单词只包含大写字母和小写字母;若最长的英文单词有多个,则输出第一个。

3.输入一串符号,将其中连续的阿拉伯数字视为整数,计算并输出它们的和。(用字符指针实现,且不能调用库函数。)

例:【输入】whde12fkvf834ddei5sdlm3790wo【回车】

【输出】4641(因为12+824+5+3790=4641)

(二)实验要求

能利用指针完成相应任务,并能对字符串进行操作。 实验四 参数传递训练

(一)实验内容

本次实验对函数调用过程中的参数传递进行训练。 实验题目如下,学生可从中选择2道来完成:

1.二维矩阵A和B作为输入参数,传入函数ADD,函数ADD完成A+B的运算,结果放在二维矩阵C中。SELECTMIN函数负责找出C中值最小的元素。编程实现上述函数,最终要求输出C和C中最小元素的值。不能用全局变量。

2.字符串str1和str2 作为输入参数,分别传入cut函数。cut函数负责从传入的字符串中截取指定范围(例如:从第2个字符开始,到第5个字符结束的部分)的内容(截取范围也作为cut函数的输入参数传入。)。截取结果分别放在字符串str3和str4中。再将str3和str4作为输入参数传入connect函数。connect函数负责将传入的两个字符串顺序拼接在一起。编程实现上述函数,要求最终输出拼接结果。不能用全局变量。

3.每个学生信息存储在一个结构体中,结构体包括学号、数学成绩、英语成绩、计算机成绩、平均成绩五部分。Ave函数负责计算一个学生的平均成绩。Find函数负责找到平均成绩最高的学生, Print函数负责按表格的形式输出一个学生的全部信息,内容全部左对齐,表头为“No. Math. Eng. Comp. Ave.”。编程实现上述函数,要求输出一个班中(不少于8人)平均成绩最高的学生的信息。

(二)实验要求

掌握根据需求选择正确的参数传递方式完成相应任务的技能。 实验五 递归调用训练

(一)实验内容

本次实验对函数的递归调用进行训练。

实验题目分如下两类,学生可分别从每类中选择1道来完成: 1.基本题

(1)用递归函数完成斐波那契级数的计算,并输出斐波那契级数序列的前n项。n由用户输入。

(2)用递归函数完成下列函数的计算,并输出序列的前n项。n由用户输入。

n1m0f(m,n)f(m1,1)m0,n0f(m1,f(m,n1))其他 2.提高题

(1)用递归函数实现将给定正整数转换为二进制数的功能,并输出转换结果。正整数由用户输入。 例:【输入】256 【输出】100000000 (2)用递归函数实现将给定的纯小数换为二进制数的功能,并输出转换结果。纯小数由用户输入。 例:【输入】0.625 【输出】0.101

(二)实验要求

能设计实现递归函数完成相应任务。 实验六 文件操作训练

(一)实验内容

本次实验对文件的打开、关闭和读写等操作进行训练。 实验题目分如下三类,学生可分别从每类中选择1道来完成: 1. 文件读操作

(1)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中总共有多少个英文字符(区分大小写,且不算标点符号)。 例如:Machine learning is the term.中的英文字符为24个。

(2)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中的英文单词个数(以空格或标点符号分隔的字符串视为一个英文单词)。

例如:Machine learning isn’t a word.中的英文单词为6个。 2. 文件写操作

(1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中,也不允许将缓冲区中的内容写到文件中),将已知的文本文件(txt格式)中的指定字符c1修改为特定字符c2。c1和c2由用户指定,并作为程序的输入。

(2)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),将已知的文本文件(txt格式)中的指定单词w1修改为特定单词w2。w1和w2由用户指定,并作为程序的输入。 3. 文件创建操作

(1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),复制已知文 7 本文件file1中的内容到一个新的文本文件file2中。注意在file2中保持源文件中的格式。 (2)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),将已知文本文件file1中指定位置的指定长度的字符串复制到一个新的文本文件file2中。指定位置由行号和起始字符位置给出。

例如:文件file1中第1行的内容为:Machine learning is the term.则复制第1行第5个字符开始的6个字符到file2中后,file2的内容为:ine le

(二)实验要求

能通过对文件的操作完成相应任务。 实验七 控制结构训练训练

(一)实验内容

本次实验对控制结构以及控制结构的嵌套进行训练。 实验题目如下,学生可从中选择2道来完成:

1.随机输入n个正整数,编程分别求出其中在奇数位序上的(即第

1、

3、

5、

7、….个)奇数的和,以及偶数位序上的((即第

2、

4、

6、

8、….个))偶数的和。

2. 编写程序,不断读取用户的键盘输入(回车分割)。如果是英文字母则一律转换为小写字母,依次存入一个足够长的字符数组中;如果是阿拉伯数字(不超过4位)则依次放到一个足够长的整数数组中;如果是其他符号,则将其ASCII存入另一个数组中。最后输出3个数组中的内容。

3.在一段英文文章中,找到给定字符串str的所有出现,输出其出现的位置。编程实现之。

(二)实验要求

能利用顺序、分支、循环,以及它们的各种嵌套完成相应的任务。 实验八 调试测试训练

(一)实验内容

本次实验对程序的调试和测试进行训练。 实验题目如下,学生可从中选择1道来完成:

1.约瑟夫问题:假设有n个人围圈而坐,现在从第k人开始数数,数到m的人出列,紧接着的后续人又从1开始数数,到m出列,如此重复下去,直到全体人员出列。输出出列序列。

#include #include #include

typedef struct _foruse { struct _foruse* next; int number; }foruse,*link;

link create(int n); void joseph(link head, int k, int m);

link create(int n) { link head = (link)malloc(sizeof(foruse)); foruse *tail; int i; head->next = head; head->number = 1;

tail = head; for(i=2;inumber = i; p->next = tail->next; tail->next = p; tail = p; } return head; }

void joseph(link head, int k, int m) { int j; foruse *p; foruse *q; if(m == 1 && k == 1) { p = head; while(p->next != head) { printf(\"%d \",p->number); q = p->next; free(p); p = q; } printf(\"%d\\n\",p->number); } else if(m == 1 && k != 1) { p = head; for(j=1; jnext; while(head->next != head) { q = p->next; p->next = q->next; printf(\"%d \",q->number); if(q == head) head = q->next; free(q); } printf(\"%d\\n\",head->number); } else { p = head; for(j=1; j

p = p->next; while(head->next != head) { for(j=1; jnext; q = p->next; p->next = q->next; printf(\"%d \",q->number); if(q == head) head = q->next; free(q); p = p->next; } printf(\"%d\\n\",head->number); } } void main() { link head; int m, n, k; printf(\"please input n,m,k:\"); scanf(\"%d,%d,%d\",&n,&m,&k); head = create(n); joseph(head,k,m); } 2.约瑟夫问题:假设有n个人围圈而坐,现在从第k人开始数数,数到m的人出列,紧接着的后续人又从1开始数数,到m出列,如此重复下去,直到全体人员出列。输出出列序列。

#include #include typedef struct node { int data; struct node *next; } LNode,*LinkList; LinkList look(LNode *p,int e) { LNode *p3; p3=(LNode *)malloc(sizeof(LNode)); if(!p3) exit(1); p3=p; while(p3->next!=p&&p3->data!=e) p3=p3->next;

if(p3->next==p&&p3->data!=e) { printf(\"no exist ,enter again\\n\"); scanf(\"%d\",&e); look(p,e); } return (p3);

10 } int main() { int x,s,y,i; printf(\"please enter the number of people:\\n\"); scanf(\"%d\",&x); /* while(x=50) { printf(\"out of range ,enter again\\n\"); scanf(\"%d\",&x); } */ printf(\"enter each people\'s number\\n\"); LinkList head=(LNode *)malloc(sizeof(LNode)); LNode *p1,*p2; p1=head; for(i=1;inext=(LNode *)malloc(sizeof(LNode)); scanf(\"%d\",&s); p1=p1->next; p1->data=s; p1->next=head->next; } p1=head->next;

for(i=1;idata); p1=p1->next; if(i%10==0) printf(\"\\n\"); }

printf(\"please enter the interval number\\n\"); scanf(\"%d\",&y); while(ynext,s); while(p1->next!=p1) {

int j=1;

while(j

p1=p1->next;

j++; 11 }

p2=p1->next;

p1->next=p2->next;

printf(\"%d \",p2->data);

free(p2); p1=p1->next; } printf(\"OK!\\n\"); return 0; }

(二)实验要求

能根据提示调试语法错误,能通过测试修正程序。 实验九 综合训练

(一)实验内容

本次实验对学生使用前述实验中的各项技能完成所需任务的能力进行训练。 实验题目如下,学生可从中选择1道来完成:

1.手机通讯录中每条记录包括:姓名、手机号、类别(如:同学、亲属、同事、好友等)三部分内容。请编写程序完成从文件导入手机通讯录,能对手机通讯录进行增、删、查、改,并能将手机通讯录导出到文件的功能。

2.编写程序,可以统计任给的一个英文文件(.txt格式)中每个英文字母(区分大小写)出现的频率,以及每个英文单词出现的次数。并将统计结果分别输出到两个文件中。结果按频率和次数的升序排列。

3.用数组存储一个集合中的元素,编程实现两个集合的交、并、差、对称差运算。不能改变参与运算的集合内容,不能使用全局变量。

(二)实验要求

能利用程序设计的各项技能完成相应任务。 实验十 上机考试

(一)实验内容

本次实验对学生掌握和运用程序设计基本技能的情况进行考核。

(二)实验要求

能在规定的时间内完成指定的程序设计任务,并调试测试通过,得到正确的运行结果。

四、进程安排

实验一 基本设计方法训练

实验二 输入输出格式控制训练

实验三 指针及字符串训练

实验四 参数传递训练

实验五 递归调用训练 实验六 文件操作训练

实验七 控制结构训练

实验八 调试测试训练

实验九 综合训练

实验十 上机考试

3学时

3学时

3学时

3学时 3学时

3学时

3学时

3学时 3学时

3学时

五、教学参考书

《Computer Algorithms - Introduction to Design and Analysis(3rd edtion)》(影印版), Sara Baase著,高等教育出版社,2000.

12 《Introduction to Algorithms》(影印版),Thomas Cormen,机械工业出版社,2009.《Algorithms(Fourth Edition)》(英文版·第4版),Robert Sedgewick, Kevin Wayne著,人民邮电出版社,2013.《C++数据结构与算法》(第4版),[美] 乔兹德克(Drozdek, A.) 著;徐丹,吴伟敏 译,清华大学出版社,2014.《数据结构与面向对象程序设计(C++版)(》第4版),[美] 梅因(Michael Main),萨维特奇(Walter Savitch) 著; 金名 等 译,清华大学出版社,2012.《数据结构》,陈越 主编,高等教育出版社,2012.《数据结构(C语言版)》,严蔚敏,吴伟民 著,清华大学出版社,2011.《程序设计实践教程》,章小莉,周知扬,张岩,赵耿,清华大学出版社,2012.

六、考核方式及成绩评定参考标准

本课程安排10次实验(含1次上机考试),共30学时。除上机考试外,每个实验均按5分制打分,最后合成45分,占期末总评成绩的45%。

考核中承认学生能力差别,肯定每个学生的努力,激励独立完成任务,鼓励挑战难题,允许获取教师和同学的帮助,反对盲目抄袭和作假,引导学生按能力选题,积极动手实践,在学习中不断成长。

实验评分标准:

5分:实验预习充分,上机准时,操作熟练,能独立完成代码设计,程序调试,按时完成,代码注释充分,结果正确。

4分:实验预习良好,上机准时,操作比较熟练,能在指导下完成代码设计,顺利调试程序,按时完成,代码注释较充分,结果较正确。

3分:实验预习较好,上机准时,操作比较熟练,基本完成实验任务,代码有注释,结果基本正确。

2分:程序功能基本完整,但没有完成程序调试,无实验结果。 1分:程序功能不完整,有重大问题,没有完成程序调试,无实验结果。 0分:没有参加实验,也没有相应代码。

大纲撰写人:张

岩 大纲审阅人:赵

越 系部负责人:汪永好

程序设计教学大纲

《C语言程序设计(实践)》课程教学大纲.

高级程序设计教学大纲

VF程序设计教学大纲

《PHP程序设计》教学大纲

高级程序设计教学大纲

《VF程序设计》教学大纲

C程序设计教学大纲

MATLAB程序设计教学大纲

《C程序设计》教学大纲

《程序设计实践》教学大纲
《《程序设计实践》教学大纲.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档