c语言课程实践

2022-12-11 版权声明 我要投稿

第1篇:c语言课程实践

“C/C++语言程序设计”课程教学改革与实践

摘要:针对目前高校C语言程序设计课程教学的现状及存在的问题,结合课程组在国家级精品课程“C/C++语言程序设计”建设过程中的经验和收获,提出“以应用为前提,学生为主体,知识为主线,培养学生的实践动手能力为着力点”的教学理念,阐述如何构建一套教材体系完善、教学资源丰富、教学手段先进、教学评价合理、考核方式差异化的教学体系。

关键词:C/C++语言程序设计;教学改革;国家精品课程;教学方法

1 课程教学现状及存在问题

“C/C++语言程序设计”是理工科非计算机专业本科学生的第二门计算机课程,也是大学计算机基础系列课程的核心课程。“C/C++语言程序设计”课程的内容抽象,概念和语法规则较多,特别讲究适用技巧。长期以来,高校都在不断地探索和实践关于“C/C++语言程序设计”课程的教学改革,但仍然存在很多问题。例如,教学依然以传统教学方式为主,不能将实验环节与课堂教学环节很好地相互连贯,相互印证,使得理论教学和实践教学脱节;某些教师忽视学生的实践能力和创新能力的培养,使学生在分析问题和解决问题时无从下手,缺乏编程和调试的能力;实验教学中的多数实验内容是验证性的,学生机械式的运行程序,对知识的理解只停留在表面上;理论和实验课时数较少,上课信息量大,学生接受知识的进度不一样,这就导致教师和学生的学习步调不一致。

针对上述问题,许多高校对“C/C++语言程序设计”课程的教学作出了有益的探索,如文献[1]提出“通、实、新、联”的教学理念;文献[2]提出教学设计原理;文献[3]提出项目教学法;文献[4]提出案例教学法;文献[5]提出“机房授课+自主学习”的授课模式;文献[6]提出将“以应用为背景,以知识为主线,以提高能力和兴趣为目的,变应试为应用”的教学理念应用于该课程的教学中。这些方法均在一定程度上激发了学生的学习兴趣,增强了学生的动手能力,取得了较为明显的教学效果。

为了探究出适合成都理工大学人才培养的课程特点,“C/C++语言程序设计”课程组经过多年的课程建设和对教学环节的研究与探索,提出了“以应用为前提,学生为主体,知识为主线,培养学生的实践动手能力为着力点”的教学理念,构建了一套教材体系完善、教学资源丰富、教学手段先进、教学评价合理、考核方式差异化、精品课程网站新颖的教学体系。下面分别从教学设计、教学方法、教学手段、考核方式以及教学资源等方面进行阐述。

2 教学设计及课程内容组织

2.1教学设计

成都理工大学每年有4000名以上的学生参加“C/C++语言程序设计”课程学习。为实施因材施教,我们重视研究性学习、探究性学习、协作学习等现代教育理念在教学中的应用,根据课程内容和学生特征,对教学方法和教学评价进行设计,并在教学理念与教学设计上实施了多种改革举措。

1)以学生为中心的教学模式。

以学生为中心的教学模式让教师从传统的教学方式中解脱出来,变“教学”为“导学”。教师充分利用多种教学媒体和提示学习资源,讲重点、解难点、释疑点,讲评作业,指导学习方法,辅助小组学习,发挥学生的主体作用,引导学生自主学习,帮助学生培养自学能力。

教师要在理论课前了解学生是否掌握了与课程有关的基础知识和基本技能,根据学生在实验课的表现来了解学生是否掌握了教学目标中要求学会的知识和技能,以及掌握的程度等信息,从而确定后续教学中应重点讲解和辅导的知识,根据学生的实际情况设计教学环节。对于部分优秀学生和已经学习了程序设计的学生,我们要加快他们的学习进度,增加学习难度和深度,使他们可以很快在自己的专业中使用程序设计来解决相关问题。

2)精心准备每一节课,激发学生学习积极性。

激发学生对程序设计课程的学习兴趣,是本课程任务执行的重要目标。学生是主动学习还是被动学习会让教学效果产生明显的差别,因此每位教师都应精心准备每一节课。引领学生跨入程序设计大门的第一节课是极其重要的。学生所关心的是所学课程对自己的专业和今后的工作有什么作用,教师可从不同的专业角度,结合当前最热门的IT话题和实际应用为学生介绍学习本课程的意义和作用,同时介绍一些往届学生将所学程序设计知识用于数学建模、程序设计竞赛、专业课程学习等方面的生动实例,这些都是教师第一节课的良好素材。

3)培养学生系统化的程序设计思维。

程序设计课程长期存在着注重语句、语法和细节的特点,基本上是以程序设计语言自身的体系为脉络展开的。许多学生在学习程序设计语言课程时会觉得枯燥难学,学过后又不能用来解决实际问题。所以学生虽然学了一定的程序设计知识,但编程能力较差。‘部分学生在遇到实际问题依旧无从下手。而系统化程序设计思维培养模式是从本科生的认知特点出发,让教师在教授学生程序设计课程、提高学生编程能力的同时,培养学生的系统化程序设计思维。

程序设计课程不仅教学生如何进行计算机编程,而且教学生如何像程序员一样思考问题。系统化的程序设计思维的培养过程就是让学生自己动手解决实际问题的过程。这个过程充满了学生对未知问题的探索、研究与创新,不仅可以教会学生解决在程序设计中遇到的问题,而且可以锻炼思维,使学生的逻辑思维更加严密,这对一个理工科的大学生来说是至关重要的,对学生整体素质的提高、程序设计课程整体教学水平的提高都有现实意义。

4)互换角色思考与提问。

在教学过程中我们发现,很多学生不提问,有时是学生提不出问题,有时是不知该如何提问。这时,教师需要站在学生位置上,思考学生可能会有什么问题,然后由教师提出问题,让学生来回答。如果学生不能回答,教师再为学生解答。教师备课时不再只是准备我要讲什么,而是思考学生会遇到什么难点,需要向学生提什么问题、解答什么问题。基于此目的,教师需准备大量经典案例,提出问题,分析问题,并在问题中设置一些错误,让学生思考原因,并进一步思考如何修改错误,在这样的学习过程中潜移默化地掌握基本的语法知识和解决问题的方法。这种模式转变了学生的学习方式,激励学生积极思考问题、分析和解决问题。

2.2理论课程设计

由于科学技术的快速发展,计算机科学与其他学科间的交叉、融合日益增强。大多数非计算机专业的培养目标已将学生的计算机程序设计能力作为了一项重要内容。

本课程主要是针对非计算机专业的理工科一年级大学生开设的。与计算机专业不同的是,非计算机专业学生一般只学一门语言课程。因此,该课程的教学就担负起培养学生编程能力的重要责任,成为了学习其他程序设计语言的基础。

根据非计算机专业各学科的培养目标,“C/C++语言程序设计”课程在理论课程内容设计上注意知识结构的合理,强调基本能力的培养,注重基础理论与实际应用的融合。课程内容体系结构重点突出学以致用。课程内容知识结构由C语言简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理与变量的存储类型、文件、结构体与共用体、图形程序设计基础、C++程序设计基础、查找和排序12部分组成。

根据学以致用的原则,在实际应用中,函数是程序设计的重要内容之一,也是学生学习的难点之一,因此在理论课程设计中,我们将函数的使用提前讲解,让学生尽早接触函数,理解模块化的设计方法,掌握函数的基本设计和操作。在讲授第2章有关输入/输出库函数时,可同时结合第8章文件的知识,使学生掌握实际问题中涉及不同数据的不同输入/输出方式,较好地解决了学生学习C语言后不能熟练掌握文件操作的问题。

教材在内容编排上注重易用性。每章的开头设置本章学习目标,之后设置本章学习指导,包含“课前思考”“本章难点”和“本章编程中容易出现的错误”。每章后的练习题涵盖了程序设计中的常见算法,涉及简单程序设计、较复杂程序设计、易于举一反三的程序设计问题等内容,使学生能够通过练习,大大地提高编程能力。

2.3实验课程设计

“C/C++语言程序设计”是一门实践性很强的课程。在近几年的课程建设与教学改革中,实验课程注重理论课程内容与实验内容的有机结合,强调学生创新能力和实际动手能力的培养。C/C++程序设计实验教学内容改变了以往验证性实验为主的现象,使设计性实验内容占了70%以上。通过实验,培养学生分析问题和解决问题的能力,以及动手能力和程序设计能力,从而加深对理论课程内容的理解。

实验课程配有实验指导书,共设计了11个实验项目和一个综合程序设计,其基本出发点是帮助学生理解和消化课堂教学的内容,培养学生自主学习能力,加强其实践能力和团队协作精神,让学生掌握程序设计的基本思想和方法。具体实验内容包括:C/C++简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理、文件、结构体与共用体、图形程序设计、C++程序设计基础。

3 教学方法和手段

3.1教学方法

为了实现程序设计课程的教学目标,使学生不但掌握高级编程语言的知识、编程技术和基本算法,更要掌握程序设计的思想和方法,培养学生进行问题求解和编程的能力,以及探索和创新能力,我们采用了多种教学方法,主要做了以下改革。

1)课内与课外训练相结合,注重学生综合能力的培养。

课内教师根据教材进行引导学习,加强典型例题的启发式讲解。在分析常见错误案例的过程中,教师讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,帮助学生理解错误发生的原因和实质,掌握纠错的方法和解决的对策。在实验教学中,我们为每堂实验课设计相应的实验项目。实验项目的设计注重实用性和综合性。实践教学强调大量程序设计的训练。教师在网上为学生发布一些经典、实用、有一定挑战性的作业,鼓励学生课外多训练,倡导学生课后以寝室为单位,组成学习小组,进行讨论、分析和解决问题。

为了激励学生参与程序设计的实践,进一步提高学生程序设计的兴趣,提升他们的软件技术水平,成都理工大学每年举行一次全校范围的程序设计大赛。大赛采用初赛和决赛制,要求学生在2~4小时内完成一个综合性较强的程序设计题目,或在一段时间内完成一个综合程序设计题目,然后进行答辩。

2)重视实践教学环节、注重学生创新意识与应用能力的培养。

为了培养学生的实践动手能力,我们加强了实践教学环节的管理。教师要积极使用多媒体实验室的教学设备,进行启发、引导式的实验指导,将平时测试与期末测试结合,测试学生在1个小时内调试和正确编写程序的能力,引导和督促学生重视实践教学。开放性实验注重培养学生的创新意识与应用能力。

3)网站互动学习。

课程组建立的教学网站、精品课程网站、课程资源平台等为学生提供了网络课程、网上答疑、作业提交、理论试题及答案、上机试题及答案、教学录像、视频节目、精品课程网站链接、相关学习网站链接等资源,扩充了课堂教学区域。学生可以在任何时候、任何地点进行互动学习。这种方法及时地解决了学生在学习中遇到的疑难问题。

4)改革考核方式,采用多元评价方式考核实验成绩。

为了提高学生的学习兴趣,培养学生问题求解和编程能力,以及探索和创新能力,我们采用了开卷和闭卷相结合的考试方式,鼓励基础好的学生开卷考试,完成一个综合编程题目。经过实践,参加开卷考试的学生在独立分析问题、解决问题和编程能力上得到了很大提高。

