人人范文网 其他心得体会

c语言实训心得体会(精选多篇)

发布时间:2020-11-12 08:35:41 来源:其他心得体会 收藏本文 下载本文 手机版

推荐第1篇:C语言实训心得体会

c语言实训心得

10903090113 李新程

在初学c语言的一个学期后,我们进行了c语言实训阶段,尝试编写一个比较复杂的程序系统。在为期两周的时间中,我们同组的同学共同的感受是:c语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了c语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。

在这次实训中,我对对c语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对c语言的学习产生浓厚的兴趣。

还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。 通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好c语言,也学好用c语言编写一个按要求的系统。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。 首先我要继续学习好c语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。

总之,这一切都成为我记忆里面的一个篇章,更是在c语言编程上的一个里程碑。篇2:c语言实训总结

c语言实训总结

这个星期,我们迎来了c语言实训——一次至为重要的实训。在这个星期里,同学们都很认真的做着那20多道实训题目,遇到不懂的互相请教,或请问老师。非常感谢老师对我们的帮助,这次实训使我受益匪浅,收获了很多。 通过c语言实训,让我加深了对c语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。

这次实训有很大的收获,让我对c语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对c语言有了浓厚的兴趣和更深层的认识。 c语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,c语言还是很有意思的课程。 自己亲自动手编写程序让我增加了对c语言程序开发环境的了解,在上课的时候老师就讲,学习c语言最重要的是学习c语言的逻辑思维,不管以后从事什么行业,学习c语言都对自己的职业很有帮助,如果是从事编程工程工作的话。当初在初步接触c语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的相互探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础。

这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业! 这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。

最后,非常感谢学校给我们这次实训的机会。极高的锻炼了我们的逻辑思维能力。人非生而知之,虽然我们现在的知识结构还很差,但是我们知道要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。在剩下的时间里,我们会更加努力的学习。篇3:c语言上机实验心得

c语言上机实验心得

在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好c语言,这对我们以后的发展是十分重要的。

说到这,上机实验当然就是一个必不可少的环节了,c语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。

通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了c语言那就大错特错了。

我主要存在以下的这些缺点:

1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。而在最后

输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。

2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解

题了。

3、

4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够

深刻。

5、

6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在

一点问题。

为了能更好地学好c语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。

实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更

多。由此可看出上机实践的重要性。

通过本次c语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。编程的时候有因为顺利编出程序而开心过、有因为做得比人家慢而郁闷过、有因为不知从何入手而无奈过、有因为不知错出在哪而彷徨过??但随着练习的增多,我对c语言比以前熟了很多,不再只是纸上谈兵,我都有能力独立做出一些程序,可能对于一些“高手来说这不算什么,或者他们早就会了,但我依然觉得很开心,因为我跟我自己比是进步了。

当然,我还得感谢老师的指导与帮助,如果没有老师和其他同学的指点,我可能对c语言还是一筹莫展,在实验中遇到的大大少少的问题与所犯过的错误将是我以后的要加以注意的地方与认真审查的部分,为我奠定坚固的基石。伴随着学习的深入,我发现高深的东西还有很多很多,不懂不熟的知识还有很多,所以我不能停步,对c语言,我以后会更加努力学习的。篇4:c语言实训心得

c语言实习心得

两周的上机实习结束了,在这段时间内,我的c语言知识得到了温习,编程能力得到了很大的提高,我觉得这次实习很重要,而且是恰逢其时,当然通过自己编程的过程,也有了一些心得:

编程要的是正确的结果,体会的是艰辛的过程,收获的是好心情。

首先编程的时候你不能觉得这是一个繁琐的过程,在遇到出错的时候要有信心解决,不要害怕出错,不能忽略细节,尤其是对标点以及输入输出函数,要正确使用。其次,编程要有一个扎实的知识储备,没把课本看好,没把例题看好,不会编出正确的程序,同时,如果不多看程序,不断吸收别人的编程思想,就不会编出精彩的程序;当然也不能忽略与别人讨论与请教,在这过程中,我们可以相互交流编程想法,找到解决问题的最佳路径,这种团结协作的精神也是必须要有的。

两周很短,编程的过程却很漫长,思考,编程,改错,运行,这就是编程的感觉。感谢帮助我,还有一起讨论问题的同学,感觉老师细心的指导,在遇到小问题的时候,他也是很耐心的解答,感谢这次上机机会,让我重新温习了c语言,也让我对明年的等级考试更有信心。在初学c语言的一个学期后,我们进行了c语言实训阶段,尝试编写一个比较复杂的程序系统。在这次实训中,我对对c语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对c语言的学习产生浓厚的兴趣。

通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好c语言,也学好用c语言编写一个按要求的系统。

一年来,我们已经学习了vb语言和c语言,在应用这些语言的过程中,我们的逻辑思维得到了加强,更重要的是我们把在数学上学习到的算法应用到计算机程序中,通过分析问题,调查研究,最终解决问题。尽管每次解决问题的过程不会都很顺利,尤其是在出错的时候总是很难解决那些很细微的错误,比如一个符号打错,或者漏掉一个标点,检查起来都会很麻烦,但是,每次成功的运行,得到的不仅仅是一个正确的结果,更多的是体会到了过程,有了一种成就感,特别是c语言,最能给我这种感觉。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。 首先我要继续学习好c语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。

总之,这一切都成为我记忆里面的一个篇章,更是在c语言编程上的一个里程碑。篇5:c语言实训心得

c语言实训心得

在本学期学习c语言将近一个学期后,我们进行了c语言实训,做了一个比较复杂、功能较全的学籍管理系统。虽然实训为期不长,但对我c语言水平的提高和对c的认识理解有很大帮助。

在这次实训中,我对c语言有了一个更深的了解认识,也使我这个学期学的知识得到了巩固。虽然在实训中遇到了许多的困难,比方说一开始在文件方面的知识比较薄弱,在对输入的数据保存、已输入条数的统计方面做得不足。但经过自己对文件内容的学习和向他人的请教,在这方面的知识得到补充,问题也得到了解决。在这次实训中,当自己每次解决一个问题时,当自己经过多次调试、修改使程序得以运行时,自己心中那份自信、满足、惬意感油然而生。经过这次实训,使我加强了对c语言的兴趣。

同时在这次实训中,也使我发现了许多的问题。

在实训中,我认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃,以后要克服,尽量保持一颗良好的心态,学好c语言,也学好用c语言编写一个按要求的系统。

同时这次实训也使我更加深化了c语言学习方法。算法是程序的灵魂,在我们每遇到一个比较复杂的编程问题时,我们应该先写出该问题解决的算法,然后再去实现编代码。做到了这样,问题才能更快地解决。软件开发少不了合作,只有合作才能共同提高,只有互补才能取长补短,共同进步。

通过这次实训,我也认识到自己有许多的方面需要改进和有待提高。

对于以后,我会从以下几方面继续努力:

1、加强对算法的学习,达到精通一些基本算法的水平。

2、编程多加强实践,多上机学习。

3、打好基础,扎实功底,注重基础理论学习,不好高骛远。

4、加强和同学的合作,遇到问题多讨论,多寻找解决问题的方法,

总之,这一切将对我c语言的学习有很大帮助。

推荐第2篇:C语言实训心得体会

c语言实训心得体会一:c语言实训心得体会

在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。

在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理。简单界面程序。高级界面程序。程序的添加修改。用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。

上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。

学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基矗为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:

1.加深对课堂讲授内容的理解

课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来(转载自第。)理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。

通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去\"掩盖\"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

2.熟悉程序开发环境、学习计算机系统的操作方法

一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓\"环境\"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基矗同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。

3.学习上机调试程序

完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。

通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。

c语言实训心得体会二:c语言实训心得(891字)

在初学c语言的一个学期后,我们进行了c语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我们同组的同学共同的感受是:c语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了c语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。

在这次实训中,我对对c语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对c语言的学习产生浓厚的兴趣。

还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中海给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。

通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好c语言,也学好用c语言编写一个按要求的系统。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。

首先我要继续学习好c语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。

总之,这一切都成为我记忆里面的一个篇章,更是在c语言编程上的一个里程碑。

c语言实训心得体会三:c语言实训心得体会 (906字)

一周的c语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!

首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,强化了知识!

其次,这次作中所碰到的题目,在实训中已经接触过,所我们都比较深知这些题目的要求和算法,因次在编写小程序时比较快,而且算法也是比较简化,运算准确。鉴次我明白很多编程题要经过多次编写修改与调试,才会得到最简略的算法。

再次,平时我们学c语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!

虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更加深化丰富!

这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业!

这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。

在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。

c语言实训心得体会四:c语言实训心得(1682字)

在初学c语言的一个学期后,我们进行了c语言实训阶段,尝试自己编写一个比较复杂的程序系统。在为期两周的时间中,我们同组的同学共同的感受是:c语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了c语言实训的复杂程序。在这里,我作为其中的参与者,自然感触良多。

刚开始接触到c的时候,我已经学过一些有关vb的内容,这个在算法和思维上稍微有点帮助。回想本学期的学习,首先,最基本的,是c的数据格式,让我们知道整数,浮点数以及字符常量在c中的运用。然后,在学会了数据转化,以及熟练的可以对各种数据处理之后,我开始进行有关数据结构,像数组,结构体等的学习,因为有的东西从现有的知识来看都是非常简单的,还没有联系到指针等等一些复杂的概念。可是,仅仅学会这些是远远不够的,c语言中,还有很多更加经典、重要、实用的知识。

说说函数。虽说很多程序语言都有函数这一内容,但我觉得c语言的函数是最有魅力的了。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,学习c语言的“高人”都说,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。比如,大家可以作一个比较字符串的实验,用c语言中的strcmp()函数只要一句话,而自己编写的话,30句都很难实现,可想而知函数的实用和快捷。在我们c语言实训的代码中,函数更是得到了充分的应用,可以说,实训题目的复杂代码,就是用无数个函数的调用和嵌套积累出来的。

要注意的是,有的同学刚刚开始的时候,都是被一些大的程序激励的,所以当开始的时候看到繁琐的数据转化和简单的算法,都觉得很无聊,都想自己做几个自己满意的程序来看看,虽然这种想法很好,但是,我们说,没有基础,纯粹是搬照一些现成设计方法,是不足取的。要知道,程序设计讲究的是个人的思维的,假如刚开始就被一些现成的思想束缚住,以后就会觉得很无趣。

我们知道,指针其实是c语言的灵魂,许多的数据结构在我们学到这里之前都可以说是精通了。所以我们的任务就是,让数据结构在指针中运行。当然,刚刚开始接触到这些新的东西,是一件非常痛苦的事情,所以我们一定要用非常形象的思维去看待指针,不能太固化。所以,新的东西,比如结构体在指针中的表现方法,数组及多维数组在结构体中的运用,都一点一点的加了进来,同时丰满了我们对原来c的数据机构,数据表示的理解。当我们完成了这三步的学习,我们已经可以自豪的说,我们的基础都扎实了,可以进一步的学习有关算法,设计概念等等深层次的东西了。

但是,指针,结构体,这些太抽象的东西,在学习c语言的时候我们就有点“似懂非懂”,可是在眼下的c语言实训中,像这么重要的c语言知识,一定要达到能熟练掌握,实际运用的程度。在实训的大程序中,结构体在指针中的表现方法,数组及在结构体中的运用等具体的技术环节,都得到了体现,不会指针,我们的工作是没法展开的。所以,在实训期间,大家在巩固基本知识的基础上,逐块攻克实训课题,克服了困难,自信心得到了提高。

最后,谈谈我们组的程序软件。商店商品管理系统,是一个比较利于应用,解决实际问题,方便实际管理的程序。设计代码比较复杂,结构比较严谨。在程序编写的1周左右的时间里,组员们遇到了上述的困难,包括程序设计构思,甚至是指针等某些知识点的欠缺,导致的工作中出现的困难。但是,当大家一起团结协作,解决了这些困难之后,发现自己也可以编写复杂的、应用性的程序了,更发现自己对c语言这门学科的兴趣也提高了。

当然,我们编写的商店商品管理系统,还存在很多疏漏和不合理之处。比如,程序复杂冗长,如果时间充裕,我们将在不改变程序运行结果的基础上,简化程序,使每一句更加精辟,总体上更加简化。另外,在程序的外观上,我们由于时间问题,没有做更多的修饰,运行起来显得比较死板、枯燥乏味。如果增添一些色彩和其他效果,我们的程序也许会更加完美。

推荐第3篇:C语言实训

湖北轻工职业技术学院 《C语言程序设计》实验报告

实验十一:函数

班 级: ___________10计管_________________ 姓 名: ___________胡高______________ 学 号: ___________1003011138________________ 日 期: ____________2011-5-29________________

一、实验目的和要求

1、理解数组引入的意义及作用;

2、掌握一维数组的基本思想和基本用法;

3、掌握使用一维数组的基本算法:排序与查找。

二、实验主要仪器和设备 计算机一台,Turbo C环境。

三、实验内容

请将该实验报告重新命名为“实验11-学号[姓名]”,如“实验11-66[张三]”

1、P145 填空题2(2)

2、P145 上机操作题 3(5)

