您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 2012小学期--程序设计技能训练
《程序设计技能训练》实验指导书石家庄铁道大学信息学院1前言《程序设计技能训练》是计算机信息类各专业的小学期集中实践。它与《C语言程序设计》课程配合,通过集中训练提高学生的程序设计能力。希望同学们在使用本实验指导书及进行实验的过程中,能够帮助我们不断地发现问题,并提出建议,进一步提高《程序设计技能训练》课程的质量。编者2目录说明………………………………………………………………………3实验一基本知识综合训练(一)……………………………………4实验二基本知识综合训练(二)……………………………………5实验三基本知识综合训练(三)……………………………………6实验四综合性应用程序设计…………………………………………7附录:错误信息……………………………………………………………133说明本课程是计算机信息类各专业的小学期集中实践环节课程。主要目的和任务是通过在VC++集成开发环境中进行综合性、集中程序设计训练。使学生掌握高级语言的程序设计方法,培养学生严谨、朴实的程序设计风格;针对在正常的教学过程中学生暴露出来的各种各样的问题,有针对性的进行的上机实践,在C语言环境下独立地编制正确、高效的程序,以达到深刻理解和巩固所学的理论知识的目的,为后续课程的学习打下良好基础。实验报告要求1.每次实验前,认真预习本次实验内容,按实验指导书的要求,需编写的程序,应书写整齐,经检查无误后方能上机。2.上机输入和调试程序,调试通过后,打印出程序清单并把运行结果记录下来(在条件允许下)。3.上机结束后,按照实验指导书的具体要求,整理出实验报告(字迹工整),下次上机交给指导教师。4.实验报告应包括以下内容:(1)实验题目;(2)实验目的和要求;(3)实验内容(附:程序流程图和程序清单有条件用打印机打印出来);(4)实验步骤及结果;(5)分析与体会:对运行情况作分析,以及本次实验所取得的经验。如程序未能通过,应分析错误原因。本课程上机时间为2周,分为4个实验项目。实验项目及学时分配如下表所示。序号实验项目名称学时1基本知识综合训练(一)82基本知识综合训练(二)83基本知识综合训练(三)44综合性应用程序设计20说明:具体实验题目任课老师可以根据授课对象做相应的调整。4实验一基本知识综合训练(一)一、实验目的与要求1.加强程序基本结构、数组、字符数组和指针数组的练习,掌握字符数组和字符串函数的使用。2.掌握与数组有关的算法。3.进一步提高程序的设计能力和调试能力4.要求:上机前先编制程序并画出程序框图;独立完成实验;独立完成实验报告。二、实验内容1.输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按照字母表顺序输出,不出现的不输出)。2.插入排序(在输入的过程中完成排序)。以任意次序读入20个数,将第1个数放入数组a的第一个元素中。以后读入的数应与已经存入数组a中的数进行比较,确定它在从小到大排列中所应处的位置。将该位置及其以后的元素向后推移一个数的位置,将新读入的数填入空出的位置中。这样在数组a中的数总是从小到大排列的,处理完后输出。3.从键盘上接收一个最多至9位整数、2位小数的数值,请将其转换成大写金额,即写成:2×亿×仟×佰×拾×万×仟×佰×拾×元×角×分的形式。例如:当从键盘上输入374910.56时,输出结果为:×亿×仟×佰叁拾柒万肆仟玖佰壹拾零元伍角陆分或:叁拾柒万肆仟玖佰壹拾零元伍角陆分1.编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词查找,例如:输入:Happynewyear最短单词为new,输出new。2.用随机函数产生数据,设计二位整数的加、减、乘算式各一题(减法算式应保证被减数大于减数)。让学生回答,由计算机给出正确与否的判断,并最后给出总得分。得分计算方法:算对加、减法各得30分,算对乘法得40分,算错得0分。然后由计算机输出询问信息,学生选择5回答,以决定是否继续一次新的测验。三、实验步骤及结果四、分析与体会6实验二基本知识综合训练(二)一、实验目的与要求1.掌握结构体类型变量的定义和使用;2.掌握链表的概念,掌握对链表的综合操作操作;3.进一步提高程序的设计能力和调试能力4.要求:上机前先编制程序并画出程序框图;独立完成实验;独立完成实验报告。二、实验内容1.设有n个人围做在圆桌周围,从某个位置开始用自然数进行编号为1,2….,n.然后从编号为k的人从1开始报数,数到m的人便出列;下一个人(第m+1个)又从容不迫开始报数,数到m的人便是第二个出列的人.如此继续下去直到最后一个人出列为止。要求输出这个出列的顺序。这个问题称为约瑟夫问题。具体要求如下:(1)n\m\k由键盘输入,输入前要有提示。(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该存储空间。(3)在输出时,各编号之间用两个空格来分隔。(4)分别用n=8,m=4,k=1以及n=10,m=12,k=4调试运行你的程序.2.将一条链表上相邻的二个结点合并成一个结点,即将第一个结点与第二结点合并,将第三个结点与第四个结点合并,……。若链表上的结点个数为奇数,则最后的一个结点不合并,直接作为合并后链表上的最后一个结点。链上结点的数据结构为:stuctnode{intdata;structnode*next;};3.从键盘上输入若干个数,以-1结束,按照与输入相反的顺序建立一个链表,并输出。要求建立链表和输出链表用函数实现。选作题:1.读入一串字符,以“?”结束,将其中的字母组成先进先出的链表并输出链表。2.读入一串字符,以“?”结束,将其中的字母组成先进后出的链表并输出7链表。3.读入一批数,以负数结束,将正数组成排序的链表并输出,然后读入一个数,从链表中删除该数并输出。再读入一个数,将它插入排序链表中并输出。(用函数)4.建立某航班的乘客订票链表。该链表的每个结电包括乘客号和订票张数,且链表是按乘客号排序的。第一个结点比较特殊,它的乘客号为-1,订票张数为该航班已经订的张数(开始为0)。每当输入一个乘客号及定票张数时,系统应首先检查已订票张数是否超过该航班允许订票张数(例如200),若超过只能订较少的票或者不能订。然后检查在链表中有无乘客号相同的,若有则在原订票张数上增加,否则插入。当输入订票张数为负数时,表示退票,退票必须能查到同号的结点,否则为错。退票张数只能退原定张数。如果已全退,应将结点删除。修改头结点,输出每次实际订票张数、退票张数及出错信息。当输入乘客号为-100时结束并输出链表。三、实验步骤及结果四、分析与体会8实验三基本知识综合训练(三)一、实验目的与要求1.掌握使用文件打开、关闭、读、写等文件操作函数;2.学会用缓冲文件系统对文件进行的综合操作;3.进一步提高程序的设计能力和调试能力;4.要求:上机前先编制程序并画出程序框图;独立完成实验;独立完成实验报告。二、实验内容(第六小题必做,其他6选2)1.编写程序将两个数据递增的整数文件合并,形成一个新的文件,要求保持数据的递增性。2.有5个学生,每个学生有3门课的成绩,从键盘上输入以上数据,计算平均成绩,将原有的数据和计算出的平均成绩存放在磁盘文件中。3.将2题中的学生数据,按平均分进行排序处理,将已经排序的学生数据存入一个新文件中。4.对3题已经排好序的文件进行插入处理,插入一个学生的数据,计算平均成绩,然后按照平均成绩的顺序插入。插入后建立一个新文件。5.将一个文本文件中的字符进行加密后另存到。加密规则为:字母用下一个字符替换,如:a换成b,…..z换成a。其他不变。6.下表为学生的学习情况(必做)学号(num)姓名(name)年龄(age)成绩(grade)20101Zhangming1995.620102Whangyi1892.320103Shaoyi2081.420104Lilin1988.920105Goujingjing1888.720106Hanxing1986.520107Mamingyu2093.220108Gaofang1882.120109Linfang1998.420110Zhangjayi1779.8要求如下:9将上面的内容按结构体类型写入随机文本文件st.dat中。对此文件按成绩从低到高进行排序(用冒泡法),并输出排序结果。输入一个分数范围如(80-89.9),统计此分数段内的学生数。输入一个分数,用折半(对分)查找法查找获此分数的学生的学习情况并输出。三、实验步骤及结果四、分析与体会10实验四-1综合性应用程序设计一、实验目的与要求1.通过一个综合程序设计,复习和学习C语言知识,将变量、数组、指针、结构体及文件的应用融为一体,通过编程掌握分析问题的方法,掌握利用高级语言程序设计解决问题的方法,进一步提高实践动手能力和程序调试能力。2.要求:上机前先编制程序并画出程序框图;独立完成实验;独立完成实验报告。二、实验内容1、学生管理系统已知有20个学生记录(包括学号、姓名、班级、性别、出生年月、成绩)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立)。要求:编程序实现查询、排序、插入、删除等功能。具体要求如下:(1)要求显示如下界面****************************************1--------------查询2--------------排序3--------------插入4--------------删除5--------------退出****************************************通过选择1-4来确定要做哪一个操作。(2)若选1,则出现如下界面****************************************1.1----------按学号查询1.2----------按姓名查询1.3----------按成绩查询****************************************通过选择1.1-1.3来确定要做哪一个操作,其中:按学号查询用二分法实现;按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将学生记录输出到屏幕,若查无此人,输出相关信息。11(3)若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整。(4)若选3,将一个新学生记录按学号顺序插入,并把结果保存到文件student.dat中。(5)若选4,删除指定学生的记录,并把结果保存到文件student.dat中。(6)若选5,则退出程序。(7)以上各个功能均编写成子函数,由主函数调用实现。2、工资报表管理系统已知N个职工的姓名、职工编号、基本工资、附加工资和扣除工资。要求:编写函数:①计算每个职工的实发工资;②按职工编号由小到大顺序排列,相应数据也要随之调整;③要求输入一个职工编号,用折半查找法找出该职工的数据,从主函数输入要查找的职工号,输出该职工的数据;④将排列后的所有职工的数据存放在磁盘文件“gzbb.dat”中,磁盘文件的格式如下:GongZiBaoBiao************************************************************bhxmjbgzfjgzkcgzsfgz802211zhoupeng……………………………………*************************************************************name:XX-XX-XXdate:XX-XX-XX注意:在name与date中填入个人姓名与制表日期以上各个功能均编写成子函数,由主函数调用实现。根据题意此题用5个函数完成:main函数:总控函数compute函数:计算函数(求每个职工的实发工资)sort函数:排序函数(按职工编号从小到大排列)search函数:查找函数(按给定的职工编号进行查找)output函数:输出排列后的所有职工数据(建立磁盘数据文件)取系统日期函数:struct
本文标题:2012小学期--程序设计技能训练
链接地址:https://www.777doc.com/doc-3028853 .html