3.2教学手段

多年以来,成都理工大学“C/C++语言程序设计”课程最大限度地、多方位地应用了以下现代教育技术手段。

1)课堂多媒体理论教学。

本课程的理论教学将传统教学手段和现代教育技术手段相结合,在应用现代教育技术手段的同时,继续发挥传统教学的优势。课堂上多媒体课件的播放效果直接影响到学生的听课效果,因此我们不仅制作了幻灯片,还利用Autherware、Flash等工具,制作了具有较强动画效果的多媒体课件,将程序的执行过程利用动画演示,生动、形象地模拟了计算机执行程序的真实情况。

2)建立计算机基础教学网站。

我们开发课程网上教学平台,为学生提供电子教案、多媒体课件、视频等丰富的网上教学资源,同时提供讨论和在线答疑,构建以学生为中心的自主学习环境。

3)网上考试系统。

网上考试系统为学生提供了模拟和考试环境,实现了系统自动组卷和评分功能,为学生课后自学和自测、提高教学效果搭建了一个有效的平台。

4 考核方式

课程考核可以采用开卷和闭卷2种形式。

1)闭卷考试由笔试和机试组成。

(1)笔试(占总成绩的50%)主要考核语言基础、基本的阅读和编写程序的能力。题型包括选择题、填空题、程序阅读题和程序填空题。

(2)机试(占总成绩50%)主要考核程序设计能力,包括上机考试(占总成绩的30%)和平时出勤及作业完成情况(占总成绩的20%)。

2)开卷考试主要考核学生综合程序设计的能力,独立分析问题和解决问题的能力,难度较大。通常只有学习优秀的学生可以参加开卷考试。这些学生必须是按时完成了每一次的实验项目,且中期考试合格。开卷考试要求学生提供源程序、开卷考试报告并参加面试。

5 结语

通过对各种教学方法和教学手段的研究和探索,我们改变了传统的知识传授理念,从而更加注重学生解决实际问题的能力,并提出“以学生为主体,教师为引导,网络教学为辅助”的全新理念,极大地激发了学生的学习兴趣,挖掘了学生的创造潜能,又培养了他们自主研究、协作学习的能力。实践证明,通过上述教学改革措施,教学效果取得了显著提高。在计算机二级c语言考试中,学生通过率较往年大大提升。当然,实际教学过程是一个相当复杂的系统,也还存在着一些需要解决的问题,还需要我们在今后的实践中继续开拓,不断探索。

参考文献:

[1]赵珊,贾宗璞,“C语言程序设计”课程教学模式改革方案探讨[J],科技资讯,2011(35):185-187。

[2]黄群,C语言程序设计课程教学设计探讨[J],计算机教育,2010(5):78-81。

[3]陈洪超,项目教学法在“C语言程序设计”课程中的应用[J],重庆电力高等专科学校学报,2012,17(3):29-30,36。

[4]左永文,案例教学法在“C语言程序设计”课程中的应用[J],科技创新导报,2012(18):175-175。

[5]陈刚,朱晓燕,江汉大学“C语言程序设计”课程教学改革[J],计算机光盘软件与应用,2012(7):245-246。

[6]李敏杰,吕橙,王雅杰,“C语言程序设计基础”的教学改革与实践[J],现代计算机:专业版,2012(8):45-49。

(见习编辑:刘丽丽)

作者:鲁红英 肖思和 孙淑霞

第2篇:C语言程序设计课程教学改革与实践

摘 要: 为提高C语言程序设计课程的教学质量,让学生更好地掌握核心技能,针对课程中教学难点多、语法知识多、学生重视程度不够等问题进行了认真分析,同时结合笔者在长期的教学实践过程中积累的经验,从教学目标、教学设计、教学内容选取、教学方法应用、考核方式等方面进行教学改革,提出了相关的解决方案,取得了较好的教学效果,教学质量明显提高。

关键词: C语言程序设计; 教学改革; 教学方法; 教学设计

Key words: C language programming; teaching reform; teaching methods; teaching design

0 引言

C语言课程通常在大学新生入校的第一学期开设,是学生接触程序设计的第一门课程,学习难度大,要取得好的成绩相对比较困难。如何在较短的时间内使学生掌握C语言的基础知识,获得编程能力,达到教学目标,是进行教学改革的重点。本文对实际存在的问题进行分析,结合作者近十年的C语言课程教学经验,在教学设计、课程内容组织、教学形式、教学方法和考核方式上大胆尝试改革,积累了一些实践经验,取得了不错的教学效果。

1 C语言程序设计课程教学现状及问题分析

长期以来,在“C语言程序设计”课程的教学过程中,存在着诸多影响学生学习积极性,影响教学质量的不利因素。从主观上来说,如教学方法陈旧、教学手段单调、学生学习积极性不高等;从客观上而言,C语言本身也有知识点多,概念抽象,编程算法使用灵活等特点。以下综合分析现存的几个具体问题。

1.1 教学方法没有创新

教学方面仍沿用老一套的理论加实验模式,实践训练与课堂教学未能很好地连贯,理论教学与实际应用脱节。教师的讲授照本宣科,忽视培养学生的实践能力和创新能力,较少考虑学生的实际学习状况,提供给学生主动思考的机会不多,重点和难点把握不好,引导学生积极思维方面欠缺。

1.2 教学手段相对单一

在教学安排上,理论课和实验课分离,在多媒体教室上理论课,然后过几天再在实验室安排实验课,这样对学习基础和自觉性稍差的高职学生来说很不合适。C语言程序设计这门课程需要实践教学,引入真实案例,培养学生分析问题和解决问题的能力,通过“教、学、做”达到对知识的深入理解和熟练应用。

1.3 学生基础知识薄弱

用C语言进行程序设计需要较为灵活的思维,而高职学生数学基础和逻辑思维能力较弱,习惯于死记概念、硬背知识点。教学中应训练他们思考问题、分析问题和解决问题的独立性。进而,培养其主动性。

1.4 概念抽象,知识点多

C语言中有大量的难以记忆和理解的概念,名词术语多、使用灵活、逻辑性强,在使用时容易出错。部分学生对抽象的内容始终难以掌握,甚至思维混乱,如++i,i--等。学生在学习中对一些复杂、灵活、综合性的算法,感到太难接受,独立编程时不知从何入手,渐渐失去学习的兴趣。

1.5 对学习重视程度不够

教师和学生均对本课程重视不够。有很多学生认为,这只是一门基础课,在以后的学习和实际工作中作用不大,在程序设计工作岗位中很少会使用到C语言,更愿意花较多的时间去学习C++、VB、JAVA等语言,从心理上抗拒这门课程的学习。而有的学校也对本课程重视不够,少有安排具有丰富教学经验的教师承担本门课程的教学。

2 教学设计及课程内容组织的改革与实践

为了探究适合高职软件技术专业人才培养的C语言课程教学特点,笔者经过多年的一线教学实践研究与探索,重新进行教学设计,对课程的设计思路是:以学生为主体,以教师为主导,基于实际工作任务精心构建课程内容,通过项目驱动、任务引领的模式培养学生的程序设计能力。

2.1 教学设计

从分析学生的基本特点入手,融入现代教育理念,重新进行课程的教学设计。本着“以学生为主体,以教师为主导,以实际案例为主线”的教学基本原则,积极鼓励学生通过“认知、理解、应用、综合”四个阶段的学习,达到使用C语言熟练编写程序的学习目标。

2.1.1 以学生为主体

教学以学生为主体,变常规的“教学”为创新的“导学”。充分利用现代化的教学设备提供学习资源,发挥学生的主体作用,提出问题,引导学生分析问题和解决问题。

对于第一次接触程序设计的学生,其编程训练应从小程序和一些简单问题起步,通过一些常用的经典算法和相应的案例学习,逐步掌握编程方法,待有了一定的知识储备后,再逐渐加大练习的难度,实现从算法到程序代码的转化,使学生能够将一个实际问题描述为一个计算机算法,然后再编写相应的程序代码。

2.1.2 以教师为主导

教师课前要了解学生的基本学习情况,了解其已有的知识结构和技能,根据学生的实际情况设计教学环节,根据知识点设置可扩散思维的问题,有重点地讲解,引导学生积极思维和主动学习。对于少数学习特别优秀且自学能力强的学生,可适当加快教学引导,增加学习难度和深度,这样可以在学生中树立榜样,带动其他学生自觉利用所学知识解决相关问题,提高学习质量[1]。

从第一次课开始,教师就要引导学生主动学习。选取的素材可以是当前最热门的IT话题,也可以从不同的专业角度和实际应用为学生介绍学习本课程的意义和作用,同时介绍一些历届学生参加省级和国家级的程序设计竞赛所取得的成绩,列举一些学生被选拔到知名企业实习的例子,如微软实习生等,引导学生对学习本门课程产生较大的兴趣。

2.1.3 以实际案例为主线

教学中引入实际案例,根据解决案例中的问题需要的知识结构选取教学内容,以实际编写解决问题的程序代码作为学习的主线。选用的案例如:“计算机三角形的周长和面积”、“计算机模拟抽奖”、“竞赛现场评分统计”等,选择案例的难度要形成一个梯度,随着学习的深入,学生的编程能力增强,逐渐形成系统化的程序设计思维。

常规的程序设计课程通常都注重语句、语法,以程序设计语言自身的体系展开,学生学习时难免会感觉枯燥难学,学过后又少有用来解决实际问题。而以实际案例贯穿整个教学过程,训练学生像程序员一样思考问题,使之逻辑思维更加严密,有利于学生整体素质的提高,更有利于程序设计课程整体教学水平的提高[1]。

2.2 课程内容组织

2.2.1 课程内容选取的基本原则

教学改革首要任务是教学内容的选择,如何选取教学内容是改革的第一步。“C语言”的语法结构复杂,对初学者学习难度大。高职学生虽然学习基础比本科生略差,却乐于动手、可塑性较强。基于此,课程内容选取的原则是:根据学生情况、课程特点以及后续课程对知识结构的要求,从实际工作需要出发,按所学知识够用好用的标准,确定本课程的必修内容。

2.2.2 课程内容的选取

本课程选择具有实际应用的典型案例作为具体的教学内容。将多个小项目按照编写程序的难易程度渐次推出,使学生把所学内容紧密结合实际应用,在基于工作过程的学习中获得职业能力。本课程具体内容的选取如表1[2]。

3 教学形式及教学方法的改革与实践

3.1 教学形式

⑴ 根据C语言知识结构的内在联系,依次安排教学内容。以各个小项目的开发工作主导教学过程,将课堂学习和工作过程学习融为一个整体。

⑵ 运用项目导向、任务驱动的方式,设计课程引入、启发、讲解、讨论、实训等过程,采用教学做一体化的形式带动学生自主学习,通过工作任务进行能力训练。

⑶ 在每个学习单元中均将应掌握的知识融入项目开发任务中,进而转化为学习任务,激发学生的学习兴趣,让学生在主动学习中完成各个任务。学习过程中注重教、学、做相结合,从讲解、演示、练习、讨论,递进到学生自主学习、独立完成任务。

⑷ 教学过程中注重学生能力的培养。如自主学习能力及独立思考、分析问题、解决问题的能力等。

3.2 教学方法

