c课程设计报告参考(通用9篇)
c课程设计报告参考 篇1
C语言课程设计参考题目
一、矩阵运算
矩阵的加法、减法、转置、数乘矩阵、交换矩阵行或列、两个矩阵作乘法、求矩阵的秩、求可逆矩阵的逆矩阵、特殊矩阵(如对称矩阵、反对称矩阵、三角形矩阵)的运算。
二、级数和数列运算
求无穷级数的和(①从第一项累加到给定的项数时为止,②当一般项的值变化到满足某一条件时为止,③当累加的级数的和满足某一条件时为止。对于正项级数和交错级数,都能计算。);求无穷级数的某一项的值(①按给定项数求值;②按给定满足的条件求值)。
求数列的前n项之和(①等差数列前n项之和;②等比数列前n项之和);计算并显示数列各项的值(①截止到第n项为止;②截止到满足给定的条件为止);求等差中项和等比中项。
三、统计与计算
求N个整数的和、平均值、最大公约数、最小公倍数、方差、标准差等。求N个数中的最大值、最小值、出现次数最多的值、出现次数最少的值。
对一组整数进行分类统计(自行设定分类统计标准。例如,对于一组在0到100之间的数,可以这样分类统计:小于或等于100且大于等于90的有多少,小于90且大于等于80的有多少,小于80且大于等于70的有多少,小于70且大于等于60的有多少,小于60的有多少)。给定N个数,计算并显示这N个数的各种排列和组合。
判断某整数是否是素数,求某范围内的所有素数。将某整数分解成若干素数乘积的形式。
四、排序和查找运算
将给定的N个数排序(①升序;②降序,分别用选择法和冒泡法)。
将给定的N个单词排序(①升序;②降序,分别用选择法和冒泡法)。将给定的N个英文句子排序(①升序;②降序,分别用选择法和冒泡法)。
运用顺序查找法,在一组数中查找给定的数。运用两分查找法,在一组数中查找给定的数。在一组数中查找到给定的数之后,用另一个数将其替换或删除。在一组有序数中,插入某个数,使插入后仍是一组有序数。
将一组数以中间对称的形式交换位置,然后输出。
五、求方程近似根和积分运算
求一元二次方程的根。用牛顿法求某个一元高次方程的近似根。用二分法求某个一元高次方程的近似根。用弦截法求某个一元高次方程的近似根。
求线性方程组的解。
用矩形法求某个函数定级分。用梯形法求某个函数定级分。
六、对英文单词和句子运算
分别统计一个英文句子中大写字母、小写字母、数字、空格的个数。求某个字母在一个英文句子中出现的位置。统计一个英文句子中所包含单词的个数。统计一个英文句子中最长的单词所含字母个数。统计某个单词在一个英文句子中出现的次数。将一个单词从英文句子中删除,显示删除单词后的英文句子。将一个单词插入到英文句子的指定位置,显示插入单词后的英文句子。用一个单词替换英文句子中的另一个单词。比较两个英文句子的不同点,输出不同点的位置。
七、画图案
画各种三角形图案。画各种菱形图案。画各种平行四边形图案。画各种梯形图案。画各种正多边形图案。(以上图案包括空心的或实心的两种。要采用两种方法画一种图案:①用二维数组;②只用循环不用二维数组。不能全用二维数组画!)
用以上几种基本图案组合成一个新图案。
八、商品信息管理系统
每件商品信息包括编号、商品名、类型、生产厂家、生产日期、单价、库存量等项内容,本系统可以实现如下功能:往系统里添加新商品的各项信息;修改现有商品的各项信息;查找并显示满足某条件的商品的信息;按某个给定的条件将商品排序并显示排序结果;统计满足某条件的商品的库存量;计算某种商品的总价值(单价乘库存量),以及某几种商品的总价值。
九、优秀歌手比赛评分系统
比赛共有M个歌手参赛,共有N个评委为歌手打分。每次评分,由N个评委每人给歌手一个分数,然后去掉一个最高分,去掉一个最低分,求出其余N-2个分数的平均分,作为歌手的得分。本系统可以实现如下功能:按评委给分顺序显示某个参赛歌手的得分;显示某个参赛歌手所得的最高分和最低分;求出每个参赛歌手的得分;按参赛歌手的得分从高到低排序并显示排序结果;显示某个评委打出的M个分数;计算某个评委打分的平均值;查找满足给定得分范围的歌手。
十、工资管理系统
某单位有N个,职工工资信息包括基本工资、岗位津贴、地方津贴、奖金、扣公积金、扣税、实发工资等项内容,将N个职工的这些内容存入本系统。可以利用本系统实现如下功能:往系统里添加新的职工工资信息内容;根据给定的条件修改现有的职工工资内容;删除某个职工工资内容;根据给定的条件查找并显示某个职工工资内容;显示符合某个条件的所有职工工资内容;统计某项工资内容的总和;计算某个职工的实发工资(基本工资+岗位津贴+地方津贴+奖金-扣公积金-扣税);计算符合某个条件的所有职工的实发工资总和。
十一、学生成绩管理系统
该班共有N个学生,共开M门课,将已经结束的每门课的成绩存入本系统,将学生的学号和姓名存入本系统。可以利用本系统实现如下功能:往系统里添加新的课程成绩;根据给定的条件修改现有的课程成绩;删除某个学生的学号、姓名和各门课的成绩;根据给定的学生的学号和姓名,查找并显示该学生各门课的成绩;计算所有学生某门课的平均分;计算某个学生各门课的平均分;按每个学生得总分从高到低排序并显示排序结果。
十二、职工档案管理系统
某单位有N个职工,每个职工有编号、姓名、性别、出生日期、毕业学校、电话号码、职务等项内容,将N个职工的这些内容存入本系统。可以利用本系统实现如下功能:往系统里添加新的职工档案内容;根据给定的条件修改现有的职工档案内容;删除某个职工档案内容;根据给定的条件查找并显示某个职工档案内容;显示符合某个条件的所有职工档案内容;统计满足某个条件的职工人数;按某个给定的条件将职工排序并显示排序结果。
十三、图书信息管理系统
每本图书信息包括编号、书名、作者、出版社、出版日期、单价、册数等项内容,本系统可以实现如下功能:往系统里添加新图书的各项信息;修改现有图书的各项信息;查找并显示满足某条件的图书的信息;按某个给定的条件将图书排序;统计满足某条件的图书的册数;计算某种图书的总价值(单价乘册数),以及某几种图书的总价值。
十四、运动会分数统计系统
共有M个运动代表队,每个代表队参加N项比赛。每项比赛的第1名得10分、第2名得8分、第3名得5分,其它名次不得分。输入每项比赛的代表队排名。本系统可以实现如下功能:统计各代表队所得的总分;将各代表队按总分值从高到低排序,然后显示输出;查找某个代表队参加某项比赛的成绩并显示;查找某个代表队的总分和各项比赛的得分并显示;查找某项比赛取得某个名次得代表队名称。
c课程设计报告参考 篇2
从GPS系统的建立到现在, GPS接收机随着电子工业发展而经历了巨大的演进。GPS接收机刚建立时采用的是模拟信号处理技术, 用微处理器仅进行应用计算, 这种接收机体积大且功耗高。随着数字处理技术和数字集成电路的发展, GPS接收机中的模拟信号处理技术己经被数字信号处理技术所取代。现代GPS接收机通常采用专用集成电路进行信号处理, 并且随着算法越来越复杂, 芯片的规模也越来越大, 这使得芯片在tape_out之前的验证工作越来越重要。而搭建验证环境是芯片验证工程师最基本的工作。
本文主要描述GPS基带处理芯片验证环境中参考模型部分的设计。之所以选择C语言来设计是因为它对算法的描述更接近于底层, 而且通用性好, 基本上可以在任何验证环境下运行。整个设计是在Visual C++6.0的软件环境下实现。
(一) 芯片验证原理
目前在百万门级以上的ASIC、IP和SOC设计时代, 验证消耗整个设计努力的70%左右, 验证做得好坏已经成为芯片开发的瓶颈, 所以它有足够的理由来引起我们的重视。验证环境是指用于芯片顶层功能验证的各个组件的集合。如下图所示, 验证环境的总体功能就是根据测试用例的要求Generator自动生成所需的激励信号, 然后分别将信号送入DUT (待测模块) 和Reference Model (参考模型) , 激励信号分别经过处理后进入Checker (比对模块) , 通过对比结果来检查芯片的设计是否满足功能需求。
(二) GPS接收机原理
GPS接收机的基本功能是接收GPS卫星信号、为用户提供数据观测量、解调导航电文、实现导航解算, 为用户提供定时、定位和测速服务。一般导航用GPS接收机功能结构框图如图2所示。根据各部分的工作特点, 可将之分割成四个功能模块, 即GPS信号接收模块、射频前端模块、基带信号处理模块和应用导航解算模块。
因为本文是设计GPS基带芯片的验证环境, 所以我们只关注基带处理模块。基带处理模块按功能主要分为两部分:捕获和跟踪。捕获是利用伪随机码良好的相关特性, 检测本地C从码和卫星信号伪随机码的相关输出。对某一颗可见卫星, 当本地C/A码的码相位、本地载波的频率和输入信号中的码相位以及载波频率相匹配时, 有最大的相关值。本地C/A码的码相位与输入信号中的码相位在任何一边的偏移超过一个码元时, 有最小的相关值。当检测到最大相关值时便达到了捕获的目的。捕获到GPS卫星信号后, 可以得到输入信号中载波Doppler频移值和码相位的估计值。这时接收机可转入跟踪状态, 跟踪环路的作用是跟踪码相位变化和载波Doppler变化, 从而实现接收机本地复现信号同输入信号的准确同步。跟踪码相位变化和载波Doppler变化是由于卫星和接收机之间相对运动带来的。跟踪环路实现对GPS信号的跟踪以后, 即可提取准确的观测量和导航电文信息, 从而进行用户的PVT解算。GPS信号跟踪中包括两个环路:伪码跟踪环和载波跟踪环。伪码跟踪环跟踪GPS信号中C/A码的相位变化, 而载波跟踪环实现对载波频率、相位的跟踪。
(三) 设计实现
GPS接收机的算法有很多种, 为了可以对芯片设计子模块也进行结果比对, 本设计采用与芯片设计相同的算法实现。
1. 捕获部分
为了跟踪GPS信号并进行信息解码, 就必须先用捕获程序来检测信号的存在, 并将参数传递给跟踪环节。GPS信号的搜索主要是利用了伪随机噪声码的良好的自相关性, 当本地复现码与输入信号的码元完全对准时, 出现一个自相关峰值;随着码元的相位偏差越来越大, 两者的相关峰值逐步降低;当两者的偏差超过一个码元时, 两者相关值基本为零。为了捕获到GPS卫星信号, 需要同时复现卫星和载波, 由于多普勒效应, 载波L1的频率会在标称频率基础上产生偏差。码元和频率的复现是通过一个遍历的搜索过程来实现的。GPS信号的捕获算法主要分为两种:串行时域滑动相关捕获算法和并行频域捕获算法。
(1) 串行时域滑动相关捕获算法
该算法首先在一定的范围内任意选定一个载波频率, 在这个载波频率下将本地C/A码序列和输入的信号相乘并进行一个C/A码周期 (lms) 或者更长时间的累加, 并记录累加结果。然后移动一定数目的C/A码码元 (通常为1/2个C/A码元的整数倍) , 更改C/A码码相位重复上述过程。当所有可能的C/A码码相位都搜索完毕并记录累加结果后, 则换一个载波频率重复上述过程, 直至所有的C/A码码相位和载波频率 (多普勒频率范围内) 都全部搜索完毕。将所有对应于不同频率和C/A码码相位所得到的累加结果进行比较, 如果其最大值大于设定的门限, 则认为捕获到信号, 最大值所对应的C/A码码相位和频率值即为捕获到的结果, 然后接收机切换到到码跟踪环路和载波跟踪环路。如果其最大值小于设定的门限, 则认为这个周期捕获信号失败, 需要加载一个另一颗卫星的C/A码重新进行捕获。
该搜索方法的优点是结构简单清晰, 易于实现, 缺点是搜索耗时较长, 一般的硬件接收机采用此种算法。
(2) 并行频域捕获算法
在时域滑动相关捕获方法中, 捕获过程就是复现不同码相位本地C/A码和不同频率的本地载波, 然后与输入信号做相关取最大值的过程。时域滑动相关捕获方法需要的计算量较大, 运行时间长。频域快速捕获算法, 将时域大量的相关运算变换到频域的简单的乘法运算, 然后再通过逆傅里叶变换 (IFFT) 得到时域的相关运算结果, 可以极大的减少运算量, 提高捕获速度。
两个信号x (n) 和y (n) 相关的时域和频域表示分别为:
两个信号x (n) 和y (n) 卷积的时域和频域表示分别为:
两个信号的相关运算和卷积运算在频域上是基本一致的, 只是其中一个信号互为共轭而已。频域快速捕获算法正式利用这一性质。
本设计正是采用并行频域捕获算法, 算法实现流程如图3所示。
数字中频信号经过RF模块下变频至1.405MHz, 并以5.714MHz采样频率进行采样。本设计数据来自于Matlab的Simulink仿真产生的理想数, 按照GPS信号的调制方式生成的数据存入到文件中。算法的实现过程描述如下。
读入1ms数据存入数组中, 因为采样率为5.714MHz, 所以1ms为5714个数据。本地生成载波序列, 载波序列同样是以5.714MHz来采样, 由于GPS信号的Doppler效应, 所接收到的GPS信号的载波频率在中心频率左右±10KHz范围内变化, 为了使捕获所得到的结果能够尽快的进入跟踪, 载波频率的搜索步长取175Hz。将含有5714个数据的载波序列与读入序列相乘再进入低通滤波器得到I、Q两路信号, 由于接下来要对复信号进行FFT变换, 5714点的FFT或者IFFT计算量巨大, 而且5714点并非基2或者基4, 考虑到1024点FFT的可行性, 把5714点的数据下采样到1024点, 然后FFT变换到频域。
弌本地生成所要捕获卫星的C/A码序列, C/A码的频率为1.023MHZ, 1ms有1023个数据, 这也不是基2或者基4, 所以先将这1023个数据上采样到5714, 然后再下采样到1024。也同样对这1024个数据做FFT变换, 变换到频域后的复信号取共轭。
FFT的整个过程就像公式 (1) ~ (4) 描述的那样, 有时域的卷积转换成频域的序列相乘, 将两个序列相乘后再做IFFT变换回时域, 然后对I、Q两路计算平方和, 并与预先设定好的门限比较, 超过门限代表捕获成功, 捕获过程输出当前载波频率和C/A码相位, 送给后续跟踪部分。如果当前载频没有超过门限的数据, 载波频率增加175HZ重复上述过程直到捕获后退出捕获模块, 如果以175HZ为步长遍历所有频率没有捕获到卫星, 中断程序, 报告捕获失败。
2. 跟踪部分
捕获到GPS卫星信号后, 可以得到输入信号中载波多普勒频移值和码相位的估计值。这时接收机可转入跟踪状态, 跟踪环路的作用是跟踪码相位变化和载波多普勒变化, 从而实现接收机本地复现信号同输入信号的准确同步, 提取准确的观测量和导航电文信息, 进行接收机导航解算。信号的跟踪过程主要包括两部分:即信号的载波同步、码同步, 分别通过载波跟踪环和码跟踪环来实现。算法实现流程如图4所示。
跟踪部分使用的数据通捕获部分一样是由MATLAB生成的理想数据。读取1ms数据, 由之前捕获部分获得的载频生成载波序列与读入的数据相乘去载波并获得I、Q两路数据。捕获程序确定了C/A码的起始位置。码环产生超前和滞后的C/A码序列, 这两种码序列是由即时C/A码经过时移得到的, 本地C/A码就是即时C/A码, 由捕获程序确定。将超前、即时和滞后的码序列分别与I、Q两路数据相乘并做累加, 累加后得到IP、IL、IE、QP、QL、QE六个数据, P、E、L分别代表即时、超前和滞后数据[10]。将六个数据送入码鉴相器, 经过鉴相器的判断调整即时C/A码的相位。
为了能够从信号中提取出所需要的导航数据, 就必须要知道准确的载波信号。为此常用载波锁相环 (PLL) 或者锁频环 (FLL) 来实现。常用锁相环存在致命的缺点在于其对180度的相位翻转敏感, 然而由于导航数据而造成的相位翻转是必然的, 因为在一般情况下, 输入的中频信号经过载频和码信号剥离后, 50Hz的导航电文数据调制信号依然保留, 导航电文可能每隔20ms, I路和Q路的信号可能会产生180度的相位翻转。因此, 对数据调制不敏感的科斯塔斯 (costas) 环被用于GPS接收机载波跟踪中。将IP和QP两个数据做反正切运算, 得到采样的中频信号的初相与载波初相的相位差, 并且可由相位差得到频率差, 进而得到修正后的载波频率。
(四) 功能验证
如前所述, 本设计数据源来自于MATLAB的理想数据, 设定信号载频为1.411MHZ, CA码序号为7, 相位偏移为230个码片。将数据输出RM中, 由于MATLAB绘图比较方便, 并且效果直观, 将捕获部分数据再送入MATLAB, 最终捕获结果与设定一致。MATLAB输入效果如图5所示。
(五) 结论
本文使用C语言实现了对GPS基带处理部分的功能。目前大多数软件接收机的架构都采用MATLAB直接实现, MATLAB的优点是实现简单, 运算能力强, 有很多模块可以直接拿来使用。但是由于MATLAB的可移植性不强, 目前大多数芯片设计公司的设计工作都是在LINUX系统下进行, 还是非常有必要用C语言这种通用性强, 移植性好的方法来设计验证环境中的参考模型。
摘要:文章研究了基于C语言的GPS基带处理芯片验证环境的设计, 对芯片验证理论进行了简要介绍, 对传统时域滑动捕获算法和基于FFT的并行频域捕获算法进行了介绍, 并对FFT的并行频域捕获算法的详细实现过程进行了描述。跟踪部分采用超前—滞后跟踪环对C/A码进行跟踪, 采用科斯塔斯环对载波进行跟踪。使用MATLAB对设计进行了验证。
关键词:芯片验证,FFT频域捕获,超前—滞后跟踪环,科斯塔斯环
参考文献
[1]Elliott D.Kaplan, Christopher J.Hegarty.GPS原理与应用[M].北京:电子工业出版社.2007.
[2]JANICK B.SystemVerilog验证方法学[M].北京:北京航空航天大学出版社, 2007.
[3]朱群, 郑林华.一种基于FPLL的载波跟踪算法[J].电子工程师.2004, 30 (12) :30-33.
[4]张勇, 林宝军, 徐志瀚.软件GPS接收机信号搜索捕获的仿真实验研究[J].系统仿真学报, 2006, v18 (9) :2646-2649.
C程序设计课程教法探究 篇3
一、注重首次课的启发和引导作用
首次课,学生怀着好奇又恐惧的心理坐到课堂上,渴求新知,却又担心教师会讲出一些深奥理论,难以理解、消化。面对这种状况,教师应该从实践入手,培养学生对课程的兴趣,拉近学生与课程之间的距离,激发学生的学习主动性;然后,讲授学习方法,鼓励学生大胆实践,将枯燥的编程课变成生动活泼的引导课,为学生今后的学习打好基础。
1.演示程序运行过程,激发学习兴趣
在Tuber C 2.0编译环境下,导入“俄罗斯方块”游戏程序,编译、连接、运行,展示程序执行结果。通过这种方式,既可以让学生熟悉从C语言源程序到可执行文件的整个操作流程,又可以激发学生的兴趣,使学生认识到C语言并不是枯燥乏味的计算机理论,而是有血有肉、活灵活现的计算机程序,从而消除其畏惧心理,增强学习的主动性。
2.传授学习方法,强调学习的意义
有了学习兴趣,更要有好的学习方法。C语言是一门实践性很强的课程,最有效的学习方法就是将理论和实践结合起来,通过理论带动实践,通过实践强化理论,从而改善学生盲目的学习状况。在首次课上,可以用简洁的语言告诉学生如何预习、听课、复习,但应重点强调如何通过实践锻炼学生的动手能力和解决问题的能力。同时,C语言是学生学习后续编程语言的基础,虽然程序设计语言更新很快,但如果能够通过C程序设计课程掌握程序设计思想,具备真正解决实际问题的能力,那么,学习其他语言也会更加得心应手。
3.严格要求学生出勤,保证课程正常衔接
对初学者来说,C程序设计课程是非常深奥复杂的,一旦缺课,就很难再跟上教师的进度。因此,教师在首次课应着重强调听课的重要性,避免学生因懈怠或无关紧要的事情缺课,耽误学习。如果学生因病或重大事件不得不耽误课程,教师应利用业余时间帮助学生补习,保证课程的连续性和教学的整体进度。
二、始终坚持理论教学与学生实践相结合的教学方法
对于C程序设计课程来说,实践是至关重要的。因此,在整个教学过程中,一定要坚持理论学习和上机实践两手抓、两手都要硬。在理论课堂上,启发学生思想、开拓程序思路、讲明知识要点。上机课也不能流于形式,照抄照搬书中例题,而应给学生思考的空间,启迪学生敢于创新、勇于实践,锻炼学生解决问题的能力,使学生既掌握书中的重点算法,又充分感受到程序设计的乐趣。同时,理论课程与上机实践应紧密融合,学一部分知识,上机实践相应的内容。这样,学生既锻炼了动手和解决问题的能力,又巩固了所学的知识,否则理论和实践脱节,就失去了实践的意义。在实践过程中,还应该让学生养成预先分析题目、确定算法与数据结构、在纸上编出程序源代码的好习惯。这样,上机时,就可以将主要精力放在调试程序上面,提高上机效率。
三、巧妙引入软件工程的基本思想
在软件工程中,软件的生存周期包括“问题定义、可行性研究、需求分析、概要设计、详细设计、编码、调试、运行与维护”几个阶段,C语言编写的程序也是如此。但是,初学者对软件生存周期的认识不深,容易忽略,致使软件结构不合理、运行缓慢或难以维护。教师可以通过日常教学,逐渐培养学生编程中的软件工程思想,帮助学生养成良好的编程习惯,培养学生分析问题、解决问题的能力,培养学生的创新精神、团队意识,为学生今年从事IT行业做好铺垫。
C程序设计课程是学生学习编程语言的基础,在学生整个学习过程中占据着非常重要的地位。教师必须通过科学的教法,巧妙引导学生,帮助学生有效学习新知,养成良好的编程习惯,从而为学生今后的学习打下坚持的基础。
贪吃蛇C语言课程设计报告 篇4
贪吃蛇游戏设计
姓名: 张力
学号: 1002032
3完成日期: 月 日1
贪吃蛇游戏程序设计报告
一、设计目的
贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣
二、总体设计
主函数
↓
图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close
↓
游戏结束GameOver 输出成绩PrScore
三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)
①主函数main():
定义使用的常数,全局变量及函数原型说明,并调用Init()函数初始化图形系统;然后调用DrawK()函数画界面,调用GamePlay()函数实现游戏的具体过程,游戏结束后调用Close()函数关闭图形系统结束程序。
②画界面函数DrawK():
主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。
③游戏具体过程函数GamePlay():
算法过程:
a.设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始方向;
b.循环执行,直到按Esc键退出; c.没有按键的情况下,循环执行。
如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇
贪吃蛇游戏程序设计报告
移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如果出现这两种情况之一,则蛇死;调用游戏结束函数GamePlay(),结束本次游戏;
判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等;如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。
在新位置画出蛇。采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。
D.如果有按键,则识别按键值。如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变蛇方向的变量direction的值,相反方向键无效。
④游戏结束函数GameOver():
游戏结束,清除屏幕,调用输出分数函数PrScore(),并显示游戏结束。
⑤输出分数函数PrScore():
在指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,、bar()函数的应用是为了覆盖原来的值。
⑥图形结束函数Close():
在显示游戏结束信息的画面时,按任意键关闭图形系统,程序结束。
四、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题和采取的解决措施等;
将源文件在TC3.0环境下调试运行,前期发现错误为游戏界面静止。
五、源程序清单及执行结果:
#include
贪吃蛇游戏程序设计报告
#define UP 0x4800 #define Esc 0x011b #define N 200 /*定义全局变量*/ int i,key;int score=0;/*得分*/ int gamespeed=50000;/*游戏速度可以自己调整*/ struct Food { int x;/*定义食物的横坐标*/ int y;/*定义食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct snake { int x[N];int y[N];int node;/*蛇的节数*/ int direction;/*蛇的移动方向*/ int life;/*蛇的生命,0活着,1死亡*/ }snake;
void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏的具体过程*/ void PrScore(void);/*输出成绩*/
/*图形驱动*/ void Init(void){ int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,“D:TC30LIB”);}
/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){ setbkcolor(LIGHTGREEN);setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ {
贪吃蛇游戏程序设计报告
rectangle(i,40,i+10,49);/*上边*/
rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10){
rectangle(50,i,59,i+10);/*左边*/
rectangle(601,i,610,i+10);/*右边*/ } }
/*玩游戏的具体过程*/ void GamePlay(void){ randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*蛇还活着^ ^*/ snake.direction=1;/*方向向右*/ snake.x[0]=100;snake.y[0]=100;/*蛇头*/ snake.x[1]=110;snake.y[1]=100;snake.node=2;/*蛇的节数为2*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,按Esc键结束*/ {
While(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/
{
if(food.yes==1)/*需要出现新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*画面上有食物了*/
}
if(food.yes==0)/*画面上有食物了就要把它显示出来*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇一个节一个节地往前移*/
{
snake.x[i]=snake.x[i-1];
贪吃蛇游戏程序设计报告
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右左上下四个方向,通过判断这个来移动蛇头*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}
/*从蛇的第四节开始判断蛇有没有自己把自己吃掉*/
for(i=3;i { if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) { GameOver();/*显示游戏结束*/ snake.life=1;/*蛇死了T T!*/ break; } } If(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*判断蛇是否撞到墙*/ { GameOver();/*游戏结束*/ snake.life=1;/*蛇死了T T!*/ } if(snake.life==1)/*如果蛇死了就跳出内循环,重新开始*/ break; if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃掉食物啦!*/ { setcolor(0);/*把画面上的食物颜色覆盖掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.x[snake.node]=-20; snake.y[snake.node]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node++;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10;/*加十分!*/ PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i 贪吃蛇游戏程序设计报告 rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的最后一节*/ rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死了就跳出循环*/ break;key=bioskey(0);/*接收按键*/ if(key==Esc)/*按Esc键退出*/ break;else if(key==UP&&snake.direction!=4)/*判断是否往相反方向移动*/ snake.direction=3;else if(key==RIGHT&&snake.direction!=2) snake.direction=1;else if(key==LEFT&&snake.direction!=1) snake.direction=2;else if(key==DOWN&&snake.direction!=3) snake.direction=4;}/*endwhile(1)*/ /*游戏结束*/ void GameOver(void){ cleardevice();/*清除屏幕*/ PrScore();/*输出得分*/ setcolor(RED);settextstyle(0, 0,4);outtextxy(200,200,“GAME OVER”);/*显示游戏结束*/ getch();} void PrScore(void)/*输出成绩*/ { char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,“score:%d”,score);outtextxy(55,20,str);} 贪吃蛇游戏程序设计报告 void Close(void)/*图形结束*/ { getch();closegraph();} 题目:数控加工工艺与编程设计 系部:机械学院 专业:机械设计制造及其自动化 班级: 姓名: 学号: 2015年1月4日 数控编程课程设计任务书 目录 1.绪论(1 2.设计目的(1 3.设计任务(1 4.车床加工零件编程设计步骤(2 4.1 工件基准的分析(2 4.2 工件的加工方案(3 4.3选择机床设备(3 4.4选择刀具(3 4.5确定切削用量(3 4.6数控加工工序卡片(3 4.7 程序编制的步骤(4 4.7.1 依据图样要求,确定加工工艺方案,即加工路线(4 4.7.2 选择刀具并画出刀具布置图(4 4.7.3 合理选择切削用量(5 4.8 编写零件加工程序(5 5.车床加工程序仿真图形(6 6.铣床加工零件编程设计步骤(8 6.1 零件结构工艺分析、毛坯及加工定位基准的确定(8 6.1.1零件图的分析(8 6.1.2毛胚的确定(9 6.1.3 工件基准的分析(9 6.2 铣床工件加工方案(9 6.3 选择机床设备(10 6.4 选择刀具(10 6.5 确定切削用量(10 6.7 数控加工工序卡片(10 6.8 确定工件坐标系、对刀点(11 6.9 编写零件加工程序(11 7.铣床加工程序仿真图形(12 8.心得体会(13 9.主要参考文献(14 1.绪论 制造技术和装备就是人类生产活动的最基本的生产资料,而数控技术又是当今先进制造技术和装备最核心的技术。当今世界各国制造业广泛采用数控技术,以提高制造能力和水平,提高对动态多变市场的适应能力和竞争能力。大力发展以数控技术为核心的先进制造技术已成为世界各发达国家加速经济发展、提高综合国力和国家地位的重要途径。 数控技术的广泛应用给传统的制造业的生产方式,产品结构带来了深刻的变化。也给传统的机械,机电专业的人才带来新的机遇和挑战。 随着我国综合国力的进一步加强和加入世贸组织。我国经济全面与国际接轨,并逐步成为全球制造中心,我国企业广泛应用现代化数控技术参与国际竞争。数控技术是制造实现自动化,集成化的基础,是提高产品质量,提高劳动生产率不可少的物资手段。 此业设计让我们毕业生更好的熟悉数控车床,确定加工工艺,学会分析零件,学会简单的程序编程,以及数控仿真,为走上工作岗位打下基础。 本次数控课程设计是为了让我们更清楚地理解怎样确定零件的加工方案,对零件进行编程,并在仿真软件上进行模拟加工。这样的课程设计对我们即将走上工作岗位的毕业生来说无疑是对我们说学知识的一次检验和提高。 2.设计目的 本课程设计是学完数控技术之后,进行的下一个实践性教学环节,它一方面要求学生能根据零件图,用ISO码编制数控加工程序,熟悉加工程序输入、检查、编辑及执行的方法,另一方面,为今后的毕业设计、今后从事数控加工进行一次综合训练。 3.设计任务 车床和铣床加工零件各一个,要求为下面两个零件写出完整的从图纸到零件的工艺流程,并用仿真软件作出模型。 4.车床加工零件编程设计步骤 4.1 工件基准的分析 此工件的径向尺寸设计基准为中心线,轴向尺寸设计基准为右端面。采用三爪自定位卡盘装夹,定位基面为外圆,可认为定位基准为中心线,满足基准重合原则。用三爪自定心卡盘夹持φ60外圆,使工件伸出卡盘100㎜,一次装夹完成粗精加工。 车削零件图样坐标点的计算: A(0,130 B(48,120 C(48,70 D(60,50 E(80,30 F(10,120 S(130,200 H(100,70 4.2 工件的加工方案 因为工件的尺寸精度和表面粗糙度要求较低。先粗车端面及φ40㎜外圆,φ45㎜外圆,φ54㎜外圆,留1㎜半精车余量;再半精车φ40㎜外圆,φ45㎜外圆,φ54㎜外圆至尺寸。 4.3选择机床设备 根据零件图样要求,零件外形不是特别复杂,选用经济数控车床即可达到要求。可选用FANUC_0iT型数控车床。 4.4选择刀具 根据加工要求,要粗车和精车,所以选用两把刀具,T01为1号90°偏刀,作为粗车车刀;T02为2号90°偏刀,作为半精车车刀。同时把两把刀在自动换刀刀架上安装好,且都对好刀,把它们的刀偏值输入相应的刀具参数中。 4.5确定切削用量 查阅《切削用量简明手册 真的准备了此次设计任务,使我感受到了,仅仅只会编程这样一个还是不行,还要系统 的学习其他方面的很多知识,比如一些常用的软件 CAD,PROE,数控仿真软件等,在本 行业中还要学习材料科学,加工基础多门课程。可见,在以后的工作中,如果真的想做 好一件事情,把一件事情做出色还是不那么容易的,很多时候看到别人总是那么容易的 就设计出来了,其实里面包含了以前的许多汗水。所以,不管学什么都要认真的去学。本次设计最头疼的就是数控加工软件的学习了,在刚开始接触的时候是在大二,觉 得相当新奇,有学习的欲望,可是就是不知道怎么样使用它,感到非常的郁闷。而自己 也没有那样的耐心去学习,总认为以后的时间还多的是,以后再学习吧。到了现在真正 要用的时候,再去仓促的学习,才知道自己的应用能力是如此的匮乏。在使用该软件时,刚开始就自己摸索,怎么样开机,怎么样装夹工件,没取得一小部分成功就对自己笑一 下,可是后来实在是不知道怎么样去做了,就下载了视频教程,跟着视频操作步骤一步 一步的来学习。功夫不负有心人,学了很久才有一点点起色。很多时候将现有书本上的 程序输入到仿真软件中都出现错误,或者运行后根本就不是所要的结果。由此可见,理 论和现实还是有一定差别的。在使用仿真软件中,我们感受到了操作数控车的体验,现代的数控加工仿真软件还 能实现加工模拟演示功能和程序自诊断功能,不仅具有对我们的编制的数控程序进行自 动检测、具体指出错误原因的功能,还具有在真实设备上无法实现的三维测量功能。这 样可以让我们能比较完整地学到知识,还能锻炼自己的胆量,培养我们以后在实际工作 中操作车床的自信心。总之,在本次的数控程序编程课程设计中,由于谭华老师对我们兴趣的启发与引 导,精心设计安排此次课程设计的内容,还特意给我们更多的课程设计时间按,使我 们能更好地达到课程设计目的,为以后做毕业设计做好充分的准备。9.主要参考文献: [1] [2]李恩林主编.数控技术原理及应用.北京:国防工业出版社,2006 [3]王侃夫主编.机床数控技术基础.北京:机械工业出版社,2004 [4] 报告人情况: 班级:自控1102姓名:赵铎学号:2011010807理论课老师姓名:李文杰实验课老师姓名:张红霞 学习到了以下内容:1、2、3、4、5、6、7、8、9、掌握C语言中,基本的输入输出函数的使用方法。掌握printf中转义字符’t’,’n’的用法。掌握赋值语句的用法。掌握算术表达式、赋值表达式的计算。掌握数学函数的使用。掌握关系运算及其表达式。掌握逻辑运算及其表达式。掌握条件运算符。掌握if语句。 10、掌握switch语句。 11、掌握for,while语句的使用方法。 12、掌握直到型循环do-while的用法。 13、掌握break,continue的用法。 14、掌握函数的分类。 15、掌握自定义函数的方法。 16、掌握自定义函数的调用用法。 17、掌握函数参数的传递。 18、掌握全局变量,局部变量,静态变量的使用。 19、掌握数组的定义。 20、掌握数组的引用,使用方法。 21、掌握字符串的储存与操作。 22、掌握字符串作为特殊的一维数组。 23、更加娴熟使用数组解决问题。 24、掌握二维数组的使用方法。 25、更加熟悉字符串解决问题的方法。 26、增强了数组中排列顺序的逻辑关系。 27、掌握指针的概念。 28、掌握指针定义,赋值,引用的方法。 29、掌握指针访问一维数组的方法。 30、掌握指针作为参数的使用。 31、掌握指向数组的指针作为函数参数。 掌握了以下: 1、掌握C语言中,基本的输入输出函数的使用方法。 2、掌握printf中转义字符’t’,’n’的用法。 3、掌握赋值语句的用法。 4、掌握算术表达式、赋值表达式的计算。 5、掌握数学函数的使用。 6、掌握关系运算及其表达式。 7、掌握逻辑运算及其表达式。 8、掌握条件运算符。 9、掌握if语句。 10、掌握switch语句。 11、掌握for,while语句的使用方法。 12、掌握直到型循环do-while的用法。 13、掌握指针的概念。 14、掌握指针定义,赋值,引用的方法。 15、掌握指针访问一维数组的方法。 自己的经验 学习C语言绝不是听懂就可以的,而是必须自己动手去实践,从自己的实践中找到不足和缺点,及时发现和改正能使自己记得更加牢固,使以后编写程序更加流畅和严谨! 对老师的意见 【关键词】C语言 程序设计 实验 考核体系 【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)37-0234-01 1.引言 C语言程序设计(实验)通过上机实践,可以帮助学生巩固课堂教学的理论知识,真正体现学生将知识“内化”的过程[1],意在培养学生分析问题、解决问题的实际动手能力和创新能力。传统的实验课程考核方式单一,不能公正的评价学生的实际综合能力。为了全面培养学生的学习兴趣、全面考查学生的综合知识点,全面注重学生的创新能力和实践能力的提高,以达到培养创新人才的目的,切实推进课程考核改革及考核体系已经刻不容缓[2]。 2.课程简介 程序设计基础是一门专业基础课,这门课通过全面、深入、系统地介绍程序设计方法和程序设计语言,使学生初步建立起程序设计的基本概念,通过学习一种典型的程序设计语言(C语言),初步掌握程序设计方法,具有一定的程序设计能力。我院的程序设计基础(C语言)分上下两个学期,程序设计基础(一)和(二),程序设计实验是单独的一门课程,有程序设计基础(一)实验和(二)实验,实验内容主要是辅助,强化理论各个章节的知识点,提高学生的动手能力为目的进行设计的。 本考核体系是基于程序设计基础(一)实验设计的。我院程序设计基础(一)主要的内容有:数据的表示、组织和处理、程序的基本结构控制(顺序、选择和循环)。 3.現行的考核方式 现行的考核方式比较单一,是从三个方面进行成绩给定:(1)考勤;(2)实验报告;(3)创新设计。这里的(2)和(3)都是以实验报告来给定成绩,其中一部分以实验报告的书面结果给定成绩,另一部分以答辩实验报告的方式给定成绩。现行的考核方式不能公正的评定学生的实际综合能力,也没有促进学生进行创新设计。 4.全程考核体系的构建 全程考核体系意在促进学生核心能力的提升,在学习过程和学习结果两个维度上设置考核指标:过程考核可以提高课程的教学质量,培养学生的学习能力以及提高学生的协作能力、表达能力、沟通能力等综合素质;结果考核目标是使学生掌握基本理论、基本知识的基础上增强职业素养与专业技能,提高分析问题及解决问题的能力。 全程考核体系: (1)考勤 考勤是学生学习的基础和保证,能促使学生养成遵章守纪的习惯,以培养学生进行自我管理。每次实验使用E-learning系统进行签到记录。 (2)实验报告 实验课中,教师观察、了解学生学习的过程,学生参与课堂活动的广度和深度,学生学习过程中表现出来的解决问题的能力。而实验报告是实验过程中唯一存档的资料,是值得重视的环节。教师根据学生的实验报告的完成步骤、完成程度以及答辩等对每次实验进行综合评价。 (3)综合大作业 为培养学生的创新能力及实践工程能力,让学生以三人一组,综合运用所学知识,共同自主学习、相互启发、收集资料、团队协作开发一个趣味性、实用性的小系统。 大作业从三个方面给定成绩:一是系统的整体评价;二是团队分工;三是团队成员各自答辩情况。 成绩给定之一:系统的整体评价包括科学正确性、趣味性/适用性、界面的清晰性。成绩给定之二:根据团队的分工,评价团队各成员的工作量。成绩给定之三:团队成员各自的答辩情况加入各自的成绩。 (4)期末无纸化考试 为对学习结果进行公正的考核,且激发学生对C语言的热爱,我们用C语言编写了一个无纸化考试系统,并让学生观摩编制考试系统中的主要算法。考试系统的中的试题均为编程题目,按照实验教学大纲的知识模块将试题划分成几个组,每个组中的题目难度相当,考试系统从每个组中抽取一道编程题目,随机组成程序设计试卷。 考试过程中,为保证公正,避免学生考试上网查阅资料,使用E-learning系统控制学生,禁止其使用电脑的浏览器、U盘。 考试成绩从三个方面给定:一是程序结果,单纯地考核程序运行的正确性;二是程序设计思路;三是理论基础知识。 5.结束语 本考核体系应用于本学院15级数字媒体专业,将考核贯穿于整个学习过程中,调动了学生学习的兴趣,学生的实践能力和创新能力得到了一定的提升,能更公正地评价学生的综合能力,学生也表现出了对该门课程的热情和自信,本考核体系得到了学生的一致认可。 参考文献: [1]王丽娜,吕红,张杰,任颖.《计算机程序设计实验》课程的教学改革与实践.计算机工程与科学.2014年.第A1期. 学院 学院:信息工程学院 部门:文体部 姓名:刘少卿 信息 有时候不得不感叹时间过得太快,转眼间我已经在学院学生会担任文体部部长半年了,这半年有很多的收获,也有些遗憾。我在担任部长的一年不仅学会了很多工作中的知识,更懂得了作为一个部长不仅应有领导能力,更要有良好的共同协调能力,能充分发挥各个部员的优势来更好的完成工作,积极听取别人的建议。我会尽力将担任部长一年来的工作心得,以便能更快适应工作,更好的促进文体部发展。 回顾这一学期,我们文体部的新成员都慢慢地成长起来,在这学期我们手牵手坚持不懈的完成了工作,其中有欢乐,有无奈,可我们都在这段经历中学会了团结协作,懂得了责任与担当,工作能力上也得到很大的提升。 在学院领导的关心支持下,学生会换届工作顺利进行,文体部共招收干事 9 名,学生会日常管理工作得以正常开展起来。2014级新生的加入,为文体部注入了新的血液,大家最初都不太熟悉彼此,比较的陌生,但经过这一个学期的共同工作,相互之间都比较熟悉了,大家的默契度也提高了,这对部门的工作开展有了很大的帮助。 为了增强团体合作精神,展现当代大学生积极向上的精神风貌,活跃学习氛围,给同学们一个真正展示自我风采和勇气的舞台,使同学们的大学生活过得更加丰富多彩,更加有意义。我们文体部与其他各个部门协同举办或参与了许多有趣的活动,如:新生篮球赛、运动会、乒乓球比赛、羽毛球比赛、脱口秀、拔河友谊赛等。在这些比赛中同学间增进了友谊,班级间的关系更加融洽,也让我们的工作能力得到了进一步的锻炼。我觉得这些活动充分发挥了体育活动的功效,不管比赛结果如何,我们展示了我们光彩,我觉得很成功! 在一系列的活动期间,文体部取得了很多成绩,但也有不足。 1、部门的定位欠缺,导致部分活动的后续跟进工作进展缓慢。 2、因为各种因素,部门内部分工不平衡,有所失调。 3、没有给干事提供充足的锻炼的平台。 4、与班委缺乏简洁、高效的反馈途径,缺乏充足的沟通。 5、分工没有具体到人,所以造成工作完成不及时或出现有的工作没人做的情况。 对于这些不足之处在以后的工作中我会多加注意争取以后让我部门的工作更加顺利地进行。 一、课程设计目的 1.复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握。 2. 提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。3.培养学生在项目开发中团队合作精神,创新意识及能力。 4.本课程设计主要以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。 二、课程设计内容 第一题:背单词软件开发(学号为单号的必须作) 1.录入单词 China 中国 Japan 日本 …….使用文件存放。 2.随机测试 系统随机显示单词(用户可以选择中译英,或英译中),对回答错误的单词应该可再回答一次。能够统计回答的正确单词的个数。3.顺序测验 4.查找单词的汉语或英语意思(输入中文查对应的英语意思,输入英文查对应汉语意思) 第二题:小学数学四则运算(学号为双号的必须作)12+56=? 1.要求系统随机生成0~100之内的整数。2.对回答错误的题目应该可重新回答一次。3.能够统计回答的正确题目的个数。 4.回答错误的题目写入“error_record.txt”文件中。 第三题:学生成绩管理系统 要求:1.学生的信息用结构体来表示。 struct stu{ int sno; //学号 char name[8]; //姓名 char sex[3]; //性别 char inclass[8]; //班级 float math; //数学成绩 float English; //英语成绩 float computer; //计算机成绩 } 2.能够按学号、按性别、按班级查询。查询方式可以自己补充。3.能够统计每个学生的平均成绩、总成绩、并可以按平均成绩和总成绩进行排序,并在屏幕上打印排序结果。 4.能够修改、删除、添加学生的信息。 5.系统的各个功能模块要求用函数的形式实现。6.在主函数里通过菜单来调用各个函数。 7.用链表或数组来存储班级学生(思考用数组和链表的异同)。 8.学生的信息能够保存在文件里(思考用二进制文件和文本文件的异同)。如果用文本文件存储,则文件格式如下: 学号 姓名 性别 班级 数学 英语 计算机 1001 王鹏 男 一班 68.5 58 1002 李云 女 一班 68.5 88 1003 王海 女 一班 78.5 98 …….2001 赵亚男 女 二班 58.5 48 2002 刘飞 男 二班 68.5 78 提示: 文本文件读写------fscanf,fprint 二进制文件读写----fread,fwrite 9.能够对文件进行读写、修改、删除。 第四题:中文分词器软件(选做题—加分) 与英文的以空格作为分界符不同,在中文中词与词之间没有明显的区分标记,中文信息处理中的一个重要的基础就是词的切分,也称中文分词。本题目是开发一个简单的中文分词器软件。 提示算法: 基于字符串匹配的分词方法这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,字符串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配。 建议采用最大正向匹配算法。 例如:对一个字符串S,从前到后扫描,对扫描的每个字,从词库中寻找最长匹配.比如假设S=“我是中华人民共和国公民”,词库中有“中华人民共和国”,“中华”,“公民”,“人民”,“共和国”......等词.当扫描到“中”字,那么从中字开始,向后分别取1,2,3,......个字(“中”,“中华”,“中华人”,“中华人民”,“中华人民共”,“中华人民共和”,“中华人民共和国”,“中华人民共和国公”),词库中的最长匹配字符串是“中华人民共和国”,那么就此切分开,扫描器推进到“公”字。 S的分词结果为:我/是/中华人民共和国/公民 提供的词典是7个文件:chivoc2.txt,chivoc3.txt,„„,chivoc8.txt,分别存储2字词,3字词,„„,8字词。 三、课程设计要求: 1.对系统进行功能模块分析,控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善,合理。2.系统设计要实用,编程简练、可用、功能全面。3.说明书、流程图要清楚。 4.记录设计情况(备查,也为编写设计说明书作好准备)。 5.设计成果:设计说明书一份(包含源代码的详细注释说明)。 四、补充 1.程序=算法+数据结构 一个好的程序应该有好的算法和好的数据结构。 指导教师:潘惠勇 李国伟 【c课程设计报告参考】推荐阅读: c课程设计报告说明书09-15 c语言课程设计106-20 C语言课程设计选题09-15 c数据结构课程设计06-20 高频课程设计参考题目05-29 C 面向对象程序设计课程教学大纲05-29 c语言程序设计课程教学大纲20107-26 A01_C语言程序设计课程说明05-14 《室内设计》课程参考书目09-13c课程设计报告参考 篇5
期末C语言课程总结报告 篇6
c课程设计报告参考 篇7
c课程设计 篇8
C语言课程设计 篇9