程序设计实践教学大纲_第1页
程序设计实践教学大纲_第2页
程序设计实践教学大纲_第3页
程序设计实践教学大纲_第4页
程序设计实践教学大纲_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程编号:02202001课程名称:程序设计实践课程性质:专业基础限选总 学 时:30(实践学时30) 学分:2适用专业:计算机科学与技术程序设计实践教学大纲一、教学目标程序设计实践课程的教学目标旨在训练学生C语言编程的基本能力。通过本课程的训练,使学生具备后续程序设计类课程,如数据结构、算法分析与设计等,所要求的编程能力,为这些教学活动的顺利开展打下良好基础。二、教学说明程序设计实践分模块对学生的C语言编程技能进行训练,涵盖了基本设计方法、输入输出、指针、字符串、参数传递、递归调用、文件操作等项目。这些技能即是后续与程序设计类课程经常要用到的,也是日后从事C语言程序开发所必备的,乃至对掌握其

2、他编程语言,如C+、Java和C#等也是非常有益的。训练模块的设计,以及各模块中训练题目的选择是基于以往教学经验,挑选学生普遍薄弱以及未来经常使用的编程技能编辑而成。教师可根据具体情况,特别是学生对C语言编程的掌握情况,灵活调整训练模块和模块中的训练题目。目前各模块基本相对独立,前后顺序可以调整,但仍建义将实验一和实验二放在最开始;实验三不晚于实验六;实验四不晚于实验五。建议每次课能抽出部分时间对与本模块相关的理论知识做简单归纳总结。本课程是对编程能力的训练,因此反对学生参考成熟的程序,甚至鼓励学生尽量少用库函数,而是自己独立编程实现。这一点与其他程序设计类课程有所不同,望在教学实施过程中予以

3、注意。本课程虽是对编程能力的训练,但在注重结果正确的前提下,也应注意对学生良好编程风格的培养。鼓励学生选择与训练模块相关的,来自于自己程序开发实践活动的题目参与训练,但要事先征得教师的认可。如果条件允许,应该全程开展对训练结果的机器自动检查。三、教学内容及要求实验一 基本设计方法训练(一)实验内容本次实验对基于程序流程图写代码,以及通过程序流程图分析代码的程序设计方法进行训练。实验题目分如下两大类,学生可分别从每类中选择1道来完成:1流程图转换为代码(1)写出下列流程图对应的代码(2)写出下列流程图对应的代码2代码转换为流程图(1)画出下列代码的流程图p = head; for(j=1; j&

4、lt;k; j+) p = p->next; while(head->next != head) for(j=1; j<m-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("%dn",head->number);(2)画出下列代码的流程图r1=head1;p1=head1

5、->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->index<p2->

6、;index)r1=p1;p1=p1->next;(二)实验要求能写出程序流程图对应的代码,并能画出代码对应的程序流程图。实验二 输入输出格式控制训练(一)实验内容本次实验对输入输出语句的使用,主要是格式控制参数的使用进行训练。实验题目分如下两大类,学生可分别从每类中选择2道来完成:1输入语句(1)读入一组以空格分隔的数,把它们存入数组,用逗号分隔的方式输出,并统计数的个数。例:【输入】20 37.5 43 5 87.0【回车】 【输出】20,37.5, 43,5,87.05(2)按照“学号【空格】姓名【空格】性别【空格】年龄【回车】”的格式输入若干学生信息,将他们存储在结构体数组中(即

7、每一个学生的信息存储在一个结构体中),输入以“#”结束。统计学生信息数量,并按行输出每条学生信息(逗号分隔)。例:【输入】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) 打印如下图形,层数由用户输入,最后一行

8、左侧顶格。 *(2)打印如下图形,层数由用户输入,中间一行左侧顶格。 *(3)打印倒的杨辉三角形,层数由用户输入,第一行左侧顶格。例: 1 3 3 1 1 2 1 1 1 13综合类(1)输入一组以逗号分隔的整数,以回车结尾,以每行5个,空格分隔,左对齐的方式输出它们。例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】【输出】100 21 3950 7 83289 943 495 34134 343209 47 2 7293 292732 843 392 24 (2)输入一组以逗号分

9、隔的整数,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】【输出】 100 21 3950 7 83289 943 495 34134 343209 47 2 7293 292732 843 392 24 (3)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,左对齐的方式输出它们。例:【输入】Machine learning is the term that refers to learning pattern

10、s in the data In other words【回车】【输出】Machinelearning is the termthatrefers to learning patternsin the dataIn other words(4)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。例:【输入】Machine learning is the term that refers to learning patterns in the data In other words【回车】【输出】Machinelearning is the termthatre

11、fers to learning patternsin the dataIn other 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.99.43 49.5 341.34 34.3 2.090.47 2.0 7.293 29.00(6)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,中间对齐的方式输出它们。