四、实验原始纪录 实验1 程序的设计界面。(Alt+PrintScreeninclude SysRq拷贝当前窗口)

程序代码。(此处写代码,不是图片。

#include void main() {

void swap();

extern int a,b;

a=3;b=10;

swap();

printf(\"a=%d,b=%d\\n\",a,b);

}

int a,b;

void swap()

{

int temp;

temp=a;a=b;b=temp;

}

实验2 程序的设计界面。

程序代码。

五、实验结果及分析

实验1运行结果图。

实验2运行结果图。

六、实验总结与思考(主要写一些在实验过程中,遇到的问题、所犯的错误,以及是如何发现纠正的。大约100至200字左右。)

本次试验的内容是考察数组的引用、基本算法等,但是总体感觉有点问题。有的地方不知道如何下手

推荐第4篇:语言实训任务书

汇编语言实训任务书

一、实训题目:汇编语言综合设计

二、实训目的:通过汇编语言综合设计,进一步加深理解汇编语言的指令系统及程序设计流程,强化编程能力,增强上机调试程序的基本能力;学会动态文字的设计方法,理解82

53、8255在PC机中的应用,掌握用8253演奏简单乐曲的编程方法,加深理解汇编语言在接口电路中的实际应用。

三、实训时间:各班按实际时间填写

四、实训内容:

1、动态文字的设计

利用延时子程序,完成两种动态文字的程序设计:

(1)屏目上显示一字符串,并闪烁10次后消失。 (2)屏目上显示一字符串,并下落20行后消失。

2、音乐程序的设计

利用PC机中的定时器\\计数器8253使扬声器发声,并演奏简单的乐曲。 首先理解8253在PC机中的硬件连线及发声原理。发声时利用8253的计数器2,工作方工3来实现。掌握控制字的设置方法及计数初值与音符频率的关系。

(1)编写一简单的发声程序,使系统持续发声几秒后停止。

(2)编写演奏乐曲程序,使系统演奏出一首简单的歌曲。

五、实训要求:

1、严格遵守实训时间,做到不迟到、不早退、不旷课。

2、按时完成实训任务,上交软件作品及实训报告。

3、实训报告要包括封皮、实训题目、实训时间、实训目的、系统发声原理、实训内容。

4、每一种程序要求画出程序流程图,源程序、及运行结果分析。

5、实训报告最后一项为心得体会。

推荐第5篇:C语言实训

#include #include #include #define N 100

struct student { char claname[40]; int num;

char major[40];

char name[30]; char cla1[40]; int score1; char cla2[40]; int score2; char cla3[40]; int score3; }stu[N];

void menu(); void add(); void search(); void change(); void deleted(); void sort(); void show(); void back(); void input(); void output();

int main(void) { menu(); void add();

void search();

void change();

void deleted();

void sort();

void show();

void back();

void input(); void output(); return 0; }//需要调用的函数

void menu() { int n; printf(\"\\n\\n\\n\\n\\n\\n\"); do{

printf(\"

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

printf(\"

*\\n\");

************欢迎使用学生信息管理系统************\\n\");

*

*

功能菜单************************************************\\n\");

*

printf(\"

*

1.添加成绩表信息

*\\n\");

printf(\"

*

2.查询成绩信息

*\\n\");

printf(\"

*

3.修改成绩信息

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

*\\n\");

printf(\"

printf(\"

*

4.删除信息记录

*

5.排序成绩表信息

*

6.显示成绩表所有信息

*

7.从指定的文件中读入成绩表的信息

*

8.将成绩表的信息写入指定的文件中

*

9.退出学生信息管理系统

*

************************************************\\n\\n\");

请输入数字: \");

scanf(\"%d\",&n); switch(n) {

case 1:

add();

break;

case 2:

search();

break;

case 3:

change();

break;

case 4:

deleted();

break;

case 5:

sort();

break;

case 6:

show();

break;

case 7:

}

input();

break;

case 8:

output();

break;

case 9:

back();

break;

default: }

printf(\"\\n\\n抱歉!您的输入有误,请在1到9之间选择!\"); }while(n9); int n=2;//全局变量在这里!

void add() {

system(\"cls\"); int i; char a; for(i=0;i

printf(\"\\n\\n\\n请输入学生信息:\\n\\n\\n\");

printf(\"请输入班级:\"); scanf(\"\\n%s\",stu[i].claname); printf(\"请输入姓名:\"); scanf(\"%s\",stu[i].name); printf(\"请输入学号:\"); scanf(\"\\n%d\",&stu[i].num); printf(\"请输入专业:\"); scanf(\"\\n%s\",stu[i].major); printf(\"请输入课程1名称:\"); scanf(\"\\n%s\",stu[i].cla1); printf(\"请输入课程1成绩:\"); scanf(\"\\n%d\",&stu[i].score1); printf(\"请输入课程2名称:\");

scanf(\"\\n%s\",stu[i].cla2);

printf(\"请输入课程2成绩:\");

scanf(\"\\n%d\",&stu[i].score2); printf(\"请输入课程3名称:\"); scanf(\"\\n%s\",stu[i].cla3); printf(\"请输入课程3成绩:\"); scanf(\"\\n\\n\\n%d\",&stu[i].score3); }

printf(\"\\n\\n信息添加成功!!!\\n\\n\"); printf(\"\\n\\n学生的信息如下:\\n\\n\"); printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课程3 课程3成绩\");

for(i=0;i

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3);

} printf(\"\\n\\n按任意键返回主菜单!\\n\"); getchar(); scanf(\"%c\",&a); }

menu(); void search() {

{ case 1: //按姓名查找 printf(\"\\n\\n请输入您想要查找的姓名:

\"); system(\"cls\"); int i=0; int choice,s,score; int flag=0; char sname[20]; char a; printf(\"1.按姓名查找\\n2.按学号查找\\n3.查找总成绩相等的学生\\n\\n\"); printf(\"请输入您想要的查找方式(序号):\"); scanf(\"%d\",&choice); switch(choice)

scanf(\"%s\",sname); for(i=0;i

printf(\"%s %d %s %d %s %d\",stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3);

case 2: //按学号查找 printf(\"\\n\\n请输入您想要查找的学号:

\"); } if(flag==0)//找不到该姓名

printf(\"\\n\\n您搜索的该生信息不存在,请确认后再重新输入!\\n\"); break; scanf(\"%d\",&s); for(i=0;i

if(stu[i].num==s) { flag=1; printf(\"\\n\\n该学生成绩信息如下:\\n\");

printf(\"%s %s %d %s %d %s %d\",stu[i].name,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3);

case 3: //查找总成绩相等的学生

printf(\"\\n\\n请输入您想要查找的学生成绩:

\"); scanf(\"%d\",&score); for(i=0;i

{

flag=1; printf(\"\\n\\n总成绩相等的学生成绩信息如下:\\n\"); if((stu[i].score1+stu[i].score2+stu[i].score3)==score) }

if(flag==0)//找不到该学号

printf(\"\\n\\n您搜素的该生信息不存在,请确认后再重新输入!\\n\"); break; printf(\"%s %s %d %s %s %d %s %d %s %d\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3); }

}

if(flag==0) printf(\"\\n\\n没有学生位于该分数,请重新输入!\\n\"); break; default://输入不是1,2,3 printf(\"\\n\\n您的输入有误!请在1到3之间进行选择!\\n\"); }//这个才是switch的啦~\\(≧▽≦)/~

printf(\"\\n\\n按任意键返回主菜单!\"); getchar(); scanf(\"%c\",&a); menu(); void change() { system(\"cls\"); int i=0,item,n,sco1,sco2,sco3;

char name[30]; char smajor[40]; char sclaname[40]; char a; printf(\"请输入需要修改信息的学生学号:\"); scanf(\"%d\",&n);

for(i=0;i

if(n==stu[i].num)

{

printf(\"*--------------------*\\n\");

printf(\"1.修改课程1成绩;\\n\");

printf(\"2.修改课程2成绩;\\n\");

printf(\"3.修改课程3成绩;\\n\"); printf(\"4.修改学生的姓名;\\n\"); printf(\"5.修改学生的专业;\\n\"); printf(\"6.修改学生的班级;\\n\");

printf(\"*--------------------*\\n\"); printf(\"\\n\\n请输入需要修改的信息(序号):\"); scanf(\"%d\",&item);

switch(item) { case 1:

printf(\"\\n\\n请重新输入课程1成绩:

\"); scanf(\"%d\",&sco1); stu[i].score1=sco1; printf(\"\\n\"); break; case 2:

printf(\"\\n\\n请重新输入课程2成绩:\"); scanf(\"%d\",&sco2); stu[i].score2=sco2; printf(\"\\n\"); break; case 3:

printf(\"\\n\\n请重新输入课程3成绩:

\"); scanf(\"%d\",&sco3); stu[i].score3=sco3; printf(\"\\n\"); break; case 4:

printf(\"\\n\\n请重新输入学生姓名:

\"); scanf(\"%s\",name); strcpy(stu[i].name,name);//将姓名代替 printf(\"\\n\"); break; case 5:

printf(\"\\n\\n请重新输入学生专业:

\"); scanf(\"%s\",smajor); strcpy(stu[i].major,smajor); printf(\"\\n\"); break; case 6:

printf(\"\\n\\n请重新输入学生班级:

\"); scanf(\"%s\",sclaname); strcpy(stu[i].claname,sclaname); printf(\"\\n\"); break; default: printf(\"您的输入有误!请在1到6之间进行选择!\"); }//这是switch的

printf(\"修改后该学生信息如下:\\n\");

printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课程3 课程3成绩\");

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3); break;

printf(\"\\n\\n\\n\");

printf(\"\\n\\n按任意键返回主菜单!\"); getchar(); scanf(\"%c\",&a); menu();

}//这是if的

if(i==n) printf(\"\\n\\n无法找到该生信息,请确认后重新输入!\");//找不到学生学号

}//这是void的

void deleted() {

for(i=0;i

if(strcmp(stu[i].name,name)==0)//找得到学生姓名

{ flag=1; printf(\"请输入需要删除信息的学生姓名:\"); scanf(\"%s\",name); system(\"cls\"); int flag=0; int i; char b; char a; char name[30];

printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课程3 课程3成绩\");

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3);

if(flag==0)//找不到学生姓名

if(a==\'n\') printf(\"\\n\\n已退出!\\n\");

if(a==\'y\') {

for(i=0;i

printf(\"\\n\\n是否要删除该生所有信息?(y or n):\"); getchar();

scanf(\"%c\",&a); }//这是第二个if的

}//这是第一个if的

}//这是for的

}

printf(\"\\n\\n该生信息不存在!请确认后重新输入!\\n\\n\"); printf(\"\\n\\n请按任意键返回主菜单!\\n\"); getchar(); scanf(\"%c\",&b); menu(); void sort() {

system(\"cls\"); int i,j; int choice; struct student temp; char a; printf(\"\\n\\n*--------------------*\\n\\n\"); printf(\"1.按总成绩升序排序\\n\\n2.按学号升序排序\\n\\n\"); printf(\"\\n*--------------------*\\n\"); printf(\"\\n\\n请输入您想要的排序方式:

\");

scanf(\"%d\",&choice); switch(choice) { case 1: for(i=0;i

for(j=i+1;j

if((stu[i].score1+stu[i].score2+stu[i].score3)

{

temp=stu[i]; stu[i]= stu[j]; stu[j]=temp; }//这是for(j)的

printf(\"\\n\\n按总成绩升序排序后的信息为:\\n\"); for(i=0;i

printf(\"\\n\\n\\t\\t班级\\t姓名\\t学号\\t专业\\t课程1\\t\\t课程1成绩\\t课程2\\t\\t课程2成绩\\t课程3\\t\\t课程3成绩\");

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t\\t%s\\t\\t\\t\\t%d\\n\\n\\n\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3); }//这是for排序的

}//这是for(i)的

case 2:

for(i=0;i

break;

for(j=i+1;j

if((stu[i].score1+stu[i].score2+stu[i].score3)

{

temp=stu[i]; stu[i]= stu[j]; stu[j]=temp; }//这是for(j)的

printf(\"\\n\\n按总成绩升序排序后的信息为:\\n\"); for(i=0;i

printf(\"\\n\\n\\t\\t班级\\t姓名\\t学号\\t专业\\t课程1\\t\\t课程1成绩\\t课程2\\t\\t课程2成绩\\t课程3\\t\\t课程3成绩\");

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t\\t%s\\t\\t\\t\\t%d\\n\\n\\n\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3); }//这是for排序的

}//这是for(i)的

}//这是switch的

printf(\"\\n\\n按任意键返回主菜单!\\n\"); getchar(); scanf(\"%c\",&a); menu();

default:

printf(\"\\n\\n抱歉!您输入的数据有误,请在1和2之间进行选择!\\n\");

break; }//这是void的

void show()//这是显示显示显示显示显示 {

system(\"cls\"); int i; char a; printf(\"\\n\\n所有学生的信息如下:\\n\");

printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课程3 课程3成绩\");

for(i=0;i

printf(\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].name,stu[i].num,stu[i].major,stu[i].cla1,stu[i].score1,stu[i].cla2,stu[i].score2,stu[i].cla3,stu[i].score3);

} } printf(\"\\n\\n按任意键返回主菜单!\\n\"); getchar(); scanf(\"%c\",&a); menu();

void input() {

system(\"cls\"); int i; char a; FILE*fp=fopen(\"file1\",\"w+\"); if(fp==NULL) {

} printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课printf(\"文件打开失败!\\n\"); exit(1); 程3 课程3成绩\");

fscanf(fp,\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].nfor(i=0;i

}

} fclose(fp); printf(\"\\n\\n按任意键返回主菜单!\"); getchar(); scanf(\"%c\",&a); menu(); void output() {

system(\"cls\"); int i; char a; FILE*fp=fopen(\"file1\",\"r\"); if(fp==NULL) {

} printf(\"文件打开失败!\\n\"); exit(1); printf(\"\\n\\t\\t班级

姓名

学号

专业

课程1 课程1成绩

课程2 课程2成绩

课程3 课程3成绩\");

fprintf(fp,\"\\n\\n\\t\\t%s\\t%s\\t%d\\t%s\\t%s\\t%d\\t%s\\t%d\\t%s\\t%d\",stu[i].claname,stu[i].nfor(i=0;i

}

void back() { system(\"cls\"); } printf(\"\\n\\n按任意键返回主菜单!\"); getchar(); scanf(\"%c\",&a); menu(); fclose(fp);

int t; int a; printf(\"确定退出学生成绩管理系统请按1,否则按0: \"); scanf(\"%d\",&t); if(t==0) { printf(\"\\n\\n\\n请输入任意数字返回首页: scanf(\"%d\",&a); system(\"cls\"); menu(); } if(t==1) {

exit(1); } }

\");

推荐第6篇:c语言实训

目 录

特别注意,打开视图菜单-文档结构图观察文档结构。 目录由WORD菜单中插入-引用-目录自动生成并更新,不需要手工生成菜单。

本模板仅说明格式,内容由指导老师决定,不用按这份目录内容编写实训报告。

具体目录见文档要求。以下部分仅供参考。

目 录........................................................................................................................1

一、实训的目的与要求................................................................................................1

二、题目说明................................................................................................................2

三、总体设计................................................................................................................2

3.1.软件模块结构图...........................................................................................2 3.2.程序流程图...................................................................................................3

四、详细设计和实施....................................................................................................3

4.1 XXXX模块 .....................................................................................................

3 4.2

4.3

五、遇到的问题和解决方法........................................................................................4

六、实训总结................................................................................................................4

七、参考文献................................................................................................................4 附录(源程序代码)....................................................................................................5

一、实训的目的与要求

(正文为宋体,五号字 行间距为21) 中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国

二、题目说明

(正文为宋体,五号字 行间距为21) 题目参照任务书中有关描述

三、总体设计

3.1.软件模块结构图(以下图仅供样式参考)

图1-1 软件模块结构图

3.2.程序流程图(以下图仅供样式参考):

四、详细设计和实施

(正文为宋体,五号字 行间距为21 ) 4.1 模块1 ………(可以写一些关键程序代码,另外截一些界面图并说明实现了什么功能,以证明功能实现了) 每一个界面,必须有 (1)功能简介 (2)界面截图一张 (3)界面关键代码和描述 每一个界面说明作为独立的一小节。(在文档说明中有样例)

五、遇到的问题和解决方法

(正文为宋体,五号字 行间距为21 ) 1. 2. 3. …………

六、实训总结

(正文为宋体,五号字 行间距为21 )

七、参考文献

[1] 权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7(3):17-18.[2] 刘小洪,邹鹏.商业银行客户关系价值管理模型研究[J].管理科学,2005,18(3):57-60. 附录(源程序代码)

推荐第7篇:C语言实训报告

C语言程序设计实训报告 --学分管理系统 指导老师:陈旭东

目录

1.项目题目: ...............................................................................2 2.项目的说明 ...............................................................................2 3.实现目标 ...................................................................................2 4.项目涉及的理论基础 ..............................................................2 5.总体设计方案...........................................................................3 6.详细设计说明书 ......................................................................3 7.系统使用手册.........................................................................10 8.创新点 .....................................................................................12 9.有待改进的方面 ....................................................................13 10.自我体会与评价 ..................................................................13

第1页 11.参考文献 ...............................................................................13 12.附系统源代码 ......................................................................13

1.项目题目:

学分管理系统

2.项目的说明

由于大学每一位学生都有自己的学分,为了更好的管理学生的学分,所以我选择了这个项目,让学分的管理更为简单。

3.实现目标

(1)录入某位学生的学分;

(2)给定学号,显示某位学生的学分完成情况;

(3)给定某个班级的班号,显示该班所有学生的学分完成情况;

(4)给定某位学生的学号,修改该学生的学分信息; (5)按照某类课程的学分高低进行排序; (6)提供一些统计各类信息的功能。

4.项目涉及的理论基础

运用动态链表实现对学生信息的管理,运用链表实现成绩的

第2页 排序,查找等功能,运用二进制文件对信息的读取与存储,独立函数的应用使程序更简明,多源文件的应用使程序更易于管理。

5.总体设计方案

首先,从二进制文件读取数据创建新的链表,把头指针记录下来,多个函数调用头指针,每个函数独立完成对链表的修改与保存,整个程序运行完成后再把整个链表保存在二进制文件里。

6.详细设计说明书

首先调出主菜单,让用户选择需要:

第3页 进入不同的函数:

1.调用void search(struct stu *);,传递头指针,函数从头到尾查找找出某个学生的成绩,并把这个学生的学分打印出来。

headFrom head to NULLIf findCall printThere is no this one

2.调用struct stu *change(struct stu *);传递头指针,函数从头到尾查找并改变某个学生的成绩,让使用者选择要改的同学和要改的成绩,最后程序自动保存修改结果,返回修改之后的头指针。

第4页 headFrom head to NULLIf findCall the change to change the scoresThere is no this one

3.调用struct stu *add(struct stu *);传递头指针,添加某个学生的成绩,这个学生的学分自动保存在链表的最后,实现添加的功能,返回修改之后的头指针。

第5页 headFrom head to end and find the endThe endCall a new location and add the new structure to the endReturn the head

4.调用void save(struct stu *);传递头指针,保存整个链表,以二进制文件的形式保存。

第6页 headFrom head to end Each structure is stored in the file

5.调用void FindOneCla(struct stu *);查找整个班的成绩,传递头指针,如果某个学生的班级与所要查找的相同,就把该同学的信息存到新的链表中,同时把新的链表打印出来。

headFrom head to end If the cla is the same as the orderedCopy the structure to a new list The endPrint the new list 6.调用void SortOneScore(struct stu *);按某一门课排序,传递头指针,从开头节点开始,每一个节点 调用insert()插到新

第7页 的链表中,组成新的链表。

headFrom head to end Each structure is insert in a new listThe endPrint the new list

7.调用struct stu *insert(struct stu *,struct stu *,int a,struct stu *);,传递一个临时指与头指针,要查的分数与新的链表的头指针,把某个节点插入到新的链表中,返回插要的位置。

headCall the nearlocation functionFind the location should be insertReturn the location 8.调用void statistic(struct stu *);传递头指针,统计所有学生的成绩,并把新的数据打印出来。

第8页 headFind the highest and low endFind the average Find who is failed 9.调用void average(struct stu *);传递头指针,统计所有学生某一科的平均分。

10.调用void highest(struct stu *);传递头指针,查找最高的与最低的分。

11.调用void failed(struct stu *);传递头指针,查找不及格的学生。

12.调用struct stu *deleat(struct stu *head); 传递头指针,删除某一个学生的信息,并返回修改之后的头指针。

第9页 headFrom head to NULLIf findThe next pointer add to the now next pointerThere is no this one 每一个函数结束后返回新链表的头指针,并调用菜单函数让用户选择进一步操作。

7.系统使用手册

本管理系统已经录入了几位同学的学分信息,可以直接按5 进行学分排序功能的实现,也可以按2 输入某一个学生的学分,按1 可以查找某一个学生的学分,按4 修改某一个学生的学分,按3 可以查看某一个班的学生的学分,按5能删除某一个学生的成绩,按7 能进行各种统计的功能,求最高分与最低分,求平均分,可以查看不同科不及格的学生。按6能进行某一刻的排序。

如何退出?

第10页

按 0 直接回到上一个菜单,进行进一步的选择。

第11页

第一季菜单直接按0直接退出。

8.创新点

运用动态链表组成主框架,进行各系列的函数的应用,运用多源文件是程序更简洁,每一个函数独立的完成相应的功能,多个统计功能使系统更加完善。

第12页 9.有待改进的方面

用户界面有待改进,可以增加一些美观的东西,统计功能可以有更多的完善。

10.自我体会与评价

通过这个学分管理系统的设计实现与完善,我懂得了我不能畏惧困难,只有不断克服困难才能取得进步。刚开始,我对链表一点不熟悉,通过查找资料我发现使用链表更加方便,有了具体的思路之后,我就先实现创建一个链表的功能,然后就进一步完善每一个功能。我清醒的认识到遇到困难时要冷静,不要急躁,要冷静的思考到底哪里错了,才能更好的完善自己。

11.参考文献

标准C 语言基础教程; C程序设计; Baidu搜索网站

12.附系统源代码

1.头文件.

第13页

推荐第8篇:C语言实训心得

C语言实训心得

在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。

在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。

还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教 学让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中给我们分享一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。

通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。

推荐第9篇:C语言实训心得

C语言实习心得

两周的上机实习结束了,在这段时间内,我的C语言知识得到了温习,编程能力得到了很大的提高,我觉得这次实习很重要,而且是恰逢其时,当然通过自己编程的过程,也有了一些心得:

编程要的是正确的结果,体会的是艰辛的过程,收获的是好心情。

首先编程的时候你不能觉得这是一个繁琐的过程,在遇到出错的时候要有信心解决,不要害怕出错,不能忽略细节,尤其是对标点以及输入输出函数,要正确使用。其次,编程要有一个扎实的知识储备,没把课本看好,没把例题看好,不会编出正确的程序,同时,如果不多看程序,不断吸收别人的编程思想,就不会编出精彩的程序;当然也不能忽略与别人讨论与请教,在这过程中,我们可以相互交流编程想法,找到解决问题的最佳路径,这种团结协作的精神也是必须要有的。

两周很短,编程的过程却很漫长,思考,编程,改错,运行,这就是编程的感觉。感谢帮助我,还有一起讨论问题的同学,感觉老师细心的指导,在遇到小问题的时候,他也是很耐心的解答,感谢这次上机机会,让我重新温习了C语言,也让我对明年的等级考试更有信心。在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在这次实训中,我对对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。

通过这次实训,也使我们发现了许多问题。

在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。

一年来,我们已经学习了VB语言和C语言,在应用这些语言的过程中,我们的逻辑思维得到了加强,更重要的是我们把在数学上学习到的算法应用到计算机程序中,通过分析问题,调查研究,最终解决问题。尽管每次解决问题的过程不会都很顺利,尤其是在出错的时候总是很难解决那些很细微的错误,比如一个符号打错,或者漏掉一个标点,检查起来都会很麻烦,但是,每次成功的运行,得到的不仅仅是一个正确的结果,更多的是体会到了过程,有了一种成就感,特别是C语言,最能给我这种感觉。

还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。

首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。

总之,这一切都成为我记忆里面的一个篇章,更是在C语言编程上的一个里程碑。

推荐第10篇:C语言实训教程

课程编号:学 时 数:54学时

课程名称:C语言程序设计适用专业:计算机应用技术

执 笔 人:编写日期:2008年7月

单元能力训练指导

单元一:运算符、表达式、输入输出语句

1.能力要求:

1) 能够正确定义、输入、输出并使用常用数据类型:整型、实型、字

符型

2) 掌握五种基本算术运算符的使用:+、-、*、/、%,知道优先

级与结合性

3) 掌握逻辑运算符和关系运算符、条件运算符的使用

4) 能够正确使用printf()和scanf()进行各种数据正确格式的输入输

5) 编写简单顺序结构程序

2.基础能力训练:

1)输入一个字母,输出其对应的ASCII码.

2)输入一个小写字母,输出其对应的大写字母.

3)从键盘输入一个四位数,编程计算该四位数的各位和并输出。

4)教材p.41页习题,5,6,7,9,10(关于数据类型、运算符、表达

式的练习题,其他类似题目均可)

5)教材p.62页习题4,5,6,7(关于格式化输入输出的练习题,其

他类似题目均可)

3.拓展能力训练:

1)输入一个十进制数,输出其对应的八进制数据。

2)输入一个圆的半径,分别求圆的周长,面积和体积。

单元二:选择结构程序设计

1.能力要求:

1) 能够使用if语句编写条件选择程序

2) 能够使用嵌套if语句和switch语句编写多分支选择结构程序

2.基础能力训练:

1)判断一个数的正、负,输出相应信息

2)判断一个数的奇偶,输出相应信息

3)在主函数中输入整型数据n,判断该数是否能被3整除,如果能被3 整

除,输出“yes”,否则输出“no”

4)将数学式子写成程序语言,如80

5)编程求解分段函数,根据程序写出分段函数的数学表达式

6)从键盘输入三个数,按照从小到大(或从大到小)的顺序输出

7)判断一个年份是否闰年

8)对一个百分制的成绩给出相应的等级(如90分以上A,80分以上B

9)从键盘输入两个整数,输出大数(用条件表达式求解)

3.拓展能力训练:

1)从键盘上输入一个数,判断其是否为水仙花数。

2)求一元二次方程的根

3)编程实现以下功能,读入两个数(d1,d2)和一个运算符(o),计算

d1 o d2的值。

单元三:循环结构程序设计

1.能力要求:

1) 掌握for、do-while、while语句结构

2) 能够使用for、do-while、while编写循环结构程序

3) 使用for、do-while、while编写多重循环语句

2.基础能力训练:

1)求1+2+3+…+100的和存入变量sum中,并将sum打印出来。

2)编程计算200――300的偶数和并将和打印输出

3)计算正整数1-n中的奇数之和及偶数之和

4)从5-100之间找出能被5或7整除的数(或类似求1-100之间不

能被8整除的数

5)判断一个循环语句能执行多少次(补充类似练习)

6)打印99乘法表(二重循环)

7)求Fibonacci数列的前20个数。该数列的生成方法为: F1 = 1, F2

= 1, Fn=Fn-1+Fn-2(n>=3),即从第3个数开始每个数等于前2个数之和。(每行输出4个数)

9)求出3~100之间的所有素数,并按每行5个数打印输出

3.拓展能力训练:

1) 编写一个只要输入4位数的年份和该年的元旦是星期几,就可打印

全年日历的程序(可作思路开发练习时讲解)。

2)试编写程序,求一个数任意次方的最后三位数,要求x,y从键盘上

输入

3)猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不

瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

4)编写程序,从键盘上输入6名学生4门课的成绩,分别统计出每个

学生的平均成绩。

单元四:数组

1.能力要求:

1) 掌握一维数组的使用

2) 能够进行二维数组的定义、初始化、输入、输出、引用等操作

3) 进行字符串、字符数组操作,熟悉常用字符串处理函数

2.基础能力训练:

1)有一12个元素的整型数组b,从键盘输入数据,请以每行4个数据

各个数据之间空两格的形式输出b数组的12个元素

2)由键盘输入一个字符串,如果字符串中的字符是英文字母,则进行

大小写转换,其它字符不变。输出转换后的字符串。

3)定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新

存放。4)用数组方法求Fibonacci数列的前20个数。该数列的生成方法为: F1 = 1, F2 = 1, Fn=Fn-1+Fn-2(n>=3),即从第3个数开始每个数等于前2个数之和。(每行输出4个数)

4)对从键盘输入的一个字符串中的大英字母及数字进行计数。

5)有一个3行3列的矩阵,请将其在屏幕上输出。

6)将一个2*3的矩阵转置为3*2的矩阵

7)在一个三行三列的矩阵中求出数值最大的元素及其行/列下标并打

印输出。

8)不使用库函数实现两个字符串的复制和连接

3.拓展能力训练

1)从键盘输入10个字符串,按照字典顺序将其排序输出(二维字符数

组)

2)打印杨辉三角形(要求打印出10行)

11

121

1331

14641

15101051

1……

3)从键盘上输入100个字符,统计其中字母、每个数字和其它字符的

个数及其百分比。

4)找出一个二维数据中的鞍点。(鞍点是指位置上的元素在该行上最大,

在该列上最小),如果没有鞍点,请输出提示信息。

单元五:函数

1.能力要求:

1) 能够通过定义、调用函数处理指定问题:如数组排序,数据交换,

字符串大、小写转换等

2) 能够嵌套调用函数

3) 编制递归函数进行求阶乘的运算

4) 了解变量的作用域及生存期在程序中的影响

2.基础能力训练:

1)在主函数中,输入整数x的值,调用函数,在屏幕上输出y的值。2) 编写函数求三个数中的最大数

3)编写函数求组合数C= n! / (k! *( n-k)!)