为确保课程教学目标的实现,让学生通过学习高级编程语言的知识,能够使用C语言编写应用程序,同时培养学生程序设计的思维能力以及探索创新的能力,我们在教学中引入了多种方法进行改革,取得了不错的教学效果。

3.2.1 分析案例,启发引导, 增强学习兴趣

每一次上课都引入一个实际案例。教师对案例进行分析,讲解案例中涉及的知识点,然后提出相关问题,给出初步解决方案。比如递归算法一直是C语言教学中的难点,通过分析如“扫雷游戏”这样学生比较有兴趣的问题来讲解算法的构造, 学生较容易理解递归算法的工作框架及流程。讲解二维数组也是通过“学生成绩计算与统计”这个项目来完成的。通过具体的案例分析, 既能把抽象问题具体化,又可以调动学生的学习兴趣,较快接受新知识[3]。

3.2.2 知识讲解与应用并重,训练程序设计思维模式

讲解C语言的知识点时,不能只侧重于简单的语法知识介绍,还应注重知识的连贯,同时辅以相应的应用技能训练,以免学生死记语法而忽略了程序设计方法。强化“自顶向下、逐步细化分解”的程序设计思维训练,培养学生在编写复杂代码之前能将复杂的问题分解为若干个逻辑结构合理的简单算法的能力,探索解决问题的方法。

3.2.3 “教、学、做”一体化

“教、学、做”一体化的教学方法,符合学生的认知规律,适合运用于项目导向式的案例教学。课堂上教师注重把握好“应用为主线,减少抽象理论描述”的原则,将“精讲多练,以教师为主导,以学生为主体”的教学设计理念贯穿于整个教学过程。注重调动学生的学习积极性,启发学生勤思考、多动手,充分利用好学生的“听、思、做、练”各个阶段,及时检查思和练的效果,培养学生求真务实的科学精神[4]。

3.2.4 分组讨论,培养团队协作能力

对于难度不大的学习内容,可安排学生自学,而对于综合性较强的学习内容,则可以安排学生分组进行讨论。自学和讨论的结果由学生在课堂上向同学讲述,让每个学生都有积极参与的兴趣,这样既能活跃课堂气氛,又能培养学生的自学能力和团队协作精神[5]。

3.2.5 课内外训练相结合,培养学生综合应用能力

课内教师进行引导教学,通过典型案例讲解程序设计的基本方法、程序测试方法、程序调试和排错纠错方法,并为每次课设计相应的实训项目。课内时间有限,鼓励学生课外进行自主学习,将课堂上学习过的内容融会贯通,充分地消化和吸收。安排有一定挑战性的实训项目,鼓励学生课外多训练,倡导学生课后以寝室为单位,组成学习小组,进行讨论、分析和解决问题。鼓励学生积极参加各类程序设计比赛,以赛促学。如参加广东省举办的“高校杯”程序设计比赛,进一步提高学生程序设计的兴趣,提升综合应用能力。

4 考核方式的改革与实践

考核采用闭卷上机编程和实训项目答辩相结合的形式。

4.1 闭卷上机考试

上机测试占总成绩的70%,考核基本知识的掌握情况。主要考核基本语法、常用算法、编写小型程序、测试小型程序和解决一般问题的能力。

教师根据考核要求给出7个编程题,让学生任选5个。题目涵盖基础知识的80%以上,对每个编程题提出具体要求,如使用冒泡法排序、使用选择法排序、使用函数、使用指针等非常具体的要求,以较为全面的考核学生对知识的掌握情况。

4.2 实训项目答辩

实训项目答辩占总成绩的30%,考核学生运用知识的能力、综合程序设计的能力、分析问题和解决问题的能力,以及团队合作能力。以下给出具体实施方法。

⑴ 教师给出8-10个实训项目,供学生任意选择一项。

⑵ 学生5-6人为一组,在给定的项目中选择一项,也可以自行拟定其他的项目。

⑶ 成立答辩小组。答辩小组由任课教师、课代表和各小组指派的一名同学组成。

⑷ 答辩时,先由各小组指派一名同学对他们的项目设计进行讲解,然后小组其他成员接受答辩小组的提问。

⑸ 成绩由答辩小组各成员现场打分,分数统计后去掉最高分和最低分,取平均值记入小组每个成员的成绩表。

这样的考核方式,有利于学生灵活运用所学知识,有利于创新思维的培养。

5 结束语

通过改进课程教学方法、重新序化教学内容、不断完善教学手段、改进考核方式等教学改革,有效提高了学生主动学习的积极性。以往不及格率最高的C语言课程,近三年的及格率均在90%以上,30%以上的学生获得了优秀,对于课程设计绝大多数学生都完成得很好。我校大一学生在2013年的“蓝桥杯”全国软件专业人才设计与创业大赛中取得了一、二等奖的好成绩,这从一个侧面验证了教学改革是卓有成效的。

虽然高职院校对基础核心课程不断提高重视程度,但C语言程序设计课程的教学方法、教学内容、考核方式的研究和改革是一个长期的课题,必须与时俱进,在教学实践中不断探索新思路。

参考文献:

[1] 鲁红英,肖思和,孙淑霞.“C/C++语言程序设计”课程教学改革与实践[J].计算机教育,2013.7:95-98

[2] 康玉忠,甘宏,段传林.C语言程序设计项目教程(第1版)[M].中国商业出版社,2010.

[3] 李杰,刘延岭,苏建华.C程序设计课程教学方法的实践与探索[J].计算机与网络,2014.1:127

[4] 董淑娟.高职“C#程序设计”课程教学方案研究[J].教育与职业,2012.20:125-127

[5] 袁学倩.《C语言程序设计》课程教学改革的探讨[J].职校论坛,2012.21:137-138

作者:任淑美 李宁湘 陈杰

第3篇:信息技术在高职C语言课程中的实践研究

摘 要:C语言教学是计算机专业与相关专业的重要基础课程,其教学质量的高低对学生后期的课程学习有直接的影响。随着网络技术和计算机技术的发展,如何充分发挥信息技术在课程教学中的实践作用,将是广大教师重点研究的方向,也将是一个严峻的挑战。文章中以高职C语言课程教学为例,探讨一下信息技术在高职C语言课程中的实践效果。

关键词:信息技术;C语言课程;高职;现代教育技术;教学改革

随着计算机的普及与推广,网络技术和多媒体技术已经进入我国的教育领域,并得到快速的发展,C语言教学也越来越受到广泛重视。在现代教育的推动下,信息技术广泛应用于各个教学科目,因具有耗时短、针对性强、教学内容丰富等教学优势而深受师生的喜爱,并成为改革传统教学方式和学习方式的重要途径。对高职学生而言,C语言教学具有一定的难度,具有较强的思维性和理论性,让不少学生在学习中存在一定的理解障碍,尤其是在教学初期,如果不能深入理解课程中的知識点,将对后期的学习产生很大的消极影响。借助信息技术辅助教学,让C语言课程与信息技术相结合,可以有效提升课堂的教学质量。

1 传统教学下的C语言课程

在高职院校中,C语言是计算机类和自动化类专业的一门专业基础课程,既能够帮助学生从基础开始认识计算机,同时也是后续专业设计课程与程序课程的重要基础,不仅能培养学生的计算机应用能力、逻辑思维能力,学习更多解决问题的步骤和方法,还能在学习实践中提升学生解决实际问题的能力。在以往的C语言教学中主要以理论知识点的讲解来辅助相应的实践操作,全面的知识点安排比较冗繁,学生通过学习C语言课程程序设计的语法知识来掌握基本的方式方法,但是这种教学模式对于基础较弱的高职学生而言,全方位的研究性学习不太适合。冗长的理论性学习比较枯燥,不合理的教学内容,让学生在长时间的学习下容易疲劳,甚至丧失学习兴趣。尤其是随着我国大众化教育的发展,高职的生源质量逐渐下降,学生层次也呈现参差不齐的状况,学生对C语言课程的重视程度也比较低,再加上C语言课程课时较少,很大程度影响了教学质量的提升。根据当前的高职岗位需求来看,技能型人才更加适合社会的需求,这就需要在培养高职C语言专业的学生中,必须重视技能培养和动手能力的训练,为社会提供更多实用性人才。而现代化的教育理念也应该更加深入C语言课程的教学过程中,充分发挥信息技术的作用,提升高职院校的人才培养效果。

2 信息技术应用于C语言课程的重要作用

信息技术引入高职C语言课程,这是对传统教学的改革,也是现代教育发展的重要趋势。这对任课教师提出了更高的要求,需要专业教师对教学内容、教学目标、教学情境和教学评价等环节有更加清晰的认知,并且能够熟练运用信息化技术,不仅丰富了教学方式、完善了教学内容,还为高职院校人才培养质量奠定了良好的基础。具体可以从以下几点分析:(1)信息技术在C语言课程中的应用,在教学环节上更加符合学生的学习规律,将课前复习、课中授课、课后作业与实践等环节都包含在内,综合了自主学习、知识传授、知识验证等整个学习过程。学生除了课上学习,课下还可以通过互联网技术获取更加前沿的学科知识,这有利于学生的知识框架结构的组建和再建,整个学习过程和学习效果更符合信息时代社会发展的要求。(2)信息技术辅助教学,教学时间较短,这就需要教师和学生提前学习,因每个学生的个体差异导致学习成效肯定会有差距,教师可以针对这些问题综合分析学生的学习误区,及时调整教学方案,完善教学内容。(3)任课教师可以根据不同学习程度的学生进行分层教学,学生在课下可以根据自身的实际情况选择相对应的教学内容,还可以对自己遇到的问题通过网络建群进行讨论交流,这样既体现了因材施教的教学思想,又增加了学生之间的合作能力,有利于学校效果的提升。

3 当前高职院校C语言课程中信息化技术应用的现状

信息化教学是教学改革持续发展的主要方向,同时也是推进人才培养发展的重要途径。近几年来,不论是高职院校还是本科院校,都处于信息化改革发展的阶段。在课程改革的影响下,学校不仅仅是传道授业解惑的场所,还要培养学生的综合素质。信息化时代的发展,对推动高职院校的C语言工作有很大的帮助。因高职院校的学生基础较弱,且学生主动性并不高,容易受到网络信息的影响。高职教师可以借助这种现状,引导学生正确利用信息化手段,如翻转课堂、微课教学等,充分发挥各类新型课程教学模式,可以有效提升学生的学习效果。然而,从目前的高职教育情况来看,C语言课程的信息化技术应用情况并不乐观,主要原因来自于任课教师的教学理念偏差和教学环境的影响。从任课教师来看,教师作为课堂教学的主要引导者与组织者,其自身教学水平的高低与教学理念是否新颖,对信息化教学的成败有着直接的影响。在C语言课程中,本身信息化手段使用的时间并不长,再加上传统教学模式思想的影响,导致不少任课教师的信息化教学思路较窄、信息技术应用水平不高,任课教师很难充分利用信息化手段的特点和优势,更谈不上利用信息化手段解决实际教学问题和提升教学质量。从教学环境来看,提升信息化教学效果,必须具备一个良好的教学环境,还需要学校提供较为完善的教学设施,但是从当前高职院校的实际情况来看,这些教学设备并没有普及,很多方面都需要补充与完善。例如,就目前的高职院校器械设备来看,问题较多,还有一些教学场地还没有实现联网和软件更新问题,这种种存在的细节问题很大程度上抑制了信息化教学的实施与发展。