12、例:【输入】Machine learning is the term that refers to learning patterns in the data In other words【回车】【输出】Machinelearning is the termthatrefers to learning patternsin the dataIn other words(二)实验要求能利用输入输出语句完成相应任务。实验三 指针及字符串训练(一)实验内容本次实验对指针的使用和字符串的操作进行训练。实验题目如下,学生可从中选择2道来完成:1用指针操作实现一个二维数组的转置运算。输入:输入包含m +

13、1行。第一行是整数m和n,两项之间用一个空格隔开(1 <= m, n <= 10)。 其中,m,n分别为数组的行数和列数。第二行到第m + 1行每行均有n个整数,相邻两项之间用一个空格隔开。 输出:包含n行,是转置后的二维数组。每行均有m个整数,相邻两项之间用一个空格隔开。例:【输入】3 2【回车】 1 2【回车】 4 5【回车】 7 8【回车】 【输出】1 4 7【回车】 2 5 82输入一段英文,从中找出最长的英文单词。英文单词由空格分隔。(用字符指针实现,且不能调用库函数。)注:英文单词只包含大写字母和小写字母;若最长的英文单词有多个,则输出第一个。3输入一串符号,将其中连续

14、的阿拉伯数字视为整数,计算并输出它们的和。(用字符指针实现,且不能调用库函数。)例:【输入】whde12fkvf834ddei5sdlm3790wo【回车】【输出】4641(因为12+824+5+3790=4641)(二)实验要求能利用指针完成相应任务,并能对字符串进行操作。实验四 参数传递训练(一)实验内容本次实验对函数调用过程中的参数传递进行训练。实验题目如下,学生可从中选择2道来完成:1二维矩阵A和B作为输入参数,传入函数ADD,函数ADD完成A+B的运算,结果放在二维矩阵C中。SELECTMIN函数负责找出C中值最小的元素。编程实现上述函数,最终要求输出C和C中最小元素的值。不能用全局

15、变量。2字符串str1和str2 作为输入参数,分别传入cut函数。cut函数负责从传入的字符串中截取指定范围(例如:从第2个字符开始,到第5个字符结束的部分)的内容(截取范围也作为cut函数的输入参数传入。)。截取结果分别放在字符串str3和str4中。再将str3和str4作为输入参数传入connect函数。connect函数负责将传入的两个字符串顺序拼接在一起。编程实现上述函数,要求最终输出拼接结果。不能用全局变量。3每个学生信息存储在一个结构体中,结构体包括学号、数学成绩、英语成绩、计算机成绩、平均成绩五部分。Ave函数负责计算一个学生的平均成绩。Find函数负责找到平均成绩最高的学生

16、, Print函数负责按表格的形式输出一个学生的全部信息,内容全部左对齐,表头为“No. Math. Eng. Comp. Ave.”。编程实现上述函数,要求输出一个班中(不少于8人)平均成绩最高的学生的信息。(二)实验要求掌握根据需求选择正确的参数传递方式完成相应任务的技能。实验五 递归调用训练(一)实验内容本次实验对函数的递归调用进行训练。实验题目分如下两类,学生可分别从每类中选择1道来完成:1基本题(1)用递归函数完成斐波那契级数的计算,并输出斐波那契级数序列的前n项。n由用户输入。(2)用递归函数完成下列函数的计算,并输出序列的前n项。n由用户输入。2提高题(1)用递归函数实现将给定正

17、整数转换为二进制数的功能,并输出转换结果。正整数由用户输入。例:【输入】256【输出】100000000(2)用递归函数实现将给定的纯小数换为二进制数的功能,并输出转换结果。纯小数由用户输入。例:【输入】0.625【输出】0.101(二)实验要求能设计实现递归函数完成相应任务。实验六 文件操作训练(一)实验内容本次实验对文件的打开、关闭和读写等操作进行训练。实验题目分如下三类,学生可分别从每类中选择1道来完成:1 文件读操作(1)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中总共有多少个英文字符(区分大小写,且不算标点符号)。例如:Machi

18、ne learning is the term. 中的英文字符为24个。(2)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中的英文单词个数(以空格或标点符号分隔的字符串视为一个英文单词)。例如:Machine learning isnt a word. 中的英文单词为6个。2 文件写操作(1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中,也不允许将缓冲区中的内容写到文件中),将已知的文本文件(txt格式)中的指定字符c1修改为特定字符c2。c1和c2由用户指定,并作为程序的输入。(2)通过对文件的直接读写操作(即不允许将文件

19、内容全部读入到缓冲区中),将已知的文本文件(txt格式)中的指定单词w1修改为特定单词w2。w1和w2由用户指定,并作为程序的输入。3 文件创建操作(1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),复制已知文本文件file1中的内容到一个新的文本文件file2中。注意在file2中保持源文件中的格式。(2)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),将已知文本文件file1中指定位置的指定长度的字符串复制到一个新的文本文件file2中。指定位置由行号和起始字符位置给出。例如:文件file1中第1行的内容为:Machine learning is th