4) 编写递归函数用于计算n!

5)编写函数求x的n次方的值

6)用函数求两个整数之差的绝对值

7)用函数求1-100的累计和

8)不使用库函数strcat(),编程将两个字符串连接起来。

9)编写函数将一个字符串中的小写字母改为大写字母(数组元素和数

组名作函数参数)

10)有关函数及全局变量等的程序阅读类型题。

3.拓展能力训练:

1)定义两个函数,分别求两个整数的最大公约数和最小公倍数。

2)编写函数,使用递归的方法,

3)求三个数的最小公倍数。用函数实现。

单元六:指针

1.能力要求:

1) 指针变量的定义、使用,以及指针变量作函数参数

2) 使用指针进行数组操作

3) 使用指针进行字符串操作

2.基础能力训练:

1)用下标法和指针法引用数组元素

2)使用指针,不使用库函数strcat(),编程将两个字符串连接起来。

3)使用指针,不使用库函数strcpy( ),编程将两个字符串连接起来。

使用指针,不用库函数strlen( ),编程求字符串的长度。

4)使用指针进行冒泡法排序

5)使用指针求一个字符串的长度

3.拓展能力训练:

1)编写一个子串截取函数,viod substr(char *source,int start,

int length,char *dest); source是源字符串指针,start是截取的开始位置,length是要截取的子串的长度,dest是指目标串指针。

