c实训总结(共9篇)
本学期末会计专业老师组织我们进行了一次沙盘模拟经营实训。该实训作为一种给予学员实战模拟的体验型人机教学模式让我们获益匪浅。通过沙盘模拟软件的运行和经营操作,可以强化学员的管理知识、训练管理技能、运用课本知识、全面提高学员的综合素质。沙盘模拟教学融理论与实践于一体、集角色扮演与岗位体验于一身,可以达到使学员在参与、体验中完成从知识到技能的转化的目的,增强学员的学习兴趣。
一、实训内容
(一)组织分工准备工作。全体实训学员由指导老师按人次分组。一来全体学员分成的多个小组之间形成了多个相互竞争的经营市场。然后在各个小组内部进行分工合作,各司其职地共同为本公司经营盈利而规划。在小组内为公司的经营分工职位大致有:CEO、营销总监、运营总监、采购总监、财务总监等主要角色。
(二)策划经营体系和市场份额。小组成员分工好后便开始了初步的尝试,多次尝试都在第一二年经营后中途权益过低而举步维艰。于是我们明白了要接手一个生产经营类地模拟公司,是要进行有计划的商讨和规划的。通过每次的尝试,我们各成员一起通过计算广告投放量,开设何种生产车间及流水线,规划每个时期的市场开发和认证,以及生产何种产品进行了大致的生产经营策划。对生产的各个时期可能产生的问题及市场需求进行了分析。对可能出现的经营资金进行了计算和规划。
(三)经营运作。一个整体筹划人员,以及两个助手构成的经营团队。整个经营规则项目有:(1)市场划分与市场准入;(2)销售会议与订单争取;(3)厂房购买、出售与租赁;(4)生产线购买、转产与维修、出售;(5)产品生产;(6)产品研发与ISO 认证;(7)融资贷款与贴现。
(四)填写数据。编写实习总结,在多次努力经营之后,我们小组的权益从负值转为持续正值,这是我们较为满意的结果。于是我们开始根据经营的步骤和规划所得的数据开始誊写数据表格,然后根据数据开始分工编写实习报告与总结。我们根据自己的职位和工作过程,记录下我们各自所犯的错误和收获,感觉受益匪浅。二、六年战况剪影
由于我们初次接触到ERP沙盘模拟, 开始时根本就不知从哪里入手。初始在老师的指导下将小组成员进行了分工,分别担任了企业中的不同职务,我们团队人员分为了企业CEO、营销总监、生产总监、财务总监、采购总监和财务助理。每个人负责自己的角色,不管职务是什么,当沙盘开始的时候,都当自己就是在真正的公司中经营。只有让自己融入角色之中,才能从公司经营的角度去思考问题、解决问题。也只有每个人都各尽自己职位的职责,才能使整个公司的生产经营有序地执行。我是我们企业的营销总监我的职能主要有以下几点:
1、根据市场的分析,经小组成员讨论通过,提交广告费用,争取有利订单。这是整个沙盘模拟操作中至关重要的一步。根据沙盘规则,广告是分市场、分产品投放的。根据生产总监提供的数据还有企业的生产力和对竞争对手的预测分析,以及经过与财务总监的协商,上报CEO,确定广告费用。
2、生产规模决策的数据提供。根据我们产品订单的需求,我们第一年完全没必要增加新的生产线,在往后根据生产的实际情况选择增加或者改进生产线,例如升级为半自动或全自动。
3、市场的开拓,产品的研发。预测未来几年内市场的走向和产品的趋势,依据财务总监提供的财务状况进行市场的开发以及产品的研发。在每一里选择合适的产品生产,并把它们放在合适的地域内。但事实上,计划赶不上变化,我们后来不得不改变经营策略,这将在以下每年生产计划中在详细诉说。第一年:所有企业的情况都一样,只能在本地拿到P1的订单,重点应该是在P1的广告竞标上。由于开始经验不足,也缺乏对规则的熟练运用上,广告费用我们只在本地P1产品上打的不多,没能拿到较好的单子。这样我们不但占不到比较有利的市场地位,还无法拿到满意的订单,利润不是很多,也没能转换成更多的现金。这一点需要我们以后注意,要想让市场更广阔,就必须竞争市场老大,广告投入一定要做好预测。此外我们小组经营的比较保守,没有在大家都一样的情况下扩建生产线,这对后来的生产照成了一定的影响。
第二年:我们就有了区域市场的准入证,但才开始研发P2,因此今年还是只能在P1市场做出投资。吸取了去年的教训,我们今年在本地市场上投资了8M值的广告费,但事实是残酷的,我们并不是投的最多的,又因为我们的市场地位低,只能看着别人拿到比较好的订单,最后我们拿到一个4个P1货物的订单,利润还不够广告费,净利润是负的,情况很不乐观。
第三年:今年我们的国内市场也拿到了准入证,P2也研发成功,并开始研发P3,我打算要多投一些广告费去争抢本地P2的市场,但是我们不得不面临一个严峻的问题,由于花了大价钱新建生产线,我们没有足够的库存现金购买材料,库房还挤压着P1产品,我们今年无奈的仍只能生产P1,因此我们在本地和区域各拿到一个单子,今年净利润仍是负数,所有者权益也低到无法在贷款了。
第四年:今年我们企业有了一定的好转,由于得到注资和争取到较好的订单,我们新借入了大量的贷款,现金得到了充沛的周转。P1、P2在区域内我们拿到了较大的订单,竞争压力不大。但是,高额贷款利息及本金、广告费用大大超过了利润,今年仍然是亏损。
第五年:我们小组做出了最正确的决定。投入了13M的广告费用分别在区域和国内市场,P1、P2、P3在各个市场的预计比较合理,我们拿到了有史以来最好的订单,销售收入也突飞猛进,今年的净利润终于成为了正数。此外还有充足的在制品,生产线得到了全面有效的利用。
第六年:是我们的转机,我们取得了最好的排名选择权,而且ISO9000和ISO14000认证全部通过,此外今年不需要偿还长期贷款本金,我们把重心全部放在国内市场,将销售费用分别投在了P1、P2、P3上,但由于对ISO9000和ISO14000博弈,我们P2废掉了单子,只能在P1、P3上各取得2个订单。收入情况是理想的,但是综合费用太高,以前利润负的太多,今年又变成了净利润亏损,但好在权益是正值。
三、实训中发现的问题及解决措施
Ceo(童文娟):在实训中我体验到团队的力量,所以我们一定要彼此合作,分工工作,提高工作效率。通过分工,基本上确定了一个企业的重要人事框架。团队合作最重要。一个人无论你有多能干,始终不可能面面具到。一个团队的领导者最重要的能力就是要协调,协调并有效的利用资源,调动团队的积极性和队友的热情。CEO对整个企业进行全面掌握和协调,整个企业的经营盈亏的关键就在于决策层的战略,决策层的战略出了问题,操作层无论多正确,也会影响企业的整个命运。同时,对于市场订单也要有较准确的预测和计划,这样才能在有限的资源下完成既定的目标,否则也会浪费资源和造成亏损。总而言之,团队加上各个成员的智慧就是成功的保障。去自我中心主义,团结一致就是成功的第一法宝。
Cfo(陈梅):担任一名CFO并非想象中容易,仅仅做资金预算、编制报表、财务分析是不够的。在一个企业中,财务处于核心地位,需要与各个部门协商合作,统领企业资金的运转。财务工作是不容易的,CFO需要从整个企业的角度考虑问题,合理分配资金的使用,做好各项费用的预算,使整个企业在资金的运转上游刃有余。如果资金出现紧缺,则需要考虑申请短期贷款、长期贷款、变卖生产线、出售厂房等,在合理的资产负债率前提下,增加企业的资金流动。通过ERP沙盘模拟实验,使我更深刻的了解了企业的运营情况,更进一步地体会到财务工作的重要性。财务助理(李嘉文):融资渠道的合理运用。长期贷款还款期限长,但每年的利息是不小的支出,且只有年初可以借;短期贷款还款期限短;高利贷(我们组没有借过)还款期限短,且利息高,如果还不了还将面临惩罚,但是借入灵活。因此,需要根据企业的财务状况灵活的进行选择。
采购总监(廖娇杨):作为采购总监其职责是把好原材料这一关。产品的生产和销售都是以原料为基础的,采购反过来又要根据生产和销售来下订单。首先是跟财务总监沟通,财务总监每年都要做一个财务上的预算,由财务总监拨款购买原材料。所以在购买时,既要考虑到市场对产品的需求、企业所拿到的订单以及整个企业规划的主打产品、应对来年的加急订单等方面的需求,又要考虑到每种产品的毛利率、生产线的负荷、产出时间,同时又不能生产过多产品,造成积压和流动资金的不足。
生产总监(邓青云):主要负责产品生产和研发,同时,作为生产总监,我还要和组内的营销总监一起结合市场预测及市场需求制定生产计划,做好生产成本控制,有选择地进行设备的投资,保持与企业客户订单相匹配的产能,与财务部门和销售部门做好沟通,保证按时完成客户的订单。
C语言程序设计的课程性质是高职计算机专业的必修课, 课程类别是高职计算机专业的职业基础课, 它要求学生掌握计算机程序设计语言的基本知识和程序设计的方法与技术, 培养学生掌握应用计算机解决实际问题的能力。C语言功能丰富、表达能力强、应用面广、目标程序效率高、可移植性好, 既具有高级语言的特点, 又具有低级语言的功能, 备受使用者的喜爱。但由于时间和经验的原因, 初次学习程序设计的学生并不能真正掌握程序设计的方法和思想, 因此, 进行一段时间的实训是很有必要的。实训不同于实验, 实验一般是选择教材中的某有个知识点作为实验对象, 实训则是一般要求做的是一个完整的项目, 整个项目可以根据实际情况或大或小。
1 实训目的和目标
学完了C语言后, 大多数学生都能够使用C语言编写有一些简单的程序, 如统计学生的及格率、判断某个数是否为素数等等。但是对现实生活中的应用没有感性认识, 面对实际问题时通常都无从下手。
C语言程序设计实训就是要解决这些问题。通过实训让学生巩固所学知识;让学生认识到“会”与“不会”、“能”与“不能”。“会”指学生能够灵活运用所学知识解决实际问题;“不会”指学生没有掌握已学知识, 还需要继续学习;“能”指学生使用所学知识能解决哪些问题, 以及如何解决这些问题;“不能”指学生利用所学知识解决实际问题时还存在哪些不足, 或者哪些环节掌握不够透彻, 需要继续学习, 并且知道自己需要学习什么。
C语言程序设计实训是学习完《C语言程序设计》课程后进行的一次全面的综合练习。其目的在于加深对C语言语法、基本知识的理解, 初步掌握使用C语言为进行编程, 综合训练学生的分析问题、设计的基本内容和方法, 提高解决实际管理问题的能力, 以培养学生的专项技能和职业能力。
2 实训内容
教师可以根据学生的实际情况设计实训项目, 最好选择学生熟悉的领域。实训内容应覆盖学生所学知识, 突出实用性。比如用C语言来实现一个具体的系统, 同时应重视书面材料的撰写 (包括系统概述、现状分析和系统目标等) 、系统分析、系统实现、测试、系统评价) , 最后要求学生写出该系统的设计全过程及其结果。对于学有余力的学生, 鼓励学生用C语言设计出相应的界面, 并与数据库结合进行开发。
下面以“自动贩卖机管理系统”为例说明C语言实训的内容。某公司请你为其生产的自动贩卖机编写软件。这种无人值守自动贩卖机贩卖价值为ABC三种商品, 价格分别为2元, 3元和6元。顾客投入10元的纸币, 然后选择购买3种商品之一, 自动贩卖机吐出商品, 并且找给用户零钱。如果商品用完, 或者无法找零, 则给出用户一个提示, 商品已售完, 并且退还纸币。我们要求学生在实训过程中实现以下功能:库存查询:检索当前三种商品的储存量, 商品上架:为三种商品增加或者减少储量, 销售查询:分别统计今天每种商品的销售量和销售额, 会计查询:打印当天的往来帐目以及剩余零钞数目, 结算功能:取出今天所有的10元纸币, 并且分别设置零钞的数目, 销售界面:顾客投入纸币, 选择商品, 获得商品和零钱;或者直接显示错误并退还纸币。布置好了实训内容后, 教师还要引导学生完成任务。比如引导学生分析题目的数据结构, 看看要操作那些值 (商品数据, 金额数据, 甚至需要保存每一笔用户的交易) ;然后引导学生根据题意设计操作对象的结构。可以使用结构体来描述其中较为复杂的对象例如往来帐目;确定结构体的定义;可以使用数组来保存商品数据和已收款, 剩余零钞数目这样的数据, 使用结构体数组来保存往来帐目数据。让学生独立思考来实现找零算法:一种简单的算法是优先找给大额的零钞, 用完再找给小额零钞。但是这种算法充其量只能保证服务最多的顾客, 但是后来的顾客就只能拿1元的硬币了。对于学有余力的学生, 可以引导他们学习动态最优化算法, 剩余的零钞哪个最多, 优先找哪个。
3 实训的要求
在实训过程中, 要充分调动学生的积极性, 让学生放手去做系统, 教师只提供指导意见, 细节由学生讨论决定, 比如结构体有哪些成员、功能模块如何划分等。如果学生遇到困难, 教师可以帮助学生找出问题所在, 具体由学生讨论解决。
不同层次的学生其水平、能力不同, 实训时还可以针对不同的任务提出具体的要求。仍以“自动贩卖机管理系统”为例, 对于能力强的学生, 可以要求用C语言的文件操作语句将有关操作结果保存到文件中;丰富查询方式和查询条件;优化程序结构, 提高程序效率等。
4 实训的考核
实训一般安排一周时间, 以分组的方式进行。根据项目内容的多少每组以2~4人为宜, 分工合作, 共同完成项目。每组选出组长一名以协调、组织本组成员开发项目。组长一般由能力较强的学生担任, 实际上承担着项目经理的角色。组长负责组织本组成员讨论项目要求、研究项目结构、划分功能模块、定义各个函数, 讨论结束后给各成员分配任务。在成员完成各自的任务后, 组长负责项目的整合。
每组完成实训后, 要撰写一份详细的实训报告, 详细描述项目任务、解决方法、程序结构、采用的算法等内容, 并附上源代码。组长负责对组内成员的表现、完成情况进行评价。所有分组都要经过答辩, 由指导教师根据学生的答辩、完成任务的情况和平时考勤情况进行综合打分。成绩评定标准如表1所示。这种考核方法既体现了软件开发中团队合作的重要性, 又考虑了个人能力的差异。
5 结束语
C语言实训对于初学程序设计的学生来说是非常重要的一项实践动手能力的锻炼, 既能巩固所学知识, 又能加深对程序设计的深入理解。在以后的教学过程中, 我们要遵循“温故知新”的原则, 让学生能够知道自己学会了什么、还有什么没有学会、以后应该怎么去学习, 就达到了实训的目的。
参考文献
[1]曹文梁.案例教学法在数据库教学中的应用[J].软件工程师, 2011 (5) .
[2]张明川, 吴庆涛, 黎蔚等.一种软件类课程设计实施方案研究[J].福建电脑, 2009 (6) .
[3]石跃祥, 朱东辉.计算机专业理工科C语言程序设计教学方法的探索[J].计算机教育, 2009 (12) .
[4]覃志军.如何进行有效的合作学习[J].中国教育发展研究杂志, 2008 (1) .
【摘要】说明编写同时适合“中职升本”、“专升本”和“高中升本”三种学历层次起点学生的教材的必要性,根据不同起点的学生培养目标不同从而实施多层次差异化教学的需要,教材内容分基础篇、进阶篇和综合篇三篇,不同篇章适合不同学历层次起点的学生。
【关键词】多层次起点 差异化教学 中职升本 立交桥
【基金项目】2015年桂林电子科技大学海洋信息工程学院教育教学改革项目、2015年广西高等教育教学改革项目(2016JGA)、2015年桂林电子科技大学校级教育教学改革(电子与信息工程示范特色专业及实训基地建设专项)。
【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)09-0210-02
0.引言
桂林电子科技大学北海校区自从2013年建立海洋信息工程学院以来,逐步形成了职业教育多层次衔接贯通“立交桥”的应用型技术技能型人才培养模式,在“中职升本”、“专升本”和“高中升本”的多层次起点的学生培养过程中探索分层“因材施教”、“分设目标发展”的培养思路,不断探索专业结构的优化与教学内涵的建设,这其中的一个重要内容就是针对不同层次学生的差异化教学和相应的教材建设。
目前专门针对“中职升本”学生的教材还比较少,传统本科教材并不适合理论基础薄弱的“中职升本”学生使用,本科教学也不宜使用理论深度不够的高职教材,这也使得我们必须加快建设适合“中职升本”学生教材的步伐。
鉴于我院多层次衔接贯通“立交桥”的应用型技术技能型人才培养模式,若每门课的教材均按“中职升本”、“专升本”和“高中升本”三个层次分开建设,将是一件非常麻烦的事情,那么如何编写一本同时适合三种学历层次起点学生的教材呢?本文以C语言程序设计实验实训教材建设为例进行阐述。
1.三种学历层次起点学生的特点
1.1“中职升本”学生的特点
实践动手能力普遍较强,但是未读过高中,理论(特别是英语和数学)基础较弱,缺乏逻辑思维的训练,部分同学主观上虽然在努力学习,但思维不够活跃,跟不上教师讲课和训练思路,这部分学生的培养目标为高级技师。
1.2“专升本”学生的特点
读过高中,计算机相关专业的学生有一定的编程基础,学习程序设计但是专科阶段的学习偏重实践,理论基础相对较弱,这部分学生的培养目标为开发工程师。
1.3“高中升本”学生的特点
一般来说理论基础较好,理解能力相对较强,教师讲过的知识能很快理解并掌握,为“学有余力”类型。但是这部分学生在高中阶段主要是进行理论学习,故实践动手能力相对较弱,这部分学生的培养目标为算法设计、开发工程师。
2.适合三种学历层次起点的C语言程序设计实验实训教材建设
根据多层次差异化教学的需要,教材内容分基础篇、进阶篇和综合篇三篇,不同篇章适合不同学历层次起点的学生,其学习的先后关系如图1所示:
每个实训项目前除了提出实验目的和要求,还对相关知识点进行详细地阐述,并给出相应的例子,使得学生在进一步夯实理论基础的前提下再做实验,并反过来通过实验更好地掌握理论知识。
(1)基础篇
针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程,该篇内容对于“中职升本”、“专升本”和“高中升本”三种学历起点的学生均适用。
(2)进阶篇
在原有基础上介绍了C语言的复杂运用,高级编程技巧等,适用于“专升本”和“高中升本”学生。本篇需要学生具备一定的数学基础和逻辑思维能力。
(3)综合篇
从C语言综合实训角度出发,使读者了解使用C语言进行系统设计,游戏开发,图形绘制的相关内容,适用于“高中升本”学生。本篇需要学生具备较好的数学基础和较强的逻辑思维能力。
主要实验实训内容如表1所示:
需要说明的是,每篇内容的适用对象并不是绝对的,仅供教师在教学时进行分层授课有一个参考。教师在给不同学历层次起点学生授课时对学生所掌握的内容可以有相应不同的要求,但是对于三种层次所有学有余力的学生来说,则应多加鼓励,可以引导“中职升本”学生根据自身的接受能力、理解能力主动学习进阶篇和综合篇,也可以引导“专升本”学生根据自身的努力情况及后续学习状态选择综合篇进行学习。
3.结论
一、1.2.二、1.实训目的 熟悉变量、输入、输出等基本操作 进行选择结构程序设计练习实训内容及步骤 从键盘输入两个数,比较大小,输出大的数。
2.从键盘输入三个个数,比较大小,按从小到大输出三个数。
3.大小写转换——如果从键盘输入一个大写字母,要求用小写字母输出;如果从键盘输入一个小写字母,要求用大写字母输出。
4.从键盘输入一个学生成绩,对成绩进行判定,0-59不及格,60-69合格,70-79中等,80-89良好,90-100优秀。
三、算法设计思想(流程图)
程序一算法思想:
…
程序二算法思想:
…
四、测试与运行结果(输入你自己的测试结果,每位同学应该不一样)
程序一运行结果:
…
程序二运行结果:
…
五、实训体会(难点及解决方法)
1.在调试程序的过程中遇到什么问题?是如何解决的?
答:…
2.通过做本次实训,你有什么收获?
答:…
3.你有什么建议或心得体会?
六、附录源程序
程序一源程序:
…
程序二源程序:
1.求一位数组a中(或若干整数)所有元素的平均值。
(注意数组作函数参数的情况)
2.求一位数组a中的最大/最小元素及下标。(例如p59,p85)
求二维数组a中的最小值/最大值。(例如p61)
3.判断m是否为素数。(例如课本p106)
求一位数组a中素数(非素数)之和/素数(非素数)个数。
将[m,n]之间的所有素数存放到以为数组a中,并输出这些素数。(例如p62)
4.求一位数组a中值为奇数(偶数)的元素的平均值(总和)。
5.输入一个百分制成绩,打印出五级积分成绩。考试成绩在90分或90分以上为优秀,80~89为良好,70~79为中等,60~69为及格,低于60分为不及格。(例如p39)
6.求给定正整数n的阶乘。(例如p75)
求)(例如课本p111)n!(即求:1!+2!+3!+…..+20!
n=120
7.打印输出以下图形(图为每两个“*”之间有一个空格)(例如p54)
*
* * *
* * * * *
* * * * * * *
打印九九乘法表的一部分。(例如课本p104)
8.输出100~200之间(或以为数组a中)既不能杯3整除也不能被7整除的整数之和,并统计这些整数的个数。(例如p47)(注意数组作函数参数的情况)
9.求N*N矩阵的主对角线/副对角线元素的和并输出。(例如p71)
10.求字符串中大写字母/小写字母(空格和非空格的)个数并输出。(例如p71)
11.求字符串的长度并输出。(例如p71)
12.从键盘上输入两个正整数x,y,求它们的最大公约数(最小公倍数)。(例如p45)
13.按下面的公式求sum的值。(例如p51,p82)
Sum=1-2+3-4+5-6+……+99-100 1111+++......234100
11111......S=1+ 3*35*57*79*9n*nSum=1+
14.求指定字符在字符串中出现的次数并输出。(例如p72)
求指定字符在字符串中第一次出现的位置(该字符的下标)并输出。
15.判断m是否为素数。(例如课本p106)
判断m~n中素数(非素数)之和/素数(非素数)的个数。
16.计算1到M(M为偶数)之间的奇数之和及偶数之和。(例如p44)
17.求Cnmm!(例如课本p154)n!*(mn)!
18.打印出1至1000中满足其个位数字的立方等于其本身的所有整数。
19.计算正整数num的各位上的数字之积。(例如课本p117)
例10.4 指向结构体数组的指针的应用
#include
printf(″No.Name
sex
agen″);
for(p=stu;p<stu+3;p++)
printf(″%5d %-20s %2c %4dn″,p->num,p->name,p->sex,p->age);
} 运行结果:
No.Name
sex
age
10101
LiLin
M
1010Zhang Fun M
10104
WangMing F
例10.5 有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋予值,在另一函数print中将它们输出。今用结构体变量作函数参数。#include
char name[20];
float score[3];};
#include
char name[20];
float score[3];};
void main(){ void print(struct student);
struct student stu;
stu.num=12345;
strcpy(stu.name,″LiLin″);
stu.score[0]=67.5;
stu.score[1]=89;
stu.score[2]=78.6;
print(stu);} void print(struct student stu){ printf(FORMAT,stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
printf(″n″);} 运行结果: 12345 Li Li 67.500000 89.000000 78.599998 例10.6 将上题改用指向结构体变量的指针作参数。#include
char name[20];
float score[3];}stu={12345, ″LiLi″,67.5,89,78.6};void main(){ void print(struct student *);
print(&stu);}
void print(struct student *p){ printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2]);
printf(″\n″); } 运行结果: 12345 Li Li 67.500000 89.000000 78.599998 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程总成绩、平均分数)。 10.1:# include
struct student
{ char num[6];
char name[8];
int score[3];
float avr;
}stu[10];
main()
{ int i,j,max=0,maxi=0,sum=0;
float average=0;
for(i=0;i<10;i++)
{ scanf(“%s%s”,stu[i].num,stu[i].name);
for(j=0;j<3;j++)
scanf(“%d”,&stu[i].score[j]);
}
for(i=0;i<10;i++)
{ sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
average+=stu[i].avr;
if(sum>max){ max=sum;maxi=i;}
}
average/=10;
printf(“average=%6.2fn”,average);
printf(“The highest is:%s,%s,%d,%f”,stu[maxi].num,stu[maxi].name,max,stu[maxi].avr); }
指针
例9.4 输入a、b、c3个整数,按大小顺序输出。#include
{void exchange(int *q1,int *q2,int *q3);int a,b,c,*p1,*p2,*p3;
scanf(″%d,%d,%d″,&a, &b, &c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf(″%d,%d,%d\n″,a,b,c);
}
void exchange(int *q1,int *q2,int *q3){ void swap(int *pt1,int *pt2);
if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
}
void swap(int *pt1,int *pt2)
{int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
score 3
}
运行情况如下:
9,0,10↙ 10,9,0
例9.10:有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩,用函数search找出并输出第i个学生的成绩。#include
{ void average(float *p,int n);
void search(float(*p)[4],int n);
float score[3][4]={{65,67,70,60},average(*score,12); /*求12个分数的平均分*/
search(score,2);
/*求序号为2的学生的成绩*/ }
void average(float *p,int n){ float*p_end;
float sum=0,aver;
p_end=p+n-1;
for(;p<=p_end;p++)
sum=sum+(*p);
aver=sum/n;
printf(″average=%5.2f\n″,aver); }
void search(float(*p)[4],int n)
/ * p是指向具有4个元素的一维数组的指针 */ {int i;
printf(″the score of No.%d are:n″,n);
for(i=0;i<4;i++)
printf(″%5.2f″,*(*(p+n)+i));}
程序运行结果如下: average=82.25
The score of No.2 are:
90.00 99.00 100.00 98.00
例9.11: 在上题基础上,查找有一门以上课程不及格的学生,打印出他们的全部课程的成绩。
#include
{void search(float(*p)[4],int n);
float score[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};
{80,87,90,81},{90,99,100,98}};
search(score,3);
}
void search(float(*p)[4],int n){int i,j,flag;
for(j=0;j<n;j++)
{flag=0;
for(i=0;i<4;i++)
if(*(*(p+j)+i)<60)flag=1;
if(flag==1)
{ printf(“No.%d fails,his scores are: \n”,j+1);
for(i=0;i<4;i++)
printf(″%5.1f″,*(*(p+j)+i));
printf(″\n″);
}
}
}
程序运行结果如下:
No.1 fails, his scores are:
65.0
57.0
70.0
60.0 No.2 fails, his scores are:
58.0 87.0 90.0 81.0 例9.17:求a和b中的最大者。#include
{int max(int,int);int a,b,c;
scanf(″%d,%d″,&a,&b);
c=max(a,b);printf(″a=%d,b=%d,max=%dn″,a,b,c);
}
int max(int x,int y){ int z;
if(x>y)z=x;
else
z=y;
return(z);
}
例9.18:有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。
#include
{float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float *search(float(*pointer)[4],int n);
float*p;
int i,m;
printf(″enter the number of student:″);
scanf(″%d″,&m);
printf(″The scores of No.%d are:n″,m); p=search(score,m);
for(i=0;i<4;i++)printf(″%5.2ft″,*(p+i));
}
float *search(float(*pointer)[4],int n){ float *pt;
pt=*(pointer+n);
return(pt);
}
运行情况如下:
enter the number of student:1↙ The scores of No.1 are:
56.00
89.00
67.00
88.00 例9.19: 对上例中的学生,找出其中有不及格课程的学生及其学生号。#include
{ float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
float search(float(*pointer)[4]);
float*p;
int i,j;
for(i=0;i<3;i++)
{p=search(score+i);
if(p==*(score+i))
{ printf(″No.%d scores:″,i);
for(j=0;j<4;j++)
printf(″%5.2f″,*(p+j));
printf(″n″);}
}
}
float *search(float(*pointer)[4]){ int i;
float *pt;
pt=*(pointer+1);
for(i=0;i<4;i++)
if(*(*pointer+i)<60)pt=*pointer;
return(pt);
} 运行情况如下:
No.1 scores:56.00 89.00 67.00 88.00
No.2 scores:34.00 78.00 90.00 66.00
例9.20:将若干字符串按字母顺序(由小到大)输出。#include
{void sort(char *name[ ],int n);
void print(char *name[ ],int n);
char *name[ ]={“Follow me”,“BASIC”,“Great Wall″,”FORTRAN“,”Computer design“};int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[ ],int n){char *temp;
int i,j,k;
for(i=0;i<n-1;i++){k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
{ temp=name[i];
name[i]=name[k];
name[k]=temp;}
}
}
void print(char *name[ ],int n){ int i;
for(i=0;i<n;i++)
printf(″%sn″,name[i]);
} 运行结果为: BASIC Computer design FORTRAN Follow me Great Wall 作业:(提交上机报告)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。# include
{ void input(int number[10]);
void max_min_value(int array[10]);
void output(int array[10]);
int number[10];input(number);max_min_value(number);output(number);
} void input(int number[10])
{ int i;
for(i=0;i<=9;i++)
scanf(“%d”,&number[i]);} void max_min_value(int array[10])
{ int *max,*min,*p,*array_end;
array_end=array+10;
max=min=array;
for(p=array+1;p
if(*p>*max)max=p;
else if(*p<*min)min=p;
*p=array[0];array[0]=*min;*min=*p;
*p=array[9];array[9]=*max;*max=*p;
} void output(int array[10])
{ int *p;
for(p=array;p<=array+9;p++)
printf(“%4d”,*p); }
数组和函数的组合
例8.12 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。#include
/*全局变量*/ void main()
{float average(float array[ ],int n);
float ave,score[10];
int i;
for(i=0;i<10;i++)
scanf(″%f″,&score[i]);
ave= average(score,10);
printf(″max=%6.2f\nmin=%6.2f\n
average=%6.2f\n″,Max,Min,ave);
}
float average(float array[ ],int n)
/*定义函数,形参为数组*/ { int i;
float aver,sum=array[0];
Max=Min=array[0];
for(i=1;i<n;i++)
{if(array[i]>Max)Max=array[i];
else if(array[i] sum=sum+array[i]; } aver=sum/n; return(aver); } 例8.18 有一个含若干字符的字符串,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。file1.c(文件1)#include { extern void enter_string(char str[]); extern void detele_string(char str[],char ch); extern void print_string(char str[]); char c; char str[80];enter_string(str); scanf(”%c“,&c); detele_string(str,c); print_string(str); } file2.c(文件2)#include gets(str);} file3.c(文件3) void delete_string(char str[],char ch){ int i,j; for(i=j=0;str[i]!=';i++) if(str[i]!=ch) str[j++]=str[i]; str[i]=';} file4.c(文件4)#include printf(”%sn",str);} 运行情况如下: abcdefgc↙ (输入str) c↙ (输入要删去的字符)abdefg (输出已删去指定字符的字符串) 8.1:判断m是否是素数。(用函数实现)#include { int f(int m); int m,n; scanf(“%d”,&m); n=f(m); if(n)printf(“%d is a prime numbern”,m); else printf(“%d is not a prime numbern”,m); } int f(int m) { int i,k,p; k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1)p=1; else p=0; return p; } 8.2:用起泡法对10个数排序。(用函数实现) #include { void sort(int array[],int n); int a[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); sort(a,10); for(i=0;i<10;i++) printf(“%4d”,a[i]);} void sort(int array[],int n) { int i,j,t; for(i=0;i for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;} } 8.3:用选择法对10个数排序。(用函数实现)#include { void sort(int array[],int n); int a[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); sort(a,10); for(i=0;i<10;i++) printf(“%4d”,a[i]);} void sort(int array[],int n) { int i,j,k,t; for(i=0;i { k=i; for(j=i+1;j if(array[j] t=array[k];array[k]=array[i];array[i]=t; } C++中分为这几个存储区:栈,堆(new创建,delete结束或者操作系统自动回收),全局区(静态区),自由存储区-(malloc创建,free结束),常量存储区,2看到一本书上写了进程通信方式有如下: 1)信号 ——软中断,2)管道 3)文件和记录锁定 4)消息队列 5)信号量 6)共享内存 Unix的启动顺序排序。 第一步:通过/boot/vm进行启动 linux内核 第二步:init /etc/inittab 第三步:启动相应的脚本,并且打开终端 rc.sysinit rc.d(里面的脚本) rc.local 第四步:启动login登录界面 login 第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的/etc/profile.d/file /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile Linux中查看目录大小的命令:du –sh filename 修改文件属性的命令是:chmod 777 file-R 切换为其他用户身份的命令是:du 第一次:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次:第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手 指令用途 #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; 一、设计题目: 猜数字和贪吃蛇小游戏。 专业:09电气工程及其自动化 组号:第十组 组员:马邢(组长)、王维、毛亮、汪小成、魏坤波、陈维康、高裴石、石峰、葛良志、冯鑫源 指导教师:黄莉莉 二、任务分配: 我们组分为两队,一对制作贪吃蛇游戏,另一对制作猜数字游戏。制作贪吃蛇的人员是马邢,葛良志,高裴石,石峰,陈维康。石峰和高裴石负责收集程序材料,马邢和葛良志负责整理和编写程序,陈维康辅助我们工作。制作猜数字的是魏坤波,王维,毛亮,汪小成,冯鑫源。魏坤波和王维负责编写程序,其他三人收集材料并帮助他们人编写和调试程序。 三、心得体会: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今让我我们仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,几个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 暑假即将来临,很开心,但也意味着C语言的学习即将到了尾声。谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。 其实怎么说呢,学习它的时间说长不长,说短也不短了。可是对于它,我也只能说还是处于一知半解的状态下。说不懂吧,你让我拿着书自己也能写出程序来,说不懂呢,就是相对于难一点的程序我就不行了。 不过就算如此也还是有不少收获的。首先,老师让我们时常的敲程序,一开始不明白,后来慢慢发现敲程序也许是最笨的方法但也是进步最快的方法。敲程序的过程就是积累经验的时候,而自己写程序才是真正把所学为所用的时候,可以说只有你做一个大点的程序写出来才能真正是说明你学到了东西,你会用所学的东西,要不然就算你学的再多,不会用也没用啊。其次,在看它敲它的过程中,也从中了解了它的规则是什么、有什么用、怎么实现等,这样自己编起程序来也更得心应手了。最后,也养成了良好的编程习惯。例如编写程序时用缩进的方式、写注释、程序写到一定的阶段时要做一下测试等。这些工作可以帮我们在调试程序时有很大的帮助。程序代码实现后,错误是难免的,所以也要锻炼自己的调试查错能力,而良好的编程习惯 可以使我们在调试时减小工作量和提高调试效率,也有助于形成自己的编程风格。 说了很多学到的,当然也有欠缺的地方。比如,书,我很少看,只有敲程序,或者编程序的时候我才会看。敲程序呢,坚持的时间也不是很持久,只有想的时候和上课的时候才回敲。 【c实训总结】推荐阅读: c语言总结07-15 C程序个人总结10-11 c语言排序算法总结06-25 c语言实验报告总结07-13 《C程序设计》重点总结09-26 计算机二级考试C语言知识点总结09-13 安卓实训总结06-02 校园实训总结06-16 中药实训总结06-19 实训总结550字06-21C和C++总结 篇7
C语言课程设计总结 篇8
C语言学习总结 篇9