4 C语言课程的信息化教学理念分析

在当前的互联网时代,传统的C语言教学模式已经难以满足信息化时代对高职学生提出的要求,也难以适应全民信息化的潮流,为了适应现代教育的发展和信息化时代的要求,应加强对高职院校C语言课程教学的改革,并积极利用信息化手段进行创新与弥补,实现理论与实践的双重结合,如此才能有效激发学生的学习兴趣,真正意义上提升教学效果。传统教学中存在一定的弊端,但是经过多年的教学实践,传统教学中也有可取之处,因此采用信息化教学并不是彻底替代传统教学,而是通过发挥信息化教学的优势去弥补传统教学中的弊端。在高职C语言课程教学目标中,能够创设一个融合了多种教学手段与信息化手段为一体的课堂模式,就能够有效提升学生的理论学习与实践动手能力,C语言作为一门实践性较强的课程,需要实现理论学习过程与实践过程的实时互动,将理论与实践有效结合,引导学生能够独立自主学习、团结合作,才能够提升C语言课程教学的整体效果。另外,学生作为教学活动的主体核心因素,必须充分挖掘学生的学习潜能,设计合理的教学环境与教学内容来调动学生的学习主动性与积极性,充分发挥学生的主观能动作用,引导学生能够自主化学习、协作学习。利用信息化教学对传统教学进行改革,主要从以下几点进行分析:(1)教学内容:要重点结合高职院校对的课程标准与人才培养方案来制定教学内容,认真分析传统教学中教学内容与课程设置的不足;(2)教学设计:传统教学中单一的教学形式忽略了学生的个性发展,师生之间缺乏交流,对于抽象的理论知识,学生难以理解,针对此,要借助信息化的相关平台与教学资源,辅以视频及互动教学等手段,帮助学生理解知识点;(3)教学过程:主要针对课前、课中、课后三个阶段的过程,不论是知识点的学习还是动手操作课程,教师都要以引导为主,通过有趣的课堂导入,让学生的注意力集中到课堂上,以提问式为主,激发学生主动思考与讨论,学生之间可以合作学习,教师提供相关的资料作为参考,最后做出总结,教师根据学生的讨论结果做出有效点评。借助平台与软件的作用,帮助学生有效完成课前预习与课后的作业;(4)通过多方面的考核对学生的学习过程、学习态度和学习效果做出有效评价,帮助学生提升个性化发展,让学生在实践中验证学习,在学习中联系实践,教师通过不断优化信息资源,为课堂效果的提升创造条件。

5 高职C语言课程教学中信息技术的设计要求

(1)结合高职院校当前的实际情况,整合本院校C语言课程的现有资源,查看是否有与院校课程配套的优质资源,针对当前的考试平台与实践教学情况进行修复,摒弃老旧的教学辅助工具,采用较为熟悉和先进的教学辅助工具和平台,保证信息技术在C语言课程教学中能够顺利开展。

(2)针对之前的线上教学经验,将学生存在的个别问题进行分析总结,研究良好的互动方案,保证学生之间、师生之间的良好沟通和问题反馈,提前设立好对课程传统方式进行改造的新方案,还可以结合本课程的实际要求,引进微课资源或慕课资源,充分利用网络的优质资源,减少在信息化教学中产生因网络不稳的不良效果。

(3)结合当前的C语言教学实际情况,反复对新的教学方案进行微调和确认,以从易到难的顺序对重点知识点进行讲授,若遇突发情况导致网络不稳或者无法继续开展信息技术教学,要提前准备好备用方案,还要提前准备好相关知识的教学材料和资源,作为学生课下复习的参考资料。

(4)C语言课程具有很强的逻辑性和理论性,需要掌握的理论知识和技能比较多,通常情况下,采用信息技术的时间不宜过长,这就需要在设计中将教学内容能够清晰简洁地列出,突出教学主题,更好地体现信息化教学的精细化。

(5)学生在初次接触信息化课程时可能有一定的学习难度,因此任课教师需要循环渐进,合理利用信息化教学,做好网络传输与网络储存工作,及时补充和拓展教学资源,让学生能够及时查阅到教学资料进行查漏补缺,以此来巩固所学知识。

6 信息技术在高职C语言课程教学中的实践研究

(1)知识点划分。C语言课程的教学内容比较多且难度大,尤其是实践操作环节更难。结合此情况,应该将课程中包含的知识点以难、中、易三个等级划分出来,为开展阶梯式教学奠定基础。在讲解过程中,以概念性知识点、讲解性知识点、演示性知识点、实践操作、教学反馈等顺序进行教学。

(2)课程包设计。建立网络课程包,主要是為了课程资源储存,还能用来引导学生利用网络资源完成自主学习,信息技术下的课程教学,有在线课程、慕课、微课、在线自测等多个系统。教师可以引导学生结合实际情况进行知识弥补和自测,自测题目也应由易到难,由理论知识延伸到编写程序的实践操作,使学生能够在自测的过程中精准地找到自己的问题,在有限的时间内反馈学生的学习情况。而每个学生都可以利用自身的登录账号进行自主学习,教师根据学生的反馈信息,找出学习缺陷,并及时调整教学。课程包的内容和形式需要根据学生每阶段的学习情况及时调整,有针对性、目的性地展开调整。

(3)教学方式的过渡。为了让更多学生尽早适应从传统教学到信息化教学的过渡,教师要从传统的讲授式逐渐过渡到以学生为主体的教学方式,不是僵化地应用信息技术手段,而是在对教学的各个环节进行精心设计之后,使用适当的信息技术,结合能够引导学生学习兴趣的课堂活动,营造良好的课堂氛围,激发学生主动参与课堂的意识,在学生逐渐将更多主动性融入自己的学习过程中的基础上,才能真正实现教师作为引导及辅助学生学习的角色,而学生自己作为主体的真正意义上的翻转式教学。

(4)学生对信息化教学的认识。信息化教学的引入,首先,让学生清晰地了解C语言这门课的重要性,通过挖掘C语言课程的趣味性和实践作用,让学生在提高学习效率、掌握实操能力的同时懂得学习该课程的意义,尤其是网络时代下的C语言课程。其次,让学生从使用信息化手段娱乐的生活日常向使用信息化手段学习的习惯养成而转变,在这个过程中,逐步改变学生的学习习惯,培养学生的学习能力,提升学生的学习素养。

总结

与传统的教学方式相比,加强信息技术在C语言课程中的应用与研究,学生的学习效果有了一定的提升,也取得了预期的教学效果,为了进一步深入教学改革,落实因材施教,必须充分利用网络资源,以现代化的信息技术来引导和组织学生实现自主学习,通过多元化的教学方式、丰富教学内容、尊重学生的主体地位、围绕以学生为中心展开教学,可以有效促进学生的个性化发展和综合能力的提升。

参考文献:

[1]谭桂华.《C语言程序设计》线上课程模式研究[J].计算机产品与流通,2020(10).

[2]杜琰琪.新冠疫情下《C语言程序设计》线上教学探索[J].电脑知识与技术,2020(14).

[3]张娴,朱麟.基于现代教育技术的C语言教学改革研究[J].中小企业管理与科技(中旬刊),2015(02).

[4]张帆,苏玉.以计算思维培养为导向的C语言程序设计课程教学改革[J].中国管理信息化,2021(15).

[5]刘洪普,侯向丹,贾永娜,袁玉倩,彭玉青.PBL教学模式在课程思政教学中的应用——以“C语言程序设计”课程为例[J].教育教学论坛,2021(18).

[6]段爱华,陈红琳,门秀萍,张子振,木林.基于PBL的《C语言程序设计》教学实践[J].呼伦贝尔学院学报,2020(03).

[7]王兆晖.C语言程序设计“互联网+”教材建设实践[J].高教学刊,2020(26).

[8]范晓峰,邹策千.网络环境下《C程序设计》课程PBL的探索[J].内蒙古师范大学学报(教育科学版),2010(02).

[9]谢海玲.信息化教学环境下高职英语教学设计探究[J].辽宁省交通高等专科学校学报,2016(04).

[10]杨庆伟.浅谈信息化教学大赛对高职教育改革的促进作用[J].天津职业院校联合学报,2016(04).

[11]孟亚坤,宋欣,王岩.高校“C语言”课程翻转课堂教学模式的研究与应用[J].无线互联科技,2019(14).

[12]王明瑞.教学改革中翻转课堂与混合式教学的应用——C语言为例[J].电脑知识与技术:学术版,2019(6Z).

[13]朴志远.基于微课的C语言翻转课堂教学设计浅析[J].信息系统工程,2019(07).

项目:2019年宁夏工业职业学院院级教改项目

作者简介:杨皓(1985— ),女,汉族,陕西商洛人,本科,助教,研究方向:项目化教学。

作者:杨皓

第4篇:C语言课程设计实践报告

北京理工大学珠海学院 C语言程序设计实践报告

2014—2015学年第1学期

学 院: 计算机学院 专业班级: 软件工程5班 学 号: 130202051006 学生姓名: 陈洪阳 指导教师: 戴俊雅

成 绩:

时 间:

2015年 1月5日

实践1.猜数游戏 题目概述:

编程先由计算机“想”一个1~100 之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10 次,如果猜了10 次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。

程序设计概要与分析:

在源程序的开头中包含stdlib和time库函数,这样我们就可以调用srand()和rand()函数,其中调用srand()提供一个种子,它是一个unsigned int类型,取值范围是0~65535,然后调用rand(),根据提供给srand()的种子值返回一个随机数,我们用rand()%100就把随机决定的数值范围确定在1~100之间,然后定义一个num,记录这个随机产生的随机数,定义input,来储存用户输入的猜数值,用times来记录猜的次数,用do while循环来执行用户猜的次数有10次,用if else条件语句来判断用户是否猜中,或猜得太大、太小,用一个while循环来做总嵌套,设置n的值一开始不为零,while循环的条件是当n的值不等于0,最后用户就可以修改n的值来决定是否退出。

程序代码:

#include #include #include

int main() {

int n=1; while(n!=0) {

srand((unsigned)time(NULL)); int num,input; int times=0; num=(rand()%100)+1; printf("在1~100间猜一个数 "); scanf("%d",&input); do{

if(input==num){

} else if(input>num){

} else if(input

}

}

} printf("你猜的数太小了,请再猜一个 "); scanf("%d",&input); times++; }while(times<9); if(times>=9)printf("你已经猜了10次都猜不中,你输了 "); printf("继续下一轮新的猜数请按1,退出请按0 "); scanf("%d",&n); return 0; 运行结果示例:

选择继续下一轮新的猜数,猜了10次都没猜中

心得体会:

要懂得如何生成一个随机数,并且要确定它的范围在1~100之间,同时我们还要用do while循环体把猜数的次数控制在10次,每当我们输入猜想的数时就要做出判断,看看是否猜中,或者猜得太大或太小,输出提示信息。也懂得了通过修改while判断循环里面的条件,使得循环体里面的程序受我们修改的条件控制,可以继续循环执行或者不再继续执行。

实践2.成绩排名次 题目概述:

某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30 人参加考 试,学号可以用输入的序号代替。考试后要求: (1)计算每个学生的总分和平均分;

(2)按总分成绩由高到低排出成绩的名次;