20、e term. 则复制第1行第5个字符开始的6个字符到file2中后,file2的内容为:ine le(二)实验要求能通过对文件的操作完成相应任务。实验七 控制结构训练训练(一)实验内容本次实验对控制结构以及控制结构的嵌套进行训练。实验题目如下,学生可从中选择2道来完成:1随机输入n个正整数,编程分别求出其中在奇数位序上的(即第1、3、5、7、.个)奇数的和,以及偶数位序上的(即第2、4、6、8、.个)偶数的和。2 编写程序,不断读取用户的键盘输入(回车分割)。如果是英文字母则一律转换为小写字母,依次存入一个足够长的字符数组中;如果是阿拉伯数字(不超过4位)则依次放到一个足够长的整数数组中;如

21、果是其他符号,则将其ASCII存入另一个数组中。最后输出3个数组中的内容。3在一段英文文章中,找到给定字符串str的所有出现,输出其出现的位置。编程实现之。(二)实验要求能利用顺序、分支、循环,以及它们的各种嵌套完成相应的任务。实验八 调试测试训练(一)实验内容本次实验对程序的调试和测试进行训练。实验题目如下,学生可从中选择1道来完成:1约瑟夫问题:假设有n个人围圈而坐,现在从第k人开始数数,数到m的人出列,紧接着的后续人又从1开始数数,到m出列,如此重复下去,直到全体人员出列。输出出列序列。#include<stdio.h> #include<stdlib.h> #i

22、nclude<malloc.h> 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;i&l

23、t;=n;i+) foruse *p = (foruse*)malloc(sizeof(foruse); p->number = 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->n

24、umber); q = p->next; free(p); p = q; printf("%dn",p->number); else if(m = 1 && k != 1) p = head; for(j=1; j<k-1; j+) p = p->next; while(head->next != head) q = p->next; p->next = q->next; printf("%d ",q->number); if(q = head) head = q->next;

25、free(q); printf("%dn",head->number); else p = head; for(j=1; j<k; j+) p = p->next; while(head->next != head) for(j=1; j<m-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->

26、next; printf("%dn",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&l

27、t;stdio.h>#include<stdlib.h>typedef struct nodeint 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)print

28、f("no exist ,enter againn");scanf("%d",&e);look(p,e);return (p3);int main()int x,s,y,i;printf("please enter the number of people:n");scanf("%d",&x);/*while(x<=2|x>=50)printf("out of range ,enter againn");scanf("%d",&x);*/p

29、rintf("enter each people's numbern");LinkList head=(LNode *)malloc(sizeof(LNode);LNode *p1,*p2;p1=head;for(i=1;i<=x;i+)p1->next=(LNode *)malloc(sizeof(LNode);scanf("%d",&s);p1=p1->next;p1->data=s;p1->next=head->next;p1=head->next; for(i=1;i<=x;i+)p

30、rintf("%d ",p1->data);p1=p1->next;if(i%10=0) printf("n"); printf("please enter the interval numbern");scanf("%d",&y);while(y<1)printf("insignificance,erter againn");scanf("%d",&y);printf("enter the first numbern")

31、;scanf("%d",&s);p1=look(head->next,s);while(p1->next!=p1) int j=1; while(j<y-1) p1=p1->next; j+; p2=p1->next; p1->next=p2->next; printf("%d ",p2->data); free(p2);p1=p1->next;printf("OK!n");return 0;(二)实验要求能根据提示调试语法错误,能通过测试修正程序。实验九 综合训练(一)实

32、验内容本次实验对学生使用前述实验中的各项技能完成所需任务的能力进行训练。实验题目如下,学生可从中选择1道来完成:1手机通讯录中每条记录包括:姓名、手机号、类别(如:同学、亲属、同事、好友等)三部分内容。请编写程序完成从文件导入手机通讯录,能对手机通讯录进行增、删、查、改,并能将手机通讯录导出到文件的功能。2编写程序,可以统计任给的一个英文文件(.txt格式)中每个英文字母(区分大小写)出现的频率,以及每个英文单词出现的次数。并将统计结果分别输出到两个文件中。结果按频率和次数的升序排列。 3用数组存储一个集合中的元素,编程实现两个集合的交、并、差、对称差运算。不能改变参与运算的集合内容,不能使用全局变量。(二)实验要求能利用程序设计的各项技能完成相应任务。实验十 上机考试(一)实验内容本次实验对学生掌握和运用程序设计基本技能的情况进行考核。(二)实验要求能在规定的时间内完成指定的程序设计任务,并调试测试通过,得到正确的运行结果。四、进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论