2)编写一个程序,利用指针打印如下图形。

***

** **

****

****

3)编写一个函数,完成对n个字符串的排序。

单元七:结构体与链表

1.能力要求:

1) 在程序中正确使用结构体变量、结构体数组以及结构体类型的指针

2) 了解链表处理的方法

2) 了解共用型、枚举型数据类型

2.基础能力落实:

1)定义一个反映学生学号、姓名和性别的结构体变量,同时初始化;

将信息打印输出。

2)定义一个结构体数组,用于存放5名学生的学号、姓名及三门课的

成绩; 从键盘输入5名学生的以上数据,将成绩平均值最大的学生的学号、姓名、三门课的成绩及平均成绩在屏幕上输出。

3.拓展能力落实:

1)利用共用体测键盘的输入。

2)编写一个函数,实现链表的插入。

3)编写一个函数,实现链表的查询。

单元八:文件

1.能力要求:

1) 根据题意进行文件操作:打开、关闭、读写

2) 进行文件定位操作,了解位置指针与出错检测

3) 数组、字符、字符串的读写

2.基础能力落实:

1)定义一个字符数组str[15],从键盘输入一个字符串“polytechnic”,

将此字符串,写入文件string.dat中,分别用fwrite与fputs函数实现

2)定义一个浮点型变量a,从键盘输入数据,将此数写入二进制文件

data.dat中

3)将一个整型数据、浮点型数据存入文件并读取

4)将一个结构体数据存入文件并读取。

3.拓展能力落实:

1)编写一个函数,实现两个文本文件的复制。

2)将一个文件中,所有的小写字母转化为大写字母后输出

第11篇:C语言实训任务书

- 1

学生档案管理系统录入学生信息修改学生信息删修除改学生信息查询学生信息输出学生信息退出系统 按学号查询按班级查询

2、重要数据的数据结构设计

学生学籍的记录项用结构体StuMeage 表示,包括6个属性,stuNo、name、spec、grade、sex、birthday 分别代表学生的学号、姓名、专业、年级、性别和出生日期,其中 birthday 类型为自定义的结构体类型 Date。