(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分; (4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。

程序设计与概要:

定义存储学生信息的结构体,包括学生编号,姓名,各科成绩,总分,平均分还有名次。该结构体命名为student,然后定义结构体数组student s[],首先输入准备录入学生信息的人数,用amount来记录人数,用一个for循环,从0~amount-1,依次输入每个学生的各种信息,如学号,姓名,数学、英语和物理成绩。用grade[]数组来存这三科的成绩,如grade[0]存储数学成绩,grade[1]存储英语成绩。输入之后,再用一个for循环把每个同学的总分求出来,总分再除去3求出该名同学的平均分。按总分成绩由高到低排出名次,用两个for循环嵌套,第一个循环从0~amount,表示从第一个同学开始拿出来比较,第二个循环从1~amount,表示除了之前取出的同学以外的每一个同学,如果前一位同学的总分小于后一个同学的话,就交换两人的信息,第二个循环比较之后,便会把总分最高的同学的信息储存在第一个,然后我们设置排名rank的值为1,rank++,进行筛选第二名的,之后对应地把rank的值设给学生的总分排名

打印学生信息,输出表格的基本框架后,用一个for循环,依次输出每个学生的信息,最后还有根据学号查询学生信息,用户输入要查询的学生学号,在for循环里面依次比较,如果找到学号与用户输入相同的,便输出该名学生的信息。

程序代码:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title();

void list(student s[]); int main() { input(s); int i=0; for(i=0;i

//要求1 计算总分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; } //要求2 按总成绩排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } //要求3 打印名次表

title(); list(s); //要求4 查询

int number; printf("请输入你要查询学生的学号: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; }

void input(student s[]) { printf("输入班上参加期末考试的人数(不大于30人)"); scanf("%d",&amount); printf("请依次输入他们的学号,姓名,数学成绩,英语成绩和物理成绩 "); for(int i=0;i

printf("第%d位同学的学号,姓名,数学成绩,英语成绩和物理成绩 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } }

void title() {

printf(" 学生成绩表 ");

printf("----------------------------- ");

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { //n表示人数

int i;//rank=1; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

运行结果示例:

确定录入人数之后,依次输入每个学生的信息

打印出名次表:

输入学生的学号,查询学生信息:

心得体会:

懂得了用结构体将不同的数据类型结合在一起,然后定义结构体数组,使得每个数组中的成员都具有不同的数据类型变量。而且同属于一个数据类型,也可以定义数组来表示相同的类型但是有多个不同值,比如成绩这个变量。也懂得了用for循环语句求总分,用for循环语句将数组从头到尾输出。

实践3.单科成绩统计 题目概述:

学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过 30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实

现下列功能:(1)统计不及格人数并打印不及格学生名单;

(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下: 分段 人数 图形 <60 3(10%)*** 60‐69 8(…) ******** 70‐79 7(…) ******* 80‐89 8(…) ******** >=90 4(…) ****

程序设计与概要:

定义一个结构体stu,里面有学生的姓名和成绩,然后定义一个s[]数组存放每个学生的姓名和成绩,输入函数中用一个for循环来依次输入每个学生的姓名,还有输入成绩,用if条件语句判断输入的成绩是否为负数,如果是就退出整个输入函数,同时,我们还用if条件语句来判断输入的成绩处于哪个分数阶段,定义n

1、n

2、等整形变量来存储各个分数段的总人数,变量num来存放输入的学生共有多少人,变量sum是将每个学生的成绩都加在一起,最后用sum/num就等于全班该门成绩的平均分,我们用一个for循环语句,判断每个学生的成绩是否小于60分,如果是就输出他的姓名,这样就可以打印出不及格学生的名单了。同样的,用一个for循环语句,判断每个学生的成绩是否大于等于平均分,如果是就变量count+1,用来记录成绩大于或等于平均分的学生人数,同时可将成绩大于平均分的同学姓名输出,这样就打印出了成绩在大于等于平均分的学生名单了。最后是输出分数段,用前面记录各个分数段人数的n值除以总人数再乘以100%就得出比例,每一个分数段都用一句for循环语句,根据n值的大小输入对应数目的*。

程序代码:

#include #include #define M 30 struct stu { char name[20]; int score; }; stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0; int count=0; void input(stu s[]); void getnotpass(stu s[]);

void getavg(stu s[]); void percent(stu s[]); int main() { /*stu s[M]; int i=0,num=0; int n1=0,n2=0,n3=0,n4=0,n5=0; float sum=0,ave=0;*/ input(s); getnotpass(s); getavg(s); percent(s); return 0; } void input(stu s[]) { for(i=0;i

printf("请输入第%d个学生的姓名和成绩 ",i+1);

scanf("%s%d",&s[i].name,&s[i].score);

if(s[i].score<0)

break;

if(s[i].score>=0&&s[i].score<60)

n1++;

if(s[i].score>=60&&s[i].score<70)

n2++;

if(s[i].score>=70&&s[i].score<80)

n3++;

if(s[i].score>=80&&s[i].score<90)

n4++;

if(s[i].score>90)

n5++;

num++;

sum+=s[i].score; } printf("学生信息录入完毕 "); } void getnotpass(stu s[]) { printf("不及格人数为:%d ",n1); printf("不及格人员名单如下: "); for(i=0;i

if(s[i].score>=0&&s[i].score<60)

printf("%s ",s[i].name); } printf(" "); ave=sum/num; } void getavg(stu s[]) { for(i=0;i

if(s[i].score>=ave)count++; } printf("成绩在全班平均分及平均分之上的学生人数为:%d ",count); printf("成绩在全班平均分及平均分之上的学生名单如下: "); for(i=0;i

if(s[i].score>=ave)

printf("%s ",s[i].name); } printf(" "); } void percent(stu s[]) { printf("各分数段的学生人数及所占的百分比如下: "); printf("分段 人数 图形 "); printf("<60 %d(%.0f%%) ",n1,(float)n1/(float)num*100); for(i=0;i=90 %d(%.0f%%) ",n5,(float)n5/(float)num*100); for(i=0;i

运行结果示例:

依次输入每个学生的姓名和成绩,当输入成绩为负时,便退出整个输入:

统计不及格人数还有打印不及格学生名单:

统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单:

以直方图方式统计各分数段的学生人数及所占的百分比:

心得体会:

懂得了在for循环体内用if条件判断语句判断输入的值为负值时退出循环体。用变量计数器把符合要求的计数起来,最后可以得出符合要求的值共有多少个,也懂得了用for循环从所有值里进行筛选符合条件的值出来,更懂得了在求百分比时候要强制类型转换,把int类型的计算结果给转换为float单精度类型。

实践4.函数与文件训练 题目概述:

将实践练习2 中的第2题利用函数的思想进行修改,并将学生的成绩等信息输出到文件中。要求函数参数中

包含结构体数组或指针。输出到ASCII 文件的信息包括每个学生的学号、三门成绩和名次,每人一行。

程序设计与概要:由于我的实践2中就已经用了函数,所以我只需要把学生的成绩等信息输出到文件中。用FILE *fp,fp就代表我们要对其操作的文件,用open函数,根据文件的所在位置还有文件名,打开文件,并对应要求进行只写的操作,如源代码中fp=fopen("f: st udent.txt","w"),w代表写入操作,char一个c[]数组,存放对应项的名称,用fputs函数把数组里面的字符串写入到文件里面去,用一个for循环,循环调用fprintf函数,把每个学生的学号,各科成绩和排名都写入到文件当中去,最后关闭文件即可。

程序代码:

#include #include #include #define M 30 struct student { unsigned int num; char name[10]; int grade[3]; int sum; float ave; int rank; }; student s[M]; int amount;

void input(student s[]); void title(); void list(student s[]); int save();//输出到文件中 int main() { input(s); int i=0; for(i=0;i

//要求1 计算总分 平均分

s[i].sum=s[i].grade[0]+s[i].grade[1]+s[i].grade[2];

s[i].ave=(float)s[i].sum/3; }

//要求2 按总成绩排序

int rank=1; student t; for(i=0;i

for(int j=i+1;j

{

if(s[i].sum

{

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

}

s[i].rank=rank;

rank++; } save(); //要求3 打印名次表

title(); list(s); //要求4 查询

int number; printf("请输入你要查询学生的学号: "); scanf("%d",&number); for(int i=0;i

if(number==s[i].num)

{

printf("学号 姓名 数学 英语 C语言 总分 平均分 排名 ");

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

} } system("pause"); return 0; } void input(student s[]) { printf("输入班上参加期末考试的人数(不大于30人)"); scanf("%d",&amount); printf("请依次输入他们的学号,姓名,数学成绩,英语成绩和物理成绩 ");

for(int i=0;i

printf("第%d位同学的学号,姓名,数学成绩,英语成绩和物理成绩 ",i+1);

scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].grade[0],&s[i].grade[1],&s[i].grade[2]); } } int save() {

FILE *fp; fp=fopen("f:student.txt","w"); if(!fp) {

printf("can not open file! ");

exit(1); } char c[]="学号 数学 物理 英语 排名 "; fputs(c,fp); for(int i=0;i

fprintf(fp,"%u %d %d %d %d ",s[i].num,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].rank); } fclose(fp); } void title() {

printf(" 学生成绩表 ");

printf("----------------------------- ");

printf("学号 姓名 数学 英语 物理 总分 平均分 排名 ");

printf("----------------------------- "); }

void list(student s[]) { int i; for(i=0;i

printf("%u %s %d %d %d %d %5.2f %d ",s[i].num,s[i].name,s[i].grade[0],s[i].grade[1],s[i].grade[2],s[i].sum,s[i].ave,s[i].rank);

printf("----------------------------- "); } }

运行结果示例:

首先输入准备录入的学生人数,然后依次输入每个学生的信息:

打印出按总成绩排序后的学生信息表,以及根据学号查询:

在f盘中找到文件并打开:

心得体会:

懂得了用如何运用文件,把向程序中输入的数据全部输出到文件中去。用FILE *fp,fp就代表我们要对其操作的文件,用open函数,根据文件的所在位置还有文件名,打开文件,并对应要求进行只写的操作,如源代码中fp=fopen("f: st udent.txt","w"),w代表写入操作,char一个c[]数组,存放对应项的名称,用fputs函数把数组里面的字符串写入到文件里面去,用一个for循环,循环调用fprintf函数,把每个学生的学号,各科成绩和排名都写入到文件当中去,最后关闭文件即可。

实践5. 实践4(1)(2) 题目概述:

每位学生信息包括:学号、姓名、性别、学院、10 门成绩。共有不超过100 位同学的信息存放在ASCII 文件StudentInfo.txt 中;不超过10 个学院的信息存放在CodeInfo.txt 中,性别代码存放在SexInfo.txt 中,均为代码和其对应的名称。要求:

1. 定义至少包含以上学生信息和学院代码的结构体类型和指针(或数组)变量。 2. 函数实现从文件中输入信息到定义的数据中。

程序设计与概要:

定义一个结构体,名为student,里面的内容有学生的学号,姓名,性别,还有那个学院,以及10门成绩,构造结构体数组,student stu[100],用于存储100名学生的信息。定义读取文件中内容的函数,FILE *fp代表文件,调用fopen函数,通过文件所在位置以及文件名打开特定的文件,r表示只对文件进行读取,接着调用fscanf函数,把第一个位置的数据赋给学生的学号,用while循环体,循环的条件是调用feof判断文件是否读取结束,如果没有则返回0,用!feof()来让没读取结束的文件继续读取,接着再把同一行后面的数据分别赋给学生的姓名,性别代码和所属学院代码,再用一个for循环,把同一行后面10个数据分别赋给学生的10门成绩。一行读取完毕后,意味着已经读取完一个学生的所有个人信息,定义一个I值来存储已经读取学生的人数,每读完一人就i+1,再读取下一行的第一个数据赋给下一个学生作为他的学号。通过while循环把文件中的全部信息读取出来赋给所有学生,函数最后返回的是读取学生的人数i。定义结构体名为sxy,用于存储性别代码和代码对应的性别,可以在后面输出的时候,把对应的性别代码转变为用中文表示性别。定义一个结构体名为scode,用于存储学院代码和代码对应的学院名称,可以在最后输出的时候,把学院代码对应的学院名称输出。再定义一个输出函数,通过for循环,从0~i-1,把i个学生的全部信息输出,所以我们在主函数里面先调用读取文件中内容的函数之后再调用输出函数即可。

程序代码:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); struct student { int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; float ave;

}; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k; n=readData("f:StudentInfo.txt",stu); m=readDataxy("f:SexInfo.txt",s1); k=readDataco("f:CodeInfo.txt",s2); if(n==-1||n==0)

return 0; if(m==-1||m==0)

return 0; if(k==-1||k==0)

return 0; printStudent(stu,s1,s2,n,m,k);

system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; fp=fopen(filename,"r"); if(!fp) {

printf("error1");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件还没结束 返回1表示结束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

fscanf(fp,"%d",&stu[i].scores[j]);

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); }

return i; } void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 学生信息统计 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } }

运行结果示例:

心得体会:

懂得了从文件中输入信息到定义的数据中。就是要先构造与文件信息中相对应的结构体数组,然后用打开文件,需要知道文件的具体位置还有文件名,”r”就是表示只采取读取操作,用while循环,循环条件的判断标准就是用feof来判断文件是否读取到文件尾部,用fscanf把每个数据赋给对应的变量。其中最难解决的就是一开始学生文件里面的信息,学生性别用代号表示,学生所在学院也用代码显示,这样一来我们把文件中的信息赋给定义好的结构体

数组之后,用for循环把结构体数组一个一个输出后,显示的是性别代码和学院代码,我们要把代码都改为相对应的值,所以我们同样定义性别的结构体数组,学院的结构体数据,之后用for循环把性别数组里面的代号和学生数组中的性别代码想比较,用strcpy函数,相同的就把代码对应的性别赋给学生数组里面定义好的性别字符数组。同理的,学院代码相对同的就把代码对应的学院名称赋给学生数组里面定义好的学院字符数组。

实践6.实践4(3)(4)(5) 题目概述:

每位学生信息包括:学号、姓名、性别、学院、10 门成绩。共有不超过100 位同学的信息存放在ASCII 文件StudentInfo.txt 中;不超过10 个学院的信息存放在CodeInfo.txt 中,性别代码存放在SexInfo.txt 中,均为代码和其对应的名称。要求:

3. 函数实现排序(1):学生平均成绩的降序排序,并输出所有信息到显示屏。 4. 函数实现排序(2):学生姓名的升序排序,并输出所有信息到显示器。

5. 函数实现查询(1):根据学号查询学生信息,并输出该生信息,并输出所有信息到显示器。

程序设计与概要:

同上个实践一样构造结构体名为student,用来存储学生的信息,如学生姓名,性别代号,学号,学院代号和成绩等。构造结构体名为sxy用来存储性别代号和性别名称,构造结构体名为scode用来存储学院代号和学院名称。用三个不同的函数来实现读取三个不同文件中的内容,把文件里面的内容放到以上构造的三个结构体里面去,定义输出函数,用for循环把每个学生的性别代号同sxy结构体数组中的代号对应,把代号对应的性别名称赋给每个学生的性别sex属性值中,把每个学生的学院代号同scode结构体数组中的代号对应,把代号对应的学院名称赋给每个学生的学院sdept属性值中,最后再用一个for循环把从第一个学生到最后一个学生的全部信息输出。实现要求3中的根据学生平均成绩的降序排序,要求在从文件中读取成绩之后要计算出总分然后再除以10门成绩得出平均分,然后定义一个函数,用双重for循环,把第一个学生同其他学生比较平均分,如果比下一个同学的平均分低就交换两个的位置,否则就继续与下一个同学比较,直到第一层的for循环结束退出为止。再用for循环把排序后的学生信息从第一位到最后一位输出即可。实现要求4中的根据学生姓名的升序排序,要求也是用双重for循环,用函数strcmp比较两个学生的姓名,把第一个学生的姓名同下一个同学比较,如何比下一个同学大,就交两个学生的位置,否则就继续与下一个同学比较,直到第二层的for循环结束,意味一个同学的位置确定,继续第一层for循环的下一个同学,直到第一个层的for循环结束,就意味所有同学比较完毕,再用for循环语句把从第一个位置的同学到最后一个位置的同学,把他们的信息输出。实现要求5的查询要求,需要我们从键盘上输入要查询的学生的学号,然后用for循环从我们的学生结构体数组中遍历一遍,如果有找到学号同输入的学号相同的学生,便把他的所有信息输出,否则则输出不存在该名学生。

程序代码:

#include #include #include int readData(char *filename,struct student *stu); int readDataxy(char *filename,struct sxy *s1); int readDataco(char *filename,struct scode *s2); void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k); void search(struct student *stu,int n); void sortbyname(struct student *stu,int n); void sortbyave(struct student *stu,int n); struct student

{ int id; char name[10]; int sexno; char sex[4]; int deptno; char dept[20]; int scores[10]; double ave; }; struct sxy { int id; char sex[4]; }; struct scode { int id; char dept[20]; }; int main() { struct student stu[100]; struct sxy s1[2]; struct scode s2[10]; int n,m,k,b; while(1) {

system("cls");

printf("1.显示学生信息 ");

printf("2.姓名升序排序 ");

printf("3.平均成绩降序 ");

printf("4.学号查询学生信息 ");

printf("0.退出 ");

printf(" 输入需要查询的序号:");

scanf_s("%d",&b);

switch(b)

{

case 1:

n=readData("f:StudentInfo.txt",stu);

m=readDataxy("f:SexInfo.txt",s1);

k=readDataco("f:CodeInfo.txt",s2);

if(n==-1||n==0)

return 0;

if(m==-1||m==0)

return 0;

if(k==-1||k==0)

return 0;

printStudent(stu,s1,s2,n,m,k);

break;

case 2:

sortbyname(stu,n);

break;

case 3:

printf("按平均成绩降序排序如下:");

sortbyave(stu,n);

printStudent(stu,s1,s2,n,m,k);

break;

case 4:

search(stu,n);

break;

case 0:

return 0;

} system("pause"); } system("pause"); return 0; } int readData(char *filename,struct student *stu) { FILE *fp; int i=0,j; double sum; fp=fopen(filename,"r"); if(!fp) {

printf("error");

return -1; } fscanf(fp,"%d",&stu[i].id); while(!feof(fp))//feof返回0 表示文件还没结束 返回1表示结束

{

fscanf(fp,"%s%d%d",stu[i].name,&stu[i].sexno,&stu[i].deptno);

for(j=0;j<10;++j)

{

fscanf(fp,"%d",&stu[i].scores[j]);

sum=stu[i].scores[j];

}

stu[i].ave=sum/10;

++i;

fscanf(fp,"%d",&stu[i].id); } return i; } int readDataxy(char *filename,struct sxy *s1) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error2");

return -1; } fscanf(fp,"%d",&s1[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s1[i].sex);

++i;

fscanf(fp,"%d",&s1[i].id); } return i; } int readDataco(char *filename,struct scode *s2) { FILE *fp; int i=0; fp=fopen(filename,"r"); if(!fp) {

printf("error3");

return -1; } fscanf(fp,"%d",&s2[i].id); while(!feof(fp)) {

fscanf(fp,"%s",s2[i].dept);

++i;

fscanf(fp,"%d",&s2[i].id); } return i;

} void printStudent(struct student *stu,struct sxy *s1,struct scode *s2,int n,int m,int k) { int i,j; printf(" 学生信息统计 "); for(i=0;i

for(j=0;j

{

if(stu[i].sexno==s1[j].id)

{

strcpy(stu[i].sex,s1[j].sex);

}

} } for(i=0;i

for(j=0;j

{

if(stu[i].deptno==s2[j].id)

{

strcpy(stu[i].dept,s2[j].dept);

}

} } for(i=0;i

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(j=0;j<10;++j)

printf("%4d",stu[i].scores[j]);

printf(" "); } } void search(struct student *stu,int n) { int m,col=0; printf("请输入你要查询学生的学号: "); scanf("%d",&m); for(int i=0;i

if(stu[i].id==m)

{

col=1;

printf("%d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

} } if(col==0) printf("不存在该名学生信息 "); } void sortbyname(struct student *stu,int n) { student temp; for(int i=0;i

for(int j=0;j

{

if(strcmp(stu[i].name,stu[j].name)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

} } printf("按姓名的升序排序如下! "); for(int i=0;i

printf("%8d%8s%4s%12s",stu[i].id,stu[i].name,stu[i].sex,stu[i].dept);

for(int j=0;j<10;++j)

{

printf("%4d",stu[i].scores[j]);

}

printf(" "); } } void sortbyave(struct student *stu,int n) { int i,j,flag; student s; for (j=0;j

flag=0;

for (i=0;i

{

if (stu[i].ave

{

s=stu[i];

stu[i]=stu[i+1];

stu[i+1]=s;

flag=1;

}

}

if(flag==0) break; } }

运行结果示例: 开始的菜单界面:

输入1便会显示文件中所有学生的信息:

输入2便会实现学生姓名升序排序,且把排序后的学生所有信息输出:

输入3便会实现学生平均成绩降序排序,且把排序后的学生所有信息输出:

输入4便会实现根据学号查询学生信息:

心得体会:

懂得了运用双重for循环比较全体成员,如题目中所要求的姓名升序排序还有平均成绩降序,比较平均成绩可以用值的大小进行比较,但是比较姓名的大小就要用strcmp函数进行比较,如果有需要交换位置的,就定义一个同类型的中间值,作为交换的协助者,帮助完成两个值的交换,完成整个过程之后,把交换完成后的全体成员从头到尾用for循环输出即可。

参考文献:

[1] 张克军:《程序设计基础》,科学出版社。

第5篇:C语言课程实践-实践1实验报告

实验报告

1. 程序源代码

程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。 #include #include #include void main() {

int input_number;

int random_number; srand( (unsigned)time( NULL ) ); random_number = rand()%100+1; printf("输入您想猜的0~100之间的数:"); scanf("%d",&input_number); if (input_number >= 0 && input_number <= 100) {

if (input_number == random_number)

{

printf(" right!");

}

else if (input_number > random_number)

{

printf(" 您猜的数过大 ");

}

else

{

printf(" 您猜的数过小 ");

} }

else

{

printf(" 您猜的数应在0~100之间"); } } 程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。 #include #include #include void main() {

int input_number;

int random_number; int n; srand( (unsigned)time( NULL ) ); random_number = rand()%100+1; for(n=1;;n++) {

printf("输入您想猜的0~100之间的数:"); scanf("%d",&input_number); if (input_number >= 0 && input_number <= 100)

if (input_number == random_number)

{

printf(" right! ");

if(n==1)

{

printf(" 您猜了%d次,太牛逼了. ",n);break;

}

else if(n>1&&n<6)

{

printf(" 您一共猜了%d次,水平还行. ",n);break;

}

else

{

printf(" 您一共猜了%d次,才猜对,很勉强啊. ",n);break;

}

}

else if (input_number > random_number)

printf(" 您猜的数过大 ");

else

printf(" 您猜的数过小 ");

else

printf(" 您猜的数应在0~100之间"); } } 程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。

#include #include #include void main() {

int input_number;

int random_number; int n; srand( (unsigned)time( NULL ) ); random_number = rand()%100+1; for(n=1;n<=10;n++) {

printf("输入您想猜的0~100之间的数:"); scanf("%d",&input_number); if (input_number >= 0 && input_number <= 100)

if (input_number == random_number)

{

printf(" right! ");

if(n==1)

{

printf(" 您猜了%d次,太牛逼了. ",n);break;

}

else if(n>1&&n<6)

{

printf(" 您一共猜了%d次,水平还行. ",n);break;

}

else

{

printf(" 您一共猜了%d次,才猜对,很勉强啊. ",n);break;

}

}

else if (input_number > random_number)

printf(" 您猜的数过大,您还有%d次机会 ",10-n);

else

printf(" 您猜的数过小,您还有%d次机会 ",10-n);

else

printf(" 您猜的数应在0~100之间"); } if(n==11)

printf(" 你输了! "); }

程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。 #include #include #include void main() {

int input_number;

int random_number; int n,i=1;

game: srand( (unsigned)time( NULL ) ); random_number = rand()%100+1; for(n=1;n<=10;n++) {

printf("第%d轮游戏,输入您想猜的0~100之间的数:",i); scanf("%d",&input_number); if (input_number >= 0 && input_number <= 100)

if (input_number == random_number)

{

printf(" right! ");

if(n==1)

{

printf(" 您猜了%d次,太牛逼了. ",n);break;

}

else if(n>1&&n<6)

{

printf(" 您一共猜了%d次,水平还行. ",n);break;

}

else

{

printf(" 您一共猜了%d次,才猜对,很勉强啊. ",n);break;

}

}

else if (input_number > random_number)

printf(" 您猜的数过大,您还有%d次机会 ",10-n);

else

printf(" 您猜的数过小,您还有%d次机会 ",10-n);

else

printf(" 您猜的数应在0~100之间"); }

} if(n==11) { printf(" 你输了! "); i=i+1; goto game; } 2. 遇到的问题及解决方法

问题1:随机数如何调用?

解决方法:运用srand( (unsigned)time( NULL ) )函数。

问题2:”直到人猜对为止”功能如何实现? 解决办法:运用一个“无穷循环”,另游戏能够不断进行,并运用break语句停止于猜对情况。

问题3: “以此来反映猜数者“猜”的水平”功能的实现?

解决办法:在猜对情况下的if语句中嵌套if语句实现“猜数次数”的判断,分支输出“猜”的水平。

问题4:“每次运行程序可以反复猜多个数”功能的实现?

解决办法:此功能比较困难,但反复阅读程序后,发现代码并不复杂,运用goto语句和if语句的运用进行循环,即可实现此功能,且不会因为运用goto语句造成程序模块的混乱。

3. 总结(心得体会)

这是“C语言课程实践”的第一次实践,由于平时并没接触过Microsoft Visual C++ 6.0这个编译软件,因此刚开始还存在操作方面的苦难。经过一两节课的实践,能够熟悉界面和学会新建工程。

此次实践题目是“猜数游戏”,题目分成4个部分,其实内容相同,只是功能逐渐增加。鉴于这种题目,编写程序中需要思考预留部分,比如运用if语句嵌套时,要注意把“猜对”、“猜错”和“误猜”分支出来,使程序容易阅读也容易进行修改。

在编写程序过程中,遇到几个核心问题,通过学习后把困难一个个突破,并成功实现题目所要求的功能。

最后,我对编程有进一步认识,而且在编程调试过程中,能够从中发现问题并解决问题,这是程序能够走向成功的必经之路,也是带来成功喜悦必不可少的过程。

第6篇:《C语言程序设计实践》课程要求

一、课程综述

利用C语言的编程知识和编程技巧,完成具有一定难度、一定编程量的课程设计题目,从而掌握高级编程语言的知识和编程技术,掌握程序设计的思想和方法,具备利用计算机求解实际问题的能力。为C++等编程技术的学习奠定必要的实践基础。

二、课程目标

1、通过本课程的实践,培养自学、独立思考、分析和解决问题的能力。

2、通过对需求的分析,确立方案,编制程序与调试程序,初步掌握C程序设计的方法。

3、能熟练调试程序,完成课题任务。

4、根据个人的设计调试过程,撰写设计报告。

三、课程内容

设计《职工信息管理系统》软件,满足以下要求:

1. 可以在DOS命令行下完成下列操作:

a) 可录入职工信息:工号、姓名、电话(含0开头号码、13位以内),并显示是否操作成功(若工号已存在则提示);

b) 可删除指定工号的信息,并显示是否操作成功;

c) 可修改指定工号的各项信息,并显示是否操作成功;

d) 可查询指定工号的信息,操作后输出信息到屏幕;

e) 可输出全部职工信息到屏幕;

2. 软件的设计满足以下要求:

a) 使用数组存储职工信息,

b) 所有职工信息按照工号顺序存储到文本文件(自学文本文件读写语句);

c) 软件至少包含.c和.h文件共3个以上;

四、考核

1. 答辩:查看代码(使用多维数组结构)、解释代码(语句功能熟悉)、运行程序(功能正常齐全)

2. 提交纸质实习报告:软件功能需求,程序流程图,程序代码。

第7篇:C语言课程设计

- 1

1 前言

让自己所学的知识应用于实际生活中,理论联系生活,学以致用,我们将更好服务于民。我们是新一代的年轻人,要想将来在社会上更好的立足,就必须让自己强大起来,努力的学习新东西,了解新事物,跟上时代的步伐,这样我们才能与时俱进,不被社会所淘汰。C语言在大学里是一门很重要的课程,也是一门很实用的课程,学好C语言在当今的信息时代是一个很好的敲门砖。而且,我们是电子信息工程专业的,更应该学好C语言,这对我们以后走向社会有很大的帮助,为我们以后大学毕业去求职提升竞争力。从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。

2 需求分析

当今社会是信息社会,谁的信息越快速越准确,谁就会更好的生活在这个社会上,他的人生也将走向成功。信息业正在21世纪扮演着越来越重要的角色,也是中国十二五规划中的重要一环,因此,我们应该努力的去学习好这门课程,力争在以后的生活工作中大展身手。现在的社会日新月异,各种信息在不断的传递交流,谁最先获取了信息谁就会成功。所以,作为我们这类专业的人才,在毕业以后一定会大显身手,实现自己的人生价值。