struct StuMeage {

char stuNo[11];

//学号

char name[9];

//姓名

char spec[21];

//专业

struct Grade score;

//年级

char sex;

//性别

struct Date birthday; //出生日期 }; 日期类型 Date 包括三个属性,分别代表年、月、日。 struct Date {

int year;

//年

- 345

清屏录入一条记录length++继续录入(Y/N)接收用户选择Ycon == ‘Y’或con == ‘y’N返回

4、修改学生信息功能模块函数 Modify() 设计

5、删除学生信息功能模块函数 Delete() 设计

- 7

清屏显示查询菜单接收用户的选择choose1按学号查询2按年级查询0返回主菜单其他非法操作Ychoose != 0N

7、按学号查询功能模块函数 SearNum() 设计

- 9

清屏接收查询年级输出表头i = 0, count =0i 0N共找到 n 条记录没有找到相关记录按任意键继续getch()返回

9、输出学生信息功能模块函数 ListAll() 设计

- 1112

switch (ch)

{

case \'1\':Append(stu);break;

case \'2\':Modify(stu);break;

case \'3\':Delet(stu);break;

/*case \'4\':MenuOfSear(stu);break;

case \'5\':ListAll(stu);break;

case \'0\':Quit();break;*/

} } } void Append(Stu *stu) {

FILE *fp;

int i;

fp=fopen(\"stuinfo.txt\",\"r\");

if(fp==NULL)

printf(\"File open failed\\n\");

for(i=0;i

{

fscanf(fp,\"%s\\t%s\\t%s\\t%d\\t%d\\t%d\\t%d\\t%d\\t%c\\t%d\\t%d\\t%d\",stu[i].stuNo,stu[i].name,stu[i].spec,&stu[i].score.CompFoundation,

&stu[i].score.English,&stu[i].score.language,&stu[i].score.math,&stu[i].score.sport,

&stu[i].sex,&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);

}

fclose(fp);

} void Modify(Stu *stu) { char no[11]; int i=0; int flag=1; printf(\"请输入修改学生信息的学号:\"); scanf(\"%s\",no); while(flag) {

if(strcmp(no,stu[i].stuNo)==0)

flag=0;

else i++; } printf(\"学号:%s、姓名:%s、专业:%s、基础:%d,英语:%d,C语言:%d,数学:%d,体育:%d、性别:%c %d年,%d月,%d日\\n\",stu[i].stuNo,stu[i].name,stu[i].spec,stu[i].score.CompFoundation,

stu[i].score.English,stu[i].score.language,stu[i].score.math,stu[i].score.sport,

stu[i].sex,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day); printf(\"请输入要修改的学生信息:学号、姓名、专业、基础,英语,C语言,数学,体育、性别 年,月,日:\\n\");

scanf(\"%s%s%s%d%d%d%d%d %c%d%d%d\",stu[i].stuNo,stu[i].name,stu[i].spec,&stu[i].score.CompFoundation,

&stu[i].score.English,&stu[i].score.language,&stu[i].score.math,&stu[i].score.sport,

&stu[i].sex,&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);

getchar();

getchar(); }

void Delet(Stu *stu)

{

char sNO[11];

system(\"CLS\");

printf(\"请输入要删除学生的学号\\n\");

scanf(\"%s\",sNO);

}

int NumOfSear(Stu *stu, char stuNum[])

{

int i;

for(i=1;i

if(strcmp(stuNum,stu[i].stuNo)==0)

return i;

return -1;

} void PrintHead(void) { printf(\"学号

姓名

基础

数学

英语

C语言

体育

性别

日\\n\"); } void ListOne(Stu stu) {printf(\"%s %s %s %d %d %d %d %d %c %d %d %d\\n\",stu.stuNo,stu.name,stu.spec,stu.score.CompFoundation,

stu.score.English,stu.score.language,stu.score.math,stu.score.sport,

stu.sex,stu.birthday.year,stu.birthday.month,stu.birthday.day); }

- 15 -

第12篇:C语言实训心得

C语言实训心得

在本学期学习C语言将近一个学期后,我们进行了C语言实训,做了一个比较复杂、功能较全的学籍管理系统。虽然实训为期不长,但对我C语言水平的提高和对C的认识理解有很大帮助。

在这次实训中,我对C语言有了一个更深的了解认识,也使我这个学期学的知识得到了巩固。虽然在实训中遇到了许多的困难,比方说一开始在文件方面的知识比较薄弱,在对输入的数据保存、已输入条数的统计方面做得不足。但经过自己对文件内容的学习和向他人的请教,在这方面的知识得到补充,问题也得到了解决。在这次实训中,当自己每次解决一个问题时,当自己经过多次调试、修改使程序得以运行时,自己心中那份自信、满足、惬意感油然而生。经过这次实训,使我加强了对C语言的兴趣。

同时在这次实训中,也使我发现了许多的问题。

在实训中,我认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。

同时这次实训也使我更加深化了C语言学习方法。算法是程序的灵魂,在我们每遇到一个比较复杂的编程问题时,我们应该先写出该问题解决的算法,然后再去实现编代码。做到了这样,问题才能更快地解决。软件开发少不了合作,只有合作才能共同提高,只有互补才能取长补短,共同进步。

通过这次实训,我也认识到自己有许多的方面需要改进和有待提高。 对于以后,我会从以下几方面继续努力:

1、加强对算法的学习,达到精通一些基本算法的水平。

2、编程多加强实践,多上机学习。

3、打好基础,扎实功底,注重基础理论学习,不好高骛远。

4、加强和同学的合作,遇到问题多讨论,多寻找解决问题的方法, 总之,这一切将对我C语言的学习有很大帮助。

第13篇:c语言实训心得

C语言实践心得体会

在这个星期里,我们在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。

学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:

1、加深对课堂讲授内容的理解

课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。

通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去\"掩盖\"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

2、熟悉程序开发环境、学习计算机系统的操作方法

一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓\"环境\"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。

3、学习上机调试程序 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。

通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。

第14篇:C语言实训总结

实训总结报告 为期两周的项目工作就这样轻轻的落下了帷幕,在为期两周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,回想起这之间的点点滴滴,我感触良多。

在这次实训中,我对对C语言有了一个更深的了解认识,也对以前大一学的知识得到巩固。尝试运行编程中,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。

这次实训,最令人激动的就是合作做项目,虽然那只是一个很小的项目。每天大家来得很早,大家在一起学习,取长补短,我们很好的在实训中长知识,提高我们的学习热情。实训中深切体会到了千哥认真负责的伟大精神和热情为同学指导的促学方式,虽然对有些时候老师没给我们指出解决问题的方法有些小抱怨,但是到了结束时才知道,这种教学方式让我们自己学会了自学,学会了去看懂别人的代码。更多是老师给的感动,每天在我们来之前就到了教室,在讲课中还给我们分享他在公司上班的一些心得和体会,还有那些我们应该注意的事项,这些是平时上课时无法学到的,是更深层次的巨大收获。

通过这次实训,也使我们发现了许多问题。我认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的态度,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。还有就是对于未来,我觉得我还有许多方面需要提高。首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。 总之,这一切都成为我记忆里面的一个篇章,更是在学习C语言编程上的一个里程碑。

第15篇:C语言实训报告

C语言程序设计 实训报告

题 目: 红外避障机器人

院 (系): 信息工程系

专 业: 通信工程

学生姓名:韦嘉宝

学 号: 1551100424 指导教师:朱震 周斌 王旬 全刘辉

2016 年

10月 8 日

摘要……………………………………………………1

设计要求……………………………………………2

设计步骤……………………………………………3

代码编写……………………………………………4

心得体会……………………………………………5

参考文献·…………………………………………6 许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需要同物体接触。本文的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。

随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能小车。

机器人使用红外线二极管 LED 作为前灯,如图 6-1 所示。 红外线二极管发射红外光线,如果机器人前面有障碍物,红外线从物体反射回来,相当 于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从 物体反射回红外线。机器人的大脑——单片机 AT89S52 基于这个传感器的输入控制伺服电机。 红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的 980 nm 波长的红外线外,它几乎不允许其他光通过。红外检测器还有一个电子滤波器,它只允许大约 38.5 kHz 的电信 号通过。换句话说,检测器只寻找每秒闪烁 38500 次的红外光。这就防止了普通光源像太阳 光和室内光对 IR 的干涉。太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源, 闪烁频率接近100 Hz 或 120 Hz。由于 120 Hz 在电子滤波器的 38.5 kHz 通带频率之外,它完 全被 IR 探 2

测器忽略。

本任务将搭建并测试红外线发射和检测器对。本讲需要用到的新部件如下: 元件清单

(1)红外检测器,2 个。

(2)IR LED(带套筒),2 个。 (3)470Ω 电阻,2 个。 (4)连接线,若干。

二、设计要求

(1)小车能够完成前进、后退、左转、右转等动作。 (2)机器人能够读出传感器电平变化,并作相应的动作变化。(3)利用机器人所装配的两个探测器,探测和避开障碍物。

三、设计步骤

1.测试红外发射探测器

下面要用 P1_3 发送持续 1ms 的 38.5kHz 的红外光,如果红外光被机器人路径上的物体反射回来,红外检测器将给微控制器发送一个信号,让它知道已经检测到反射回的红外光。

让每个IR LED探测器组工作的关键是发送1ms频率为38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。下面是一个例子,它发送 38.5 kHz信号给连接到P1_3的IR发射器,然后用整型变量 irDetectLeft存储连接到P1_2的IR探测器的输出上。 for(counter=0;counter

P1_3=1; delay_nus(13); P1_3=0; delay_nus(13); } irDetectLeft=P1_2state(); 上述代码给 P1_3 输出的信号高电平13μs,低电平为13μs,总周期为26μs,即频率约为38.5kHz。总共输出 38个周期的信号,即持续时间约为1ms(38×26≈1000μs)。 当没有红外信号返回时,探测器的输出状态为高电平。当它探测到被物体反射的38.5kHz红外信号时,它的输出为低电平。因红外信号发送的持续时间为1ms,因此IR探测器的输出如果处于低电平,其持续状态也不会超过1ms,因此发送完信号后必须立即将IR探测器的输出存储到变量中。这些存储的值会显示在调试终端或被机器人用来导航。

保持机器人与串口电缆的连接,因为需用调试终端来测试 IR 组。 放一个物体,比如手或一张纸,距离左侧 IR 组大约 2~3cm 处,调试终端会显示“irDetecfLeft=0”;将物体移开时,它显示“irDetectLeft=1”。 再次修改程序,使其适用于右方红外。

3、探测和避开障碍物

有关IR检测器的趣事是它们的输出与触须的输出非常相像。没有检测到物体时,输出为高电平;检测到物体时,输出为低电平。本任务是更改程序RoamingWithWhiskers.c,使它适用于IR检测器。 进行IR探测时要使用AT89S52的4个引脚:P1_

2、P1_

3、P3_5和P3_6。#define LeftIR P1_3 //左边红外接收连接到 P1_3 #define RightIR P1_2 //右边红外接收连接到 P1_2 #define LeftLaunch P3_6 //左边红外发射连接到 P3_6 #define RightLaunch P3_5 //右边红外发射连接到 P3_5 这里用到了宏定义命令:#define,它的作用是在后面的程序文件中可以用LeftIR等来代替P1_3这个字符串等。程序在编译预处理时,会自动将后面程序中出现的所有LeftIR等都用P1_3代替。这种方法是用一个简单的名字代替一个长的字符串,或者用一个有意义的名字代替一些无规则、无意义的字符串,方便程序阅读、理解和修改。

4、改变触须程序使其适用于 IR 检测和躲避

设计一个函数 void IRLaunch(unsigned char IR)来进行红外线发射。 void IRLaunch(unsigned char IR)

{ int counter; if(IR=='L') //左边发射

for(counter=0;counter

for(counter=0;counter

if((irDetectLeft==0)&&(irDetectRight==0)) //两边同时接收到红外线 {

Left_Turn(); Left_Turn(); } else if(irDetectLeft==0) //只有左边接收到红外线 Right_Turn(); else if(irDetectRight==0) //只有右边接收到红外线 Left_Turn(); else Forward(); 2.本程序由如下模块组成:

(1)小车左右两个轮子的控制模块,完成小车不同状态下的行进方式。 (2)小车的后退控制程序模块,通过接受到指定信号完成小车的后退指令。 (3)小车的接收器接收信号模块,完成不同信号状态的传递和选择状态开关。 3.完成运动流程

(1)当左接收器检测到信号右接收器没有检测到信号时小车向左转弯 (2)当右接收器检测到信号左接收器没有检测到信号时小车向右转弯 (3)当左右探头都检测到信号时小车后退。 (4)当小车左右接收器均未检测到信号时直行。 4.函数的定义 5.运动控制程序

四、代码编写

#include #include

void Forward(void) //向前行走子程序 { P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); }

void Left_Turn(void) //左转子程序 { int i;

for( i=1;i

void Right_Turn(void) //右转子程序 { int i; for( i=1;i

void Backward(void) //向后行走子程序 { int i; for( i=1;i

void main() {

if((P1_2==0)&&(P1_3==0)) //两边同时接收到红外线

{

Backward();

Right_Turn();Right_Turn();Right_Turn();

}

else if(P1_3==0) //只有左边接收到红外线

{

Backward();

Right_Turn();

}

else if(P1_2==0) //只有右边接收到红外线

{

Backward();

Left_Turn();

}

else

Forward();

}

五、心得体会

(1)在对模块化机器人的组装调整中,我们熟悉了各种结构件的使用技巧,为

设计更复杂的构型打好了基础;使我了解了机器人小车执行各种功能的原理和利用的器件,了解了小车最基本的前进后退转弯的工作原理,了解了小车如何寻线行驶,了解小车如何避障和寻找目标。

(2)让我亲身感受到传感器在机器人工作中的运用,可以说,机器人每做一个任务都离不开传感器,从避障,找目标物等等任务中完全体现出来。

(3)熟悉了用电脑c语言的应用及其部分传感器的使用,此次实验是培养我们综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节随着科学技术发展的日新日异,现在机器人的应用在我们生活中日益增加,使我了解了一些关于机器人的知识。此次实验也使我加深了对本课程的学习兴趣。

(4) 通过这次实训使我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大的提高。

(5)体验到实际操作与理论的差别,例如,理论上只要调好程序,就可以完全做到精确地寻线行驶,但是实际中会出现外部因素的改变,周围物体对小车判断的各种影响 红外避障小车,经过多次反复的验证,再经过多次的整体软硬件结合的调试,不断地对程序进行优化,小车完成了各项功能。管脚的设定尤为重要。

六、参考文献

《c程序设计》

《单片机实验设计》Z05.pdf

第16篇:C语言实训总结

C语言实训总结

这个星期,我们迎来了C语言实训——一次至为重要的实训。在这个星期里,同学们都很认真的做着那20多道实训题目,遇到不懂的互相请教,或请问老师。非常感谢老师对我们的帮助,这次实训使我受益匪浅,收获了很多。 通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。

这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。 C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。 自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,在上课的时候老师就讲,学习C语言最重要的是学习C语言的逻辑思维,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话。当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的相互探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础。

这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业! 这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。

最后,非常感谢学校给我们这次实训的机会。极高的锻炼了我们的逻辑思维能力。人非生而知之,虽然我们现在的知识结构还很差,但是我们知道要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。在剩下的时间里,我们会更加努力的学习。

第17篇:C语言实训报告

C语言实训报告

一、课题名称 :日历程序

编写程序显示某一月的日历。

二、课题目的

1.通过理论知识与实际需求相结合,编程解决一些日常中实际的问题,培养初步的独立分析能力;

2.了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;

3.重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法; 4.初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

三、设计任务

1.日历显示功能。能根据系统日期进行初始化,如果没有任何输入,则显示系统日期所在月份的月历。

2.日历查询、闰年判断功能。输入日期进行查询,显示查询日期所在月份的月历。

四、设计要求

1.用C语言实现程序设计并进行调试; 2.画出查询模块的流程图;

3.系统的各个功能模块要求用函数的形式实现; 4.界面友好(良好的人机交互)。 5.完成设计说明书(A4)。

五、详细设计 1.流程图

2.主要函数功能介绍

1).数组。 是同类型数据的集合,由若干数组元素组成,其中所有元素都属于同一个数据类型,且先后的次序是确定的。

如:int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};/*数组month_day用来存放每个月的天数*/ 2)While语句。使用一定的条件对同一程序段重复执行若干次。如: while (year_start

{ if (Isleapyear(year_start)) per_year_days=366;

else per_year_days=365;

year_days=year_days+per_year_days;

year_start++;

} 3)if_else语句.在两个分支中需要执行的语句不止一条,用”{}”括起来作为一个复合语句使用.如: { if (day>1)

if (year_days%7==0)

printf(\"\\n \");

if (day>=10)

printf(\"%4d\",day);

else

printf(\"%4d\",day); year_days++; day++;}

4)switch语句.使多个常量表达式都执行同一组语句,将它们集中起来. 如: switch(temp)

{ case 1:

printf(\"January(%d)\\n\",year); break;

5 )break语句.语义为当前的switch语句被执行时或循环语句.对if_else语句不起作用.在该程序代码中则是终止switch语句.如: case 2:

printf(\"February(%d)\\n\",year);

break; 6)自增自减运算符..使用自加(++)和自减(--)运算符时出的错误,出现丢失的情况.

六、代码设计 #include int Isleapyear(int); void main() {int i;

int day;

int year;

int temp;

int temp_i;

long int year_days=0;

int year_start=1;

int per_year_days;

int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

printf(\"Please enter the year:\");

scanf(\"%d\",&year);

while (year_start

{ if (Isleapyear(year_start)) per_year_days=366;

else per_year_days=365;

year_days=year_days+per_year_days;

year_start++;

}

for (temp=1;temp

{

switch(temp)

{ case 1:

printf(\"January(%d)\\n\",year); break; case 2:

printf(\"February(%d)\\n\",year); break; case 3:

printf(\"March(%d)\\n\",year); break; case 4:

printf(\"April(%d)\\n\",year); break; case 5:

printf(\"May(%d)\\n\",year); break; case 6:

printf(\"June(%d)\\n\",year); break; case 7:

printf(\"July(%d)\\n\",year); break; case 8:

printf(\"August(%d)\\n\",year); break; case 9:

printf(\"September(%d)\\n\",year); break; case 10:

printf(\"October(%d)\\n\",year); break; case 11:

printf(\"November(%d)\\n\",year); break; case 12:

printf(\"December(%d)\\n\",year); break;

}

i=year_days%7;

printf(\" MON TUE WED THU FRI SAT SUN\\n\");

if (i !=0)

for(temp_i=0;temp_i

printf(\"

\");

day=1;

if (Isleapyear(year)&&temp==2)

while (day

{ if (day>1)

if (year_days%7==0)

printf(\"\\n \");

if (day>=10)

printf(\"%4d\",day);

else

printf(\"%4d\",day);

year_days++;

day++;

}

else

while (day

{ if (day>1)

if (year_days%7==0)

printf(\"\\n\");

if (day>=10)

printf(\"%4d\",day);

else

printf(\"%4d\",day);

year_days++;

day++;

}

printf(\"\\n\");

if(getch()==\'q\')

exit(0);

} getch();

} int Isleapyear(int year)

{ if ((year%4==0)&&(year%100!=0||(year%400==0)))

return 1;

else

return 0;

}

七、设计总结

1.目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。

2.经过一个学期对《C语言程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

3.通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!

4.在万年历的编写过程中也体会到了做事情一定要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了请教的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有虚心求教才会更好的完成设计!也体会到以后在工作向他人请教的必要性和重要性!

5.通过本项课程设计也培养了我独立思考、综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!

6.由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!

7.在这次课程设计中也知道了自己的动手能力不强有待进一步的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过最终的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?

8.在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!

八、参考文献

1.电脑知识与技术学术交流版[J]2005.2 (备注:来自网络资源)

2.

第18篇:c语言实训报告

天津电子信息职业技术学院 暨国家示范性软件职业技术学院

二级C编程实训报告

名:

杨薪

号:

02

别:

网络技术系

业:

网站规划与开发

级:

规划S13-2

指导教师:

邵慧娟

完成时间:2014 年 6 月 19日

C语言程序设计报告

1.程序设计的题目

已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。

2.设计的具体任务

在已知数组a中插入一个数,但结果仍是由小及大。

3.设计的要求

把可能性分三种,同时来检验这三种不同状态如下所示

 如果设j为元素个数,如果把j的个数控制在6个并且输入一个数插入在数组a中其结果为。

 如果设j为元素个数,如果把j的个数控制在7个并且输入一个数插入在数组a中其结果为。

 如果设j为元素个数,如果把j的个数控制在5个并且输入一个数插入在数组a中其结果为。

4.设计过程

设计一个关于已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列的程序。如下面的内容所示。 main() { int a[6]={0,12,17,20,25,28,30};

/*a[0]为工作单元,从a[1]开始存放数据*/ int x , i, j=6;

/*j为元素个数*/ printf(\"Enter a number: \");

scanf(\"%d\",&x); a[0]=x; i=j;

/*从最后一个单元开始*/ while(a[i]>x) { a[i+1]=a[i]; i--;

}

/*将比x大的数往后移动一个位置*/ a[++i]=x; j++;

/*插入x后元素总个数增加*/ for(i=1;i

图1 但在执行时发现了一个错误,如图所示。

图2 然后在调试的过程中发现数组框所分配的个数不够。如图所示

图3 然后让我改正错误就出现了以下C语言程序。 main() { int a[10]={0,12,17,20,25,28,30}; int x , i, j=6;

printf(\"Enter a number: \"); scanf(\"%d\",&x); a[0]=x; i=j; while(a[i]>x)

{ a[i+1]=a[i]; i--;

}

a[++i]=x; j++;

for(i=1;i

图4

然后编译查看是否有语法错误,如有语法错误就加已改正,如没有语法错误就执行下一步、下一步是组建把它组建一个EXE的任务框、最后执行如图所示。并随便输入一个数如输入20。如图所示

图5

该程序是a[0]为工作单元,从a[1]开始存放数据。因此a[o]=0不能计入最后的程序中因此在执行结果中不会显现出来。所以再输入20时数组的排列是[12,17,20,20,25,28,30]。因为j在执行j++后j就要加1所以现在j=7

现在开始执行第二中可能,如果设j为元素个数,如果把j的个数控制在7个并且输入一个数插入在数组a中其结果为。 让我们把j=6改为j=7如图所示

图6

然后编译查看是否有语法错误,如有语法错误就加已改正,如没有语法错误就执行下一步、下一步是组建把它组建一个EXE的任务框、最后执行如图所示。并随便输入一个数如输入12。如图所示

图7 当该程序把j=6改为j=7时,因为j在执行了j++执行框要开辟8个存储空间j=7,与本题不符因此执行结果的排序出了错。该运行结果是错误的。

现在开始研究第3种可能性“设j为元素个数,如果把j的个数控制在5个并且输入一个数插入在数组a中其结果为。”

先改变j的值为5即j=5,如图所示。

图8

然后编译查看是否有语法错误,如有语法错误就加已改正,如没有语法错误就执行下一步、下一步是组建把它组建一个EXE的任务框、最后执行如图所示。并随便输入一个数如输入15。如图所示

图9 其运行结果和排列顺序都正确,因为j=5因此在执行j++后j=6所以数组所排列的数序也为6。因此在执行知道题时j必须小于或等于6  j

如果不相信我们再验证j=4时,如图所示把j改为j=4

图10 然后编译查看是否有语法错误,如有语法错误就加已改正,如没有语法错误就执行下一步、下一步是组建把它组建一个EXE的任务框、最后执行如图所示。并随便输入一个数如输入15。如图所示

图11 其运行结果和排列顺序都正确,因为j=4因此在执行j++后j=5所以数组所排列的数序也为5。在此证明了在执行知道题时j必须小于或等于6 

j

5.程序说明

main() { int a[10]={0,12,17,20,25,28,30};

/*a[0]为工作单元,从a[1]开始存放数据*/

int x , i, j=4

/*j为元素个数*/

printf(\"Enter a number: \");

scanf(\"%d\",&x);

a[0]=x;

i=j;

/*从最后一个单元开始*/

while(a[i]>x)

{ a[i+1]=a[i]; i--;

}

/*将比x大的数往后移动一个位置*/

a[++i]=x;

j++;

/*插入x后元素总个数增加*/

for(i=1;i

printf(\"\\n\");

system(\"pause\");

} C语言是从主函数main开始执行然后执行数int a[ ] ={0,12,17,20,25,28,30}。因为数组的定义是int类型因此在数组内给定的值必须是整型。同时要定义三个值分比设为x,i,j同时要定义它们的类型,因为一开始就定义数组是整型,所以想x,i,j也是整型。随后就是你要插入的那个数其c语言的格式为:

printf(\"Enter a number: \"); 随后就是输出语句scanf(\"%d\",&x); 随着这个过程的完成就来到循环语句while······for······它的作用是将比前一位大的数移动到后一个位置依次循环下去如果j=6就循环了7次,如果j=5就循环了6次最终把所有的数改变位置。最后输出结果。这样一个关于数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列的问题就完成了。

6.设计体会

学习c语言也过了一学期时间按记忆法则来说c语言的影像早也是抛到“九霄云外去了”。经过这一次实训课又让我再次拿起了c语言的书本,俗话说“温故而知新,可以为师也”,经过这次比较全面的学习我更加了解了c语言更看懂了c语言的重要性。让我深刻的意识c语言对人的中重要性,没有c语言就没有c++,就没有Java更没有现在这么强大的机器语言、汇编语言、高级语言。

本学期主要以学习c++为主一般认为学了c++就没必要学习c语言,认为c++会离我远去。但这种想法是完全错误的C语言并没远去它像修房一样,要先修房就必须打好地基而C语言就是我的地基。如果地基没打好房子怎么能修的高呀,因此我要在汇编领域要有所发展就必须学好C语言。

短短的一次实训课让我比较全面的看见了自己的不足,在以后的日子我会像“周公吐脯,天下归心”一样他求才那我就求知换句话说就是废寝忘食。 最后感谢老师给我们开设实训课,并让我们重新温习这是一个难能可贵的机会我会好好珍惜的。

第19篇:C语言实训报告

<?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" />实训报告

院系:{输入自己的院系} 姓名:【输入自己的姓名】 班级:【输入班级】

C语言

实训名称:《C语言》课程设计 课程:指导老师:***

教室:****************【保密】时间:

20**年*月*日

实训项目一:学生成绩管理系统 一:实训课程设计的目的

1:复习巩固C语言已经学习的各方面知识。 2:了解较大应用程序的综合处理方法。

二:实训,课程实训要求

1、以文本菜单界面选择功能

2、输出格式须对齐成表,有输入输出提示信息和成绩输出过程,并有注解

3、学生成绩和课程可以自定义 三:实训,课程设计内容

输入n个学生的的五门成绩,分别实现

1:学生成绩的输入 2:学生成绩的修改

3:可按学号来查询其成绩及排名 4:每个课程的平均分

四:程序代码

#include #include FILE *fp;

int a[100][10]; /*定义一个二位数组用来存放学生成绩*/ int stu; inputx() {

gotoxy(15,13); textcolor(RED);

printf(\"请输入班级的学生数:\"); scanf(\"%d\",&stu); }

input() /*输入学生成绩*/ {

int i;

for(i=1;i

{ scanf(\"%8d%8d%8d%8d%8d%8d\",&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5],&a[i][6]); } }

print1() /*输出成绩表,并求总分,平均分和排名次*/ {

int i,j;

int b[100],c[100]; int t,loc,k;

fp=fopen(\"成绩表.txt\",\"w\");

for(i=1;i

a[i][7]=0;

for(j=2;j

a[i][7]=a[i][7]+a[i][j]; a[i][8]=a[i][7]/5; }

for(i=1;i

b[i]=a[i][7]; c[i]=i; }

for(i=1;i

loc=i;

for(j=i+1;jb[loc]) loc=j;

if(loc!=i)

{t=b[i];b[i]=b[loc];b[loc]=t; t=c[i];c[i]=c[loc];c[loc]=t; } }

for(i=1;i

a[i][9]=k; break; }

for(i=1;i

for(j=1;j

printf(\"%-6d\",a[i][j]); printf(\"\\n\"); }

/*以下输出成绩表存到一个文件中*/

fprintf(fp,\"学号 语文 数学 英语for(i=1;i

for(j=1;j

fprintf(fp,\"%-6d\",a[i][j]); fprintf(fp,\"\\n\"); } }

print2() /*求各科总分和平均分*/ {

int i,j;

int m[3][6];

for(j=2;j

物理 化学总分 均分名次\\n\");

{

m[1][j-1]=0;

for(i=1;i

m[1][j-1]=m[1][j-1]+a[i][j]; m[2][j-1]=m[1][j-1]/stu; }

for(i=1;i

for(j=1;j

printf(\"%-6d\",m[i][j]); printf(\"\\n\"); } }

change() /*修改学生成绩*/ {

int m,b,c,i,n=0;

printf(\"请输入您要修改的学生的学号:****\"); scanf(\"%d\",&m);

printf(\"1,语文;2,数学;3,英语;4,物理;5,化学;\\n\"); printf(\"请选择您要修改的科目:\"); scanf(\"%d\",&b);

printf(\"请输入新的学生成绩:\"); scanf(\"%d\",&c); for(i=1;i

a[n][b+1]=c;

printf(\"\\n重新输出成绩表\\n\");

printf(\"学号 语文 数学 英语 物理 化学 总分 均分 名次\\n\"); print1(); go(); }

go() /*选择菜单*/ {

int n;

printf(\"\\n现在您将会遇到以下几种情况:\\n\");

printf(\"1,继续查询;2,修改数据;3,重新运行;4,结束程序;\\n\"); printf(\"请您根据需要按键选择:\"); scanf(\"%d\",&n); if(n==1)find(); if(n==2)change(); if(n==3)main(); if(n==4){ clrscr();

printf(\"这是我编写的第一个系统程序\"); printf(\"\\n\\n\");

printf(\"------------ByeBye----------------\"); }

getch(); }

find1() /*按名次查询学生成绩*/ {

int n,i;

printf(\"请输入您要查询的学生的名次:\"); scanf(\"%d\",&n);

printf(\"名次 学号 语文 数学 英语 物理 化学 总分 均分\\n\"); for(i=1;i

{ printf(\"%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d\",a[i][9],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]); break; }

printf(\"\\n\"); go(); }

find2() /*按学号查询学生成绩*/ {

int n,i;

printf(\"请输入您要查询的学生的学号:\"); scanf(\"%d\",&n);

printf(\"学号 语文 数学 英语 物理 化学 总分 均分 名次\\n\"); for(i=1;i

{ printf(\"%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d\",a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8],a[i][9]); break; }

printf(\"\\n\"); go(); }

find3_1(int n) /*输出科目查询结果*/ {

int i;

printf(\"学号 名次 语文 数学 英语 物理 化学 总分 均分\\n\"); for(i=1;i=90)

{ printf(\"%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d\",a[i][1],a[i][9],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]); printf(\"\\n\"); } go(); }

find3() /*科目选择菜单*/ {

int n;

printf(\"现有以下五种科目供查询:\\n\");

printf(\"1,语文;2,数学;3,英语;4,物理;5,化学;\\n\"); printf(\"请按键选择:\"); scanf(\"%d\",&n); find3_1(n); }

find() /*查询方式菜单*/ {

int m;

printf(\"根据您的要求,有以下3种查询方式: \\n\"); printf(\"1,按名次查询;\\n\"); printf(\"2,按学号查询;\\n\");

printf(\"3,查询某科成绩在90分以上的学生的情况;\\n\"); printf(\"现在,按照您的需要请按键:\"); scanf(\"%d\",&m); if(m==1)find1(); if(m==2)find2(); if(m==3)find3(); } 。

第20篇:C语言实训报告

目录

一.分步程序---------------1

二.

三.

四.心得体会

程序--------------------15 C语言结构-----------24

-------------30

主函数代码

#include #include #include struct student {

char name[100];

char number[100];

}; void printmenu(); int mycreat(int xueshengnumber,struct student record[100]); void myshow(int xueshengnumber,struct student record[100]); void myselect(int xueshengnumber,struct student record[100]); void mymodify(int xueshengnumber,struct student record[100]); int myadd(int xueshengnumber,struct student record[100]); int mydelete(int xueshengnumber,struct student record[100]); void mysort(int xueshengnumber,struct student record[100]); main() {

char choose,yesorno; struct student record[100]; int xueshengnumber=0; do { printmenu(); float scor_eng; float scor_math; float scor_phy;

choose=getch();

while(choose>\'7\'||choose

printf(\"请在0-7之间选择\\n\");

choose=getch();

}

switch(choose) {

case \'1\':

{

xueshengnumber=mycreat(xueshengnumber,record); break;

}

case \'2\':

{

myshow(xueshengnumber,record);

}

break;

case \'3\':

{

}

case \'4\':

{

}

case \'5\':

{

}

case \'6\':

{

}

case \'7\':

{

xueshengnumber=mydelete(xueshengnumber,record); break;

xueshengnumber=myadd(xueshengnumber,record); break;

mymodify(xueshengnumber,record); break;

myselect(xueshengnumber,record); break;

mysort(xueshengnumber,record);

break; }

case \'0\':

{

} }

printf(\"请确定要退出系统吗?\"); break; printf(\"\\n 要继续选择吗(Y/N)\\n\"); do

yesorno=getch();

while(yesorno!=\'Y\'&&yesorno!=\'N\'&&yesorno!=\'y\'&&yesorno!=\'n\');

}while(yesorno==\'Y\'||yesorno==\'y\');

} printmenu函数代码

printf(\"|--------------|\\n\"); void printmenu() {

} printf(\"|--------------|\\n\");

printf(\"|

学生成绩管理系统,请选择数字进行相应操作

|\\n\"); printf(\"|

1:录入学生成绩(包括姓名、学号、英语、数学、物理、),输入完成按“#”结束 |\\n\"); printf(\"|

2:显示学生成绩;

|\\n\");

printf(\"|

3:查询学生成绩;

|\\n\"); printf(\"|

4:修改学生成绩;

|\\n\"); printf(\"|

5:添加学生成绩;

|\\n\"); printf(\"|

6:删除学生成绩;

|\\n\"); printf(\"|

7:排序学生成绩;

|\\n\"); printf(\"|

0:退出该系统

|\\n\");

Mycreat函数代码

int mycreat(int xueshengnumber,struct student record[100]) {

char tempname[100],tempnumber[100]; float tempenglish,tempmaths,tempphysics; int x; printf(\"请输入第%d个记录:\\n\",xueshengnumber+1); printf(\"姓名(用#结束):\\n\"); do

gets(tempname);

while(strcmp(tempname,\"\")==0);

printf(\"学号(用#结束):\\n\"); do

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

printf(\"英语成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempenglish);

}while(tempenglish>100.0||tempenglish

printf(\"数学成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempmaths);

}while(tempmaths>100.0||tempmaths

printf(\"物理成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempphysics);

}while(tempphysics>100.0||tempphysics

while(tempname[0]!=\'#\'&&tempnumber[0]!=\'#\')

{

strcpy(record[xueshengnumber].name,tempname);

strcpy(record[xueshengnumber].number,tempnumber);

record[xueshengnumber].scor_eng=tempenglish;

record[xueshengnumber].scor_math=tempmaths;

record[xueshengnumber].scor_phy=tempphysics;

xueshengnumber++;

printf(\"请输入第%d个记录:\\n\",xueshengnumber+1);

printf(\"姓名(用#结束):\\n\");

do

gets(tempname);

while(strcmp(tempname,\"\")==0);

printf(\"学号(用#结束):\\n\"); do

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

printf(\"英语成绩:\\n\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempenglish); }while(tempenglish>100.0||tempenglish

printf(\"数学成绩:\\n\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempmaths); }while(tempmaths>100.0||tempmaths

printf(\"物理成绩:\\n\");

do {

fflush(stdin);

}

x=scanf(\"%f\",&tempphysics);

} return(xueshengnumber); }while(tempphysics>100.0||tempphysics

Myshow函数代码

void myshow(int xueshengnumber,struct student record[100]) {

int i; if(xueshengnumber==0)

printf(\"请先录入学生成绩,再显示学生成绩\\n\"); else{

printf(\"请输入学生成绩\\n\");

for(i=0;i

printf(\"%-19s\",record[i].name);

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy);

}

}

}

printf(\"\\n\");

Myselect函数代码

void myselect(int xueshengnumber,struct student record[100]) {

int i; char tempnumber[100]; printf(\"请输入要查询的学生学号:\"); do{

gets(tempnumber);

}while(strcmp(tempnumber,\"\")==0);

for(i=0;i

if(strcmp(record[i].number,tempnumber)==0) }

break;

if(i==xueshengnumber)

printf(\"查询结果无此学生\\n\"); else{

printf(\"查询结果:\\n\");

printf(\"姓名

学号

英语成绩

物理成绩\\n\");

printf(\"%-19s\",record[i].name);

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy);

printf(\"\\n\"); }

}

Mymodify函数代码

id mymodify(int xueshengnumber,struct student record[100]) { int i,x;

char tempnumber[100],tempname[100];

float tempenglish,tempmaths,tempphysics; for(i=0;i

for(i=0;i

} break;

if(i==xueshengnumber) printf(\"没有查询到此学生\\n\"); else{

printf(\"请输入正确的学生姓名:\");

do

{

gets(tempname);

}while(strcmp(tempname,\"\")==0);

printf(\"请输入正确的学生学号:\");

do

{

gets(tempnumber);

}while(strcmp(tempnumber,\"\")==0);

printf(\"请输入正确的英语成绩:\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempenglish);} while(tempenglish>100.0||tempenglish

printf(\"请输入正确的数学成绩:\");

do

{

fflush(stdin);

scanf(\"%f\",&tempmaths);}

while(tempmaths>100.0||tempmaths

printf(\"请输入正确的物理成绩:\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempphysics); }

while(tempphysics>100.0||tempphysics

strcpy(record[i].name,tempname);

} }

strcpy(record[i].number,tempnumber);

record[i].scor_eng=tempenglish;

record[i].scor_math=tempmaths;

record[i].scor_phy=tempphysics;

Myadd函数代码

int myadd(int xueshengnumber,struct student record[100]) {

int i,x; char tempnumber[100],tempname[100]; float tempenglish,tempmaths,tempphysics; {

printf(\"请输入要添加的学生学号:\"); do { }

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

for(i=0;i

do{ if(strcmp(record[i].number,tempnumber)==0){ printf(\"该学号已存在,请重新输入:\");

gets(tempnumber);

} if(i==xueshengnumber){

printf(\"请输入要添加的学生姓名:\"); }while(strcmp(tempnumber,\"\")==0); }

do

{

gets(tempname);

}

while(strcmp(tempname,\"\")==0);

printf(\"请输入要添加的英语成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempenglish);

}while(tempenglish>100.0||tempenglish

printf(\"请输入要添加的数学成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempmaths);

}while(tempmaths>100.0||tempmaths

printf(\"请输入要添加的物理成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempphysics);

}while(tempphysics>100.0||tempphysics

strcpy(record[xueshengnumber].name,tempname);

}

return xueshengnumber; }

strcpy(record[xueshengnumber].number,tempnumber);

record[xueshengnumber].scor_eng=tempenglish;

record[xueshengnumber].scor_math=tempmaths;

record[xueshengnumber].scor_phy=tempphysics;

xueshengnumber++;

Mydelete函数代码

int mydelete(int xueshengnumber,struct student record[100]) {

} if(i

if(i+1==xueshengnumber)xueshengnumber--; else{ for(;i

int i;

char tempnumber[100];

printf(\"请输入要删除的学生学号:\\n\");

do

{ }

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0); for(i=0;i

if(strcmp(record[i].number,tempnumber)==0)

break;

strcpy(record[i].name,record[i+1].name);

strcpy(record[i].number,record[i+1].number);

record[i].scor_eng=record[i+1].scor_eng;

record[i].scor_math=record[i+1].scor_math;

record[i].scor_phy=record[i+1].scor_phy;

}

} } xueshengnumber--;

else printf(\"没有查询到要删除的学生\\n\");

return xueshengnumber; }

Mysort函数代码

void mysort(int xueshengnumber,struct student record[100]) {

int i,j,k; char tempnumber[100],tempname[100]; float tempenglish,tempmaths,tempphysics; printf(\"按学号从小到大的排序\\n\");

do

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

for(i=0;i

k=i;

for(j=i+1;j

{ {

if(strcmp(record[k].number,record[j].number)>0)

k=j;

strcpy(tempnumber,record[k].number);

strcpy(record[k].number,record[i].number);

strcpy(record[i].number,tempnumber);

strcpy(tempname,record[k].name);

strcpy(record[k].name,record[i].name);

strcpy(record[i].name,tempnumber);

tempenglish=record[k].scor_eng;

record[k].scor_eng=record[i].scor_eng;

record[i].scor_eng=tempenglish;

tempmaths=record[k].scor_math;

record[k].scor_math=record[i].scor_math;

record[i].scor_math=tempmaths;

tempphysics=record[k].scor_phy;

}

printf(\"显示所有学生成绩\\n\");

for(i=0;i

printf(\"%-19s\",record[i].name);

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy); printf(\"\\n\");

}

}

record[k].scor_phy=record[i].scor_phy;

record[i].scor_phy=tempphysics;

学生成绩管理系统

#include #include #include struct student {

char name[100];

char number[100];

}; void printmenu(); int mycreat(int xueshengnumber,struct student record[100]); void myshow(int xueshengnumber,struct student record[100]); void myselect(int xueshengnumber,struct student record[100]); void mymodify(int xueshengnumber,struct student record[100]); int myadd(int xueshengnumber,struct student record[100]); int mydelete(int xueshengnumber,struct student record[100]); void mysort(int xueshengnumber,struct student record[100]); main() { float scor_eng; float scor_math; float scor_phy;

char choose,yesorno; struct student record[100]; int xueshengnumber=0; do { printmenu();

choose=getch();

while(choose>\'7\'||choose

printf(\"请在0-7之间选择\\n\");

choose=getch();

}

switch(choose) {

case \'1\':

{

}

xueshengnumber=mycreat(xueshengnumber,record); break;

case \'2\':

{

myshow(xueshengnumber,record);

}

break;

case \'3\':

{

}

case \'4\':

{

}

case \'5\':

{

}

case \'6\':

{

xueshengnumber=mydelete(xueshengnumber,record); xueshengnumber=myadd(xueshengnumber,record); break;

mymodify(xueshengnumber,record); break;

myselect(xueshengnumber,record); break;

}

break;

case \'7\':

{

mysort(xueshengnumber,record);

break; }

case \'0\':

{

} }

printf(\"请确定要退出系统吗?\"); break; printf(\"\\n 要继续选择吗(Y/N)\\n\"); do

yesorno=getch();

while(yesorno!=\'Y\'&&yesorno!=\'N\'&&yesorno!=\'y\'&&yesorno!=\'n\');

}while(yesorno==\'Y\'||yesorno==\'y\'); }

void printmenu() { printf(\"|--------------|\\n\");

printf(\"|

学生成绩管理系统,请选择数字进行相应操作

|\\n\"); |\\n\"); |\\n\"); |\\n\"); |\\n\"); |\\n\"); |\\n\"); |\\n\"); |\\n\"); } printf(\"|--------------|\\n\"); printf(\"|

0:退出该系统

printf(\"|

7:排序学生成绩;

printf(\"|

6:删除学生成绩;

printf(\"|

5:添加学生成绩;

printf(\"|

4:修改学生成绩;

printf(\"|

3:查询学生成绩;

printf(\"|

2:显示学生成绩;

printf(\"|

1:录入学生成绩(包括姓名、学号、英语、数学、物理、),输入完成按“#”结束

int mycreat(int xueshengnumber,struct student record[100]) {

char tempname[100],tempnumber[100]; float tempenglish,tempmaths,tempphysics; int x; printf(\"请输入第%d个记录:\\n\",xueshengnumber+1); printf(\"姓名(用#结束):\\n\"); do

gets(tempname);

while(strcmp(tempname,\"\")==0);

printf(\"学号(用#结束):\\n\"); do

gets(tempnumber); while(strcmp(tempnumber,\"\")==0);

printf(\"英语成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempenglish);

}while(tempenglish>100.0||tempenglish

printf(\"数学成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempmaths);

}while(tempmaths>100.0||tempmaths

printf(\"物理成绩:\\n\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempphysics);

}while(tempphysics>100.0||tempphysics

while(tempname[0]!=\'#\'&&tempnumber[0]!=\'#\')

{

strcpy(record[xueshengnumber].name,tempname);

strcpy(record[xueshengnumber].number,tempnumber);

record[xueshengnumber].scor_eng=tempenglish;

record[xueshengnumber].scor_math=tempmaths;

record[xueshengnumber].scor_phy=tempphysics;

xueshengnumber++;

printf(\"请输入第%d个记录:\\n\",xueshengnumber+1);

printf(\"姓名(用#结束):\\n\");

do

gets(tempname);

while(strcmp(tempname,\"\")==0);

printf(\"学号(用#结束):\\n\"); do

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

printf(\"英语成绩:\\n\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempenglish); }while(tempenglish>100.0||tempenglish

printf(\"数学成绩:\\n\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempmaths); }while(tempmaths>100.0||tempmaths

printf(\"物理成绩:\\n\");

do {

fflush(stdin);

} void myshow(int xueshengnumber,struct student record[100]) {

int i; if(xueshengnumber==0)

printf(\"请先录入学生成绩,再显示学生成绩\\n\"); else{

printf(\"请输入学生成绩\\n\");

for(i=0;i

printf(\"%-19s\",record[i].name);

x=scanf(\"%f\",&tempphysics);

} return(xueshengnumber); }while(tempphysics>100.0||tempphysics

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy);

}

printf(\"\\n\");

} } void myselect(int xueshengnumber,struct student record[100]) {

int i; char tempnumber[100]; printf(\"请输入要查询的学生学号:\"); do{

gets(tempnumber);

}while(strcmp(tempnumber,\"\")==0);

for(i=0;i

if(strcmp(record[i].number,tempnumber)==0) }

break;

if(i==xueshengnumber)

printf(\"查询结果无此学生\\n\"); else{

printf(\"查询结果:\\n\");

printf(\"姓名

学号

英语成绩

物理成绩\\n\");

printf(\"%-19s\",record[i].name);

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy);

void mymodify(int xueshengnumber,struct student record[100]) { int i,x;

printf(\"\\n\"); }

}

char tempnumber[100],tempname[100];

float tempenglish,tempmaths,tempphysics; for(i=0;i

for(i=0;i

if(strcmp(record[i].number,tempnumber)==0) break;

}

if(i==xueshengnumber) printf(\"没有查询到此学生\\n\"); else{

printf(\"请输入正确的学生姓名:\");

do

{

gets(tempname);

}while(strcmp(tempname,\"\")==0);

printf(\"请输入正确的学生学号:\");

do

{

gets(tempnumber);

}while(strcmp(tempnumber,\"\")==0);

printf(\"请输入正确的英语成绩:\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempenglish);} while(tempenglish>100.0||tempenglish

printf(\"请输入正确的数学成绩:\");

do

{

fflush(stdin);

scanf(\"%f\",&tempmaths);}

while(tempmaths>100.0||tempmaths

printf(\"请输入正确的物理成绩:\");

do {

fflush(stdin);

x=scanf(\"%f\",&tempphysics); }

while(tempphysics>100.0||tempphysics

strcpy(record[i].name,tempname);

} } int myadd(int xueshengnumber,struct student record[100]) { int i,x;

strcpy(record[i].number,tempnumber);

record[i].scor_eng=tempenglish;

record[i].scor_math=tempmaths;

record[i].scor_phy=tempphysics;

char tempnumber[100],tempname[100]; float tempenglish,tempmaths,tempphysics; {

printf(\"请输入要添加的学生学号:\"); do { }

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

for(i=0;i

do{ if(strcmp(record[i].number,tempnumber)==0){ printf(\"该学号已存在,请重新输入:\");

gets(tempnumber);

} if(i==xueshengnumber){

printf(\"请输入要添加的学生姓名:\"); }while(strcmp(tempnumber,\"\")==0); }

do

{

gets(tempname);

}

while(strcmp(tempname,\"\")==0);

printf(\"请输入要添加的英语成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempenglish);

}while(tempenglish>100.0||tempenglish

printf(\"请输入要添加的数学成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempmaths);

}while(tempmaths>100.0||tempmaths

printf(\"请输入要添加的物理成绩:\");

do

{

fflush(stdin);

x=scanf(\"%f\",&tempphysics);

}while(tempphysics>100.0||tempphysics

strcpy(record[xueshengnumber].name,tempname);

}

return xueshengnumber; } int mydelete(int xueshengnumber,struct student record[100]) {

} if(i

if(i+1==xueshengnumber)xueshengnumber--; else{ for(;i

int i;

char tempnumber[100];

printf(\"请输入要删除的学生学号:\\n\");

do

{ }

gets(tempnumber);

strcpy(record[xueshengnumber].number,tempnumber);

record[xueshengnumber].scor_eng=tempenglish;

record[xueshengnumber].scor_math=tempmaths;

record[xueshengnumber].scor_phy=tempphysics;

xueshengnumber++;

while(strcmp(tempnumber,\"\")==0); for(i=0;i

if(strcmp(record[i].number,tempnumber)==0)

break;

strcpy(record[i].name,record[i+1].name);

}

else printf(\"没有查询到要删除的学生\\n\");

return xueshengnumber; } void mysort(int xueshengnumber,struct student record[100]) { int i,j,k;

strcpy(record[i].number,record[i+1].number);

record[i].scor_eng=record[i+1].scor_eng;

record[i].scor_math=record[i+1].scor_math;

record[i].scor_phy=record[i+1].scor_phy;

} } xueshengnumber--;

char tempnumber[100],tempname[100]; float tempenglish,tempmaths,tempphysics; printf(\"按学号从小到大的排序\\n\");

do

gets(tempnumber);

while(strcmp(tempnumber,\"\")==0);

for(i=0;i

k=i;

for(j=i+1;j

{ {

k=j;

strcpy(tempnumber,record[k].number);

if(strcmp(record[k].number,record[j].number)>0)

strcpy(record[k].number,record[i].number);

strcpy(record[i].number,tempnumber);

strcpy(tempname,record[k].name);

strcpy(record[k].name,record[i].name);

strcpy(record[i].name,tempnumber);

tempenglish=record[k].scor_eng;

record[k].scor_eng=record[i].scor_eng;

record[i].scor_eng=tempenglish;

tempmaths=record[k].scor_math;

record[k].scor_math=record[i].scor_math;

record[i].scor_math=tempmaths;

tempphysics=record[k].scor_phy;

}

printf(\"显示所有学生成绩\\n\");

for(i=0;i

printf(\"%-19s\",record[i].name);

printf(\"%-19s\",record[i].number);

printf(\"%-13f\",record[i].scor_eng);

printf(\"%-13f\",record[i].scor_math);

printf(\"%-13f\",record[i].scor_phy);

printf(\"\\n\"); }

}

}

record[k].scor_phy=record[i].scor_phy;

record[i].scor_phy=tempphysics;

} C语言程序结构

1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和 switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以 二进制的形式.数据存放的位置就是 他的地址.4)bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.5)一定要记住 二进制 如何划成 十进制。 概念常考到的:

1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。第一章

1)合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。

关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式:

2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。.3)字符数据的合法形式::

\'1\' 是字符占一个字节,\"1\"是字符串占两个字节(含有一个结束符号)。

\'0\' 的ASCII数值表示为48,\'a\' 的ASCII数值是97,\'A\'的ASCII数值是65。 4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:

考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查:

在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。

在程序中 int a = 06d, 是一个八进制的形式。

在转义字符中,‟\\x6d‟ 才是合法的,0不能写,并且x是小写。

„\\141‟ 是合法的, 0是不能写的。 „\\108‟是非法的,因为不可以出现8。 6)算术运算符号的优先级别:

同级别的有的是从左到右,有的是从右到左。 7)强制类型转换:

一定是 (int)a 不是

int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。

8)表达式的考查:

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这 个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6, 再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。 (2,3,4)的表达式的数值就是4。 9)位运算的考查:

会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。 例1: char a = 6, b;

b = a

例3: 在没有舍去数据的时候,>右移一位表示除以2。 10)018的数值是非法的,八进制是没有8的,逢8进1。 11)%符号两边要求是整数。不是整数就错了。 12) 三种取整丢小数的情况:

1、int a =1.6;

2、(int)a;

3、

第二章 1)printf函数的格式考查:

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。

%ld对应 long int;%lf 对应double。 2)scanf函数的格式考察:

注意该函数的第二个部分是&a这样的地址,不是a;

Scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。 3)putchar ,getchar 函数的考查:

char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(„y‟)把字符y输出到屏幕中。

4)如何实现两个变量x ,y中数值的互换(要求背下来)

不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)

这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。

第三章

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。 1)关系表达式:

表达式的数值只能为1(表示为真),或0(表示假)

当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1; 2)逻辑表达式:

只能为1(表示为真),或0(表示假) a)

共有&&

||

! 三种逻辑运算符号。 b)

!>&&>|| 优先的级别。

c)

注意短路现象。考试比较喜欢考到。

d)

要表示 x 是比0大,比10小的方法。0

else 是与最接近的if且没有else的相组合的。 4)条件表达式:

表达式1 ?表达式2 :表达式3

注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。 考试口诀:真前假后。 5)switch语句:

a)一定要注意 有break 和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。

b)switch只可以和break一起用,不可以和continue用。

第四章 1)三种循环结构:

a)for() ; while();

do- while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错) 2) break 和

continue的差别

记忆方法:

break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。

continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。 3)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

4) while((c=getchar())!=‟\\n‟) 和 while(c=getchar() !=‟\\n‟)的差别 先看a = 3 != 2 和 (a=3)!=2 的区别:

(!=号的级别高于=号所以第一个先计算 3!=2)第一个a的数值是得到的1;第二个a的数值是3。 考试注意点:括号在这里的重要性。

第五章

函数:是具有一定功能的一个程序块;

1) 函数的参数,返回数值(示意图):

main() { int a = 5,b=6,c;

c =add(a,b);

printf(“%d”,c); } 调用函数 a,b是实参

整个函数得到一个数值就是 Add函数的返回数值。 int add ( int x, int y) { int z;

z=x+y;

return z; } 被调用函数 x,y是形式参数 函数返回数值是整型

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。

程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行 2)一定要注意参数之间的传递

实参和形参之间传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。 3)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。 不一定要有:形参的名称。

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。 int *p 中

*p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。

*p++ 和 (*p)++的之间的差别:改错题目中很重要

*p++是 地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念: 对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。 二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成:

第一列 第二列 第三列

a[0]à

->第一行 a[1]à

6—>第二行 a[2]à

9->第三行 步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。 *(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。 一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。 数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写

int a[]={1,2} 合法。

int a[][4]={2,3,4}合法。

但int a[4][]={2,3,4}非法。 二维数组中的行指针 int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。

搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用 还有记住脱衣服法则:

a[2] 变成

*(a+2)

a[2][3]变成 *(a+2)[3]再可以变成

*(*(a+2)+3) 这个思想很重要!

心得体会

科技高度发展的今天,计算机在人们生活、学习和工作中的作用越来越突出。我们都知道C语言是一种计算机语言,而作为计算机专业的我们学习它,就更有助于我们更好的了解计算机,与计算机进行交流,因此,C语言的学习对我们尤其重要。

说实话这个学期刚开始学C语言的时候,很感觉迷茫,对里面的好多东西很陌生,在操作运用的时候感到很棘手,毕竟,万事开头难嘛。在此之前从没有接触过C语言,有点摸不着头脑。可是在上机过后,我觉得编程是很有趣的一件事,哪怕你编出的只是一个很简单的程序都会让你很有成就感。我知道要学好C语言不容易,可是我决定完成这件不容易的事。

在课堂上老师从最基本的跟我们讲起,要学好C语言就必须要先懂得最基本的语法知识,看课本是必需的。我觉得看不懂也没关系,尽力去理解就好了,在对知识有了一个大致的了解过后,就要上机实践。学习C语言一定要动手,只看不做,眼高手低是不行的。

最开始我们打书上的例题,熟悉程序,慢慢的开始试着编程。老师说过在编程时要理清自己的思路,然后再转换成C语言中的语言,这个时候就更要动手了,只有通过上机操作才能验证自己程序的正确性。执行程序,不要害怕错误,其实,我觉得错误是好的,知道了自己所学知识的不足,并根据提示改正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。

我觉得良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。在学习的时候,不会的一定要问明白,可以求助于老师,同学,不要自己一个人钻牛角尖,既浪费时间又学不到东西。

上课的时候也一定要认真听,老师讲的肯定是最重要的,错过了就是一大笔损失,认真听讲才可以提高学习效率嘛。另外我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。

输入程序时一定要认真,不要把“,”与“;”混淆,用scanf的时候不要忘记“&”,用“switch”要记得“break”,用if,while的时候注意不要加“;”,“{}”“()”一定要配对,不要多也不要少一半,“=”与“==”的区别要清楚,要勤查优先级,要记住一些基本的,例如两个值之间的调换怎么写等等。

学习C语言需要的是坚持下去的毅力和认真对待每次错误的耐心,还有孜孜不倦的努力。拥有一个良好的心态,相信自己,就会发现学好C语言不再困难!

湖北轻工职业技术学院

C语言实训报告

题 目 学生成绩管理系统 系 部 信息工程系 专 业 电子信息 班 级 10电信 姓 名 章迎 学 号 1003021115 指导教师 吴瑞

2011-12-25

c语言实训心得体会
《c语言实训心得体会.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档