2.1 课程设计目的

本课程设计为信息类公共课《计算方法与程序设计》配套的课程设计。是该课程的理论学习的延伸。通过本课程设计有助于锻炼综合运用C语言相关知识设

- 3为1;若n大于1,则开始循环运算(见图3.22流程图),直到i小于n不成立时结束循环。在循环运算的过程中,要调用两个函数即函数pit1和函数pit2(见图3.23流程图)。在调用函数pit1和函数pit2中,这两个函数进行相互递归调用。最后将调用函数pit1和pit2的值返回主函数main函数中,再输出高能质子数目t3和低能质子数目t4。

3.1 系统流程图

程序一系统流程图(如图3.11所示):

开始输入nt1=3,t2=1,i=1否n==0否是n==1是否i

- 5

3.2主要模块的流程图

程序一模块流程图如图3.21所示:

否i

图3.21流程图

程序二模块流程图如图3.22和图3.23所示:

i=1否i

图3.22流程图

- 7

} {t3=3*t1+2*t2; t4=t1+t2; t1=t3; t2=t4;} printf(" the high=%d the low=%d ",t3,t4);

程序代码4.1

程序二代码如下所示:

#include "stdio.h" int pit1(int a) { if(a==1)

} int pit2(int b) { if(b==1)

} main() { int n,i,t3,t4; printf(" input n"); scanf("%d",&n); if(n==0) { return (1); return(pit1(b-1)+pit2(b-1)); else return(3); return(3*pit1(a-1)+2*pit2(a-1)); else

- 9

图5.11 程序二运行结果:如图5.12(程序运行时,当输入时间变量n是3时,输出高能粒子是41,低能粒子是15。)

图5.12

- 11

参考文献

[1 ]张福祥. C语言程序设计[M]. 辽宁大学出版社,2008. [2] 张福祥,王萌.C语言程序设计习题解答与实验实训.沈阳:辽宁大学出版社,2008. [3] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008. [4]李勇帆,谢兵.大学计算机应用教程.北京:中国铁道出版社,2009. [5]田淑清.全国计算机等级考试二级教程.北京:高等教育出版社,2011. [6]杨振山,龚沛曾.大学计算机基础.北京:高等教育出版社,2006. [7]卢湘鸿.信息技术应用基础.北京:高等教育出版社,2004.

致 谢

在这次课程设计的撰写过程中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。

第8篇:C语言课程设计程序

#include #include #include struct student { int num; char name[15];

//定义学生结构体,st数组。

int score[5]; float jqave; int rank; }st[27];

struct kecheng { int num; char kcname[20];

//定义课程结构体,course数组. float xuefen; float biaozhuncha; int youxiu; int lianghao; int zhongdeng; int jige; int bujige;

}course[5];

void readdata1() {

int i,j;

char str1[100];

FILE *f1;

f1=fopen("c:xinji110213.txt","r");

fgets(str1,100,f1); // printf("%-s",str1);

for(i=0;i<27;i++)

{

fscanf(f1,"%d%s",&st[i].num,st[i].name);

// printf("%-4d%-10s",st[i].num,st[i].name);

for(j=0;j<5;j++)

{

fscanf(f1,"%d",&st[i].score[j]); // printf("%-9d",st[i].score[j]); }

// printf(" "); }

fclose(f1); }

void readdata2() {

int k;

char str2[100];

FILE *f2;

f2=fopen("c:xj02kc.txt","r");

fgets(str2,100,f2); // puts(str2);

for(k=0;k<5;k++)

{

fscanf(f2,"%d%s%f",&course[k].num,course[k].kcname,&course[k].xuefen);

// printf("%-8d%-10s%2.1f ",course[k].num,course[k].kcname,course[k].xuefen);

}

fclose(f2); } void jqave() { int i,j; float s=0,sum=0; for(i=0;i<27;i++)

{

for(j=0;j<5;j++)

{

s+=course[j].xuefen;

sum+=st[i].score[j]*course[j].xuefen ;

}

st[i].jqave =sum/s;

} }

void ranking()

{ int i,j;

for(i=0;i<27;i++) {

st[i].rank=1;

for(j=0;j<27;j++)

if(st[i].jqave

st[i].rank=st[i].rank+1; } }

void paiminghoudechengji() { int i,j; FILE *fp; fp=fopen("c:MC110213.txt","w"); printf(" 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 "); fprintf(fp," 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 ");

for(i=0;i<27;i++)

{

printf("%3d%5d%8s",st[i].rank,st[i].num,st[i].name);

fprintf(fp,"%3d%5d%8s",st[i].rank,st[i].num,st[i].name);

for(j=0;j<5;j++)

{

printf("%10d",st[i].score[j]);

fprintf(fp,"%10d",st[i].score[j]);

}

printf("%12.2f ",st[i].jqave);

fprintf(fp,"%12.2f ",st[i].jqave); } fclose(fp); }

void xiechengji() { int j; FILE *fp; fp=fopen("c:xj1110213.txt","w"); fprintf(fp," 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

"); printf(" 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

"); for(j=0;j<5;j++)

{

printf("%3d%15s%10.2f",course[j].num,course[j].kcname,course[j].xuefen); fprintf(fp,"%3d%15s%10.2f",course[j].num,course[j].kcname,course[j].xuefen);

printf("%10.1f%8d%8d%8d%8d%6d ",course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

fprintf(fp,"%10.1f%8d%8d%8d%8d%6d ",course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

} fclose(fp); }

void pingjunfen() { int i,j;

for(j=0;j<5;j++)

{

float zongfen=0,pingjunfen=0;

for(i=0;i<27;i++)

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

} }

void biaozhuncha() {

int i,j;

for(j=0;j<5;j++) {

float zongfen=0,pingjunfen=0,x=0;

for(i=0;i<27;i++)

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

for(i=0;i<27;i++)

x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen);

course[j].biaozhuncha=(float)sqrt((x/27));

} }

void count() {

int i,j;

for(i=0;i<5;i++)

{

course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0;

for(j=0;j<27;j++)

{

if(st[j].score[i]<60)

course[i].bujige++;

else if(st[j].score[i]<=69)

course[i].jige++;

else if(st[j].score[i]<=79)

course[i].zhongdeng++;

else if(st[j].score[i]<=89)

course[i].lianghao++;

else

course[i].youxiu++;

} } }

void chengjitiao() {

int i,j; FILE *fp; fp=fopen("c:cjt110213.txt","w"); do

{ printf("请输入你要查询的编号

退出请按零");

scanf("%d",&i);

fprintf(fp," 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次 "); printf(" 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次 "); if(i>=0&&i<=26) fprintf(fp,"%3d%10s",st[i-1].num,st[i-1].name);

printf("%3d%10s",st[i-1].num,st[i-1].name); for(j=0;j<5;j++) {

printf("%9d",st[i-1].score[j]);

fprintf(fp,"%9d",st[i-1].score[j]); } printf("%12.2f%8d ",st[i-1].jqave,st[i-1].rank); fprintf(fp,"%12.2f%8d ",st[i-1].jqave,st[i-1].rank); fclose(fp); } while(i>0&&i<28);

}

void bujigexueshengmingdan() {

int i,j;

printf("不及格学生名单如下: "); printf(" 学号

姓名

不及格课程

分数

"); for(i=0;i<27;i++) {

for(j=0;j<5;j++)

if(st[i].score[j]<60)

{printf("%3d%12s",st[i].num,st[i].name);

printf("%15s%8d ",course[j].kcname,st[i].score[j]);

// printf("

平均分");

// printf("%10.2f

名次%8d ",st[i].jqave,st[i].rank);

}

} }

void youdeng() { int i,k; printf(" 优等生名单如下 "); printf("编号

姓名

数学分析

高等代数

C语言 大学物理 大学艺术 加权平均分

名次 "); for(i=0;i<27;i++) { // for(j=0;j<5;j++)

if(st[i].jqave>=90||st[i].rank<=3)

{

printf("%2d%10s",st[i].num,st[i].name);

for(k=0;k<5;k++)

printf("%9d",st[i].score[k]);

printf("%10.2f%8d ",st[i].jqave,st[i].rank);

}

else ;

} }

void caidan()

{ loop: printf("

&&简易教学管理系统&& ");

printf("press 1 for

排名后的成绩表

! ");

printf("press 2 for

各科成绩情况! ");

printf("press 3 for

成绩条! ");

printf("press 4 for

不及格学生名单! ");

printf("press 5 for

优等生名单! ");

printf("press 0 for

退出 ");

int t;

scanf("%d",&t);

switch(t)

{

case 1:

paiminghoudechengji();break;

case 2:

xiechengji();break;

case 3:

chengjitiao();break;

case 4:

bujigexueshengmingdan();break;

case 5:

youdeng();break;

case 0:

exit(0);

}

goto loop;

}

void main() {

readdata1();

readdata2();

jqave();

ranking();

pingjunfen();

biaozhuncha(); count();

caidan(); }

第9篇:C语言课程设计选题

C语言课程设计任务书1 题目:某学院教学信息管理系统

功能:

1、每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。

2、输入功能:可以一次完成若干条记录的输入。

3、显示功能:完成全部教师记录的显示。

4、查找功能:完成按姓名或课程查找教师的相关记录,并显示。

5、排序功能:按职工号或教学效果综合评分进行排序。

6、插入功能:按教学效果综合评分高低插入一条教师记录。

7、将教师记录存在文件中。

8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

要求:

1、用C语言实现系统;

2、利用结构体数组实现教学信息的数据结构设计;

3、系统具有增加,查询,插入,排序等基本功能;

4、系统的各个功能模块要求用函数的形式实现;

5、将教学信息存在文件中。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书2 题目:酒店房间登记与计费管理系统

功能:

1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。

2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。

3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。

3、进一步要求:完成计费和费用查询功能。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、

小结等)。

C语言课程设计任务书3 题目:大学生成绩管理系统

功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,各科成绩等。系统可完成:

信息录入——录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);

信息查询——输入学号,查询学生各门课程的成绩及所有课程的平均成绩;查询所有学生各门课程的成绩,并按可选的自定义规则进行排序;

信息删除与修改——输入学号,删除该学生的成绩信息、输入学号,查询并显示出该学生的成绩信息,并在此基础上进行修改;

信息保存——将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个文件,包括10个学生的必要信息,能对文件进行补充,修订,删

除,并能进行统计计算;

3、进一步要求:完成包括一个班,一个年级乃至一个系的系统。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书4 题目:职工档案管理系统设计

功能:职工档案管理系统包含了职工的全部信息,每个职工是一条记录,包括编号,姓名,性别,出生年月,年龄,所在部门,职称,工资级别、电话等。系统可完成:信息录入、信息查询,并按可选的自定义规则进行排序;信息删除与修改(须设置密码),将职工的信息保存于外部存储器的文件中。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个文件,包括10个职工的必要信息,能对文件进行查询、补充、修订、排序、删除等;

3、进一步要求:能进行统计计算;完成包括整个职工的系统;对删除与修改等设置密码

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、

小结等)。

C语言课程设计任务书5 题目:银行存取款管理设计

功能:能够输入和查询客户存款取款记录。在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款记录;根据客户姓名查询存款和取款记录。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、完成最低要求:建立一个文件,包括输入10个客户的必要信息,能对文件进行输入、修订、删除。

3、进一步要求:完成客户姓名查询存款和取款记录,并能得到每次帐户总金额。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结

等)。

C语言课程设计任务书6

题目:商品订购系统设计。

功能:屏幕上出现一个界面,让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。建立两个文件,分别存放商品信息与订购信息。 分步实施:

1、 步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个小系统,包括10种产品能供顾客选择。

3、进一步要求:完成全部功能的系统。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书7 题目:设备管理系统设计

功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。能够显示和统计各种设备的信息。

分步实施:

1、 步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、 完成最低要求:建立一个文件,包含一个部门10台设备的信息,能对文件进行补充、修订、删除,能统计所有设备的总价值。

3、 进一步要求:完成设备按种类、按所属部门进行统计。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书8

题目:学生计算机机房管理系统设计

功能:该计算机房共有100台计算机,分为20排,每排50台。管理系统应包含每台计算机一周内的使用全部信息,包括计算机序号、配置、位置、状态、使用情况的历史记录(包括使用者姓名、学号、使用时间段)等。本系统可以模拟学生上机和离开的登记过程,查询机房计算机的使用情况。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:建立一个文件,包括200个计算机的必要信息,能实现学生上机和离开的登记过程模拟。

4、 进一步要求:完成机房计算机的使用情况查询和打印。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书9

题目:商店销售管理系统。

功能:屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。

分步实施:

1、 步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:能按商品编号进货和销售;

3、进一步要求:完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书10 题目:计算机辅助教学(CAI)软件开发:教小学生学英语。

功能:屏幕上随机出现一个汉语单词,英语单词,汉语词组,英语词组或一短句提示小学生给出相应答案,答错了要提示要求重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从单词到词组,从词组到短句。同样,也可降级。起步阶段可各选30个,软件可扩充,即扩大词库的容量。

(rand(),#include 结构体、文件或数组)

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:能教单词,并有统计功能,即一次答对的成功率为90%以上后可晋级;

3、进一步要求:完成词组和短语的问答,也有晋级功能。

要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书11

题目:五子棋

功能:1.由两个玩家分别下棋,当某一玩家五子相连,则赢。

2.界面要求:初始状态——显示棋盘,并显示两个玩家的操作键及初始玩家号;游戏进行状态——动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家号。 分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:由两个玩家分别下棋;

3、进一步要求:可以考虑人机对弈。 要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(图形界面,良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

C语言课程设计任务书12

题目:井子棋

功能:1.计算机为一方,人为一方,交替下棋,谁先连成一条直线谁胜;允许人选择先下还是后下。

2.界面要求:初始状态——显示棋盘,并显示玩家的操作键;游戏进行状态——动态显示棋盘不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家号。

3.提示计算机自动下棋的规则:计算机下时,应考虑所有空位,并按行、列、对角线计算每个空位的分值,若在某行(列、对角线)上,(设计算机画X,人画O)

已有XX 加50分

已有OO 加25分

已有X空 加10分

已有O空 加8分

都是空 加4分

然后选分值最高的位置画X。 分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:由人机分别下棋;

3、进一步要求:可以考虑使用鼠标。 要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(图形界面,良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结

等)。

C语言课程设计任务书13

题目:迷宫游戏

功能:1.随机生成迷宫,找出由入口经过迷宫到达出口的一条路径,允许选择人或计算机找出路。

2.界面要求:初始状态——显示迷宫的图面;用箭头指出入口外和出口外;游戏进行状态——选择人找出路时,显示每一步的结果,到边了和遇上障碍,发出“嘟”的叫声。走到出口处,应给出“胜利”的字样;选择计算机找出路时,用一条有颜色的线画出路径,若找不出出口就显示“无出路”的字样。 3.计算机找出路部分可选做。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2、完成最低要求:由人选择出路;

3、进一步要求:可以考虑由机器选择出路。 要求:

1、用C语言实现系统;

2、函数功能要划分好(结构化程序设计);

3、界面友好(图形界面,良好的人机交互),加必要的注释;

4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

课程设计的最后成果是实验报告一份,内容包括:

1、预习报告(题目、流程图、程序的设计思想等);

2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。

上一篇:会计专业学生自我鉴定下一篇:高三数学上教学计划