c语言程序设计实验报告

时间:2024-07-11 07:37:34 设计 我要投稿

c语言程序设计实验报告

  随着社会不断地进步,接触并使用报告的人越来越多,通常情况下,报告的内容含量大、篇幅较长。相信很多朋友都对写报告感到非常苦恼吧,下面是小编为大家整理的c语言程序设计实验报告,希望能够帮助到大家。

c语言程序设计实验报告

c语言程序设计实验报告1

  汇编语言课程是计算机专业的一门基础主干课程,该课程与计算机硬件系统密切相关。主要介绍80x86cpu的指令系统、寻址方式、工作原理。通过该课程的学习,培养学生使用汇编语言编写程序的能力。加深学生对计算机内部http://运行机制的理解,为学生开发系统软件和与硬件相关的软件打下坚实的基础。

  一、汇编语言课程教学现状分析

  1、与计算机硬件相关,课程难度大

  汇编语言课程是以特定的计算机硬件为基础的,现在我国高等学校中普遍以80x86cpu系列计算机作为教学模型。首先介绍80x86cpu的工作方式、指令系统、寻址方式等与硬件有关的知识,然后讲解汇编语言的编程方法和技巧,最后介绍系统输入/输出功能调用和有关文件的编程方法。汇编语言课程通常开设在大学的第三学期或第四学期,学生只有高级语言的基础,习惯于高级语言的自然表达形式。学生具备的计算机硬件的知识非常少,所以学习汇编语言课程时会感到非常困难,难于适应复杂的低级语言。特别是在开始学习阶段,许多学生经常混淆寄存器、内存,地址、内容等基本概念。

  2、课程内容单一,学生学习兴趣不足

  目前多数高校讲授汇编语言课程的主要目标是使学生掌握一种编程语言。因为汇编语言比较难学,如果在教学中单纯强调掌握编程技术,学生可能失去学习该课程的兴趣。在汇编语言中既没有分支语句也没有循环语句,学生必须使用比较指令和条件转移指令来构造出分支结构和循环结构。学生更愿意选择易于理解和编写程序的高级语言,如c、c++、java等。不喜欢使用复杂的汇编语言来编写程序。学生不了解汇编语言与其他课程的关系,只是把它当作一门必须参加考试的课程对待。

  二、汇编语言教学改革的思想和方法

  1、明确课程的目标

  根据汇编语言教学大纲的要求,掌握一种基于硬件的汇编语言编程技术是课程的基本目标和要求。在教学中可以将汇编语言与一种高级语言(如c语言)进行比较,通过学习汇编语言使学生更深刻地理解高级语言的工作原理。例如c中数组是连续的存储空间,相对于汇编语言中的寄存器相对寻址方式;c指针的概念在汇编中就是内存单元的地址,是寄存器间接寻址方式;c函数中的参数传递,是用汇编语言中的堆栈段(stack)实现的。前面提到的几个问题是c语言课程中的教学重点和难点,学生不易理解和掌握。通过汇编语言课程分析c语言中的这些问题,可以使学生从计算机的工作原理角度出发真正理解了c语言中的这些知识,并且掌握了c语言编译执行的过程,知道高级语言中分支结构和循环结构在执行时需要翻译成一条一条的指令来完成。从计算机工作原理入手讲解汇编语言可以使学生在学习一门计算机语言的同时深入理解计算机的工作原理,这是在高级语言教学中很难实现的。

  教师在开始上课时,首先提出课程的目标和要求,同时要告诉学生汇编语言课程是《计算机组成原理》、《计算机接口与通讯技术》、《计算机操作系统》、《单片机原理》等课程的先修课,学好本课程会为其他相关课程的学习打下坚实的基础。

  2、课程群的建设

  传统的教学模式中,每位教师更多关注本课程的内容,很少考虑本课程对后续课程的影响以及课程之间的知识重复和交叉的问题。为了更好地培养计算机专业学生的软硬件综合能力,将《计算机组成原理》、《汇编语言程序设计》及《计算机接口与通讯技术》三门课程纳入到一个课程群来建设是十分必要的。建立基于软硬件综合能力培养的新教学体系和新实验模式。首先,这三门课程从内容上是相互关联的,例如汇编语言与计算机组成原理中都涉及到指令系统和寻址方式的章节,区别在于汇编语言是针对80x86cpu机型的,而计算机组成原理是不针对具体机型的。学生如果已经完全掌握了汇编语言中的指令系统和寻址方式的概念,学习计算机组成原理时就易于理解和掌握该章节的内容,教师也可以花费较少的学时来完成该部分的教学。其次,这三门课程是相互影响的,例如在计算机接口课程的实验中,学生需要使用汇编语言编写接口程序。所以,汇编语言课程学习的好坏会直接影响到计算机组成原理和计算机接口课程的学习效果。

  3、优化整合教学内容

  汇编语言课程中会用到二进制、十六进制、补码等知识,这些知识是先修课程信息技术基础中的内容。在汇编语言课程中可以将本课程中使用频繁的补码概念、数的溢出判断等知识点强调说明,其他的内容让学生自己复习,教师不必重复讲解。

  汇编语言指令多达几百条,其中有的指令很少使用。所以在教学中要精心选取常用的指令,将功能相似的指令分组讲解,选择一组中某几个指令详细介绍指令的格式、功能和使用。在讲解指令时教会学生学习指令的方法,起到举一反三的效果,当学生今后遇到没学过的'指令时可以自主学习。如果将所有的指令集中讲解,学生不易掌握。可以将指令分散到各个章节中,例如将比较指令和转移指令分解到分支程序设计中,将串指令分解到循环程序设计中。指令要与程序相结合,让学生在程序中学习指令、寻址方式和编程方法。

  4、加强实验教学环节

  汇编语言是实践性很强的一门课程,学生为了学好这门课程,必须多做实验。教师需要科学合理地安排和布置实验的题目,从而达到通过实验提高学生能力的目的。同时要加强实验环节的管理,将实验分为实验前、实验中和实验后这三个重要的阶段。实验前:教师提前一周布置实验的题目并给出实验的具体要求。学生根据题目要求给出解题方法;寄存器和内存单元的分配说明;画出程序的流程图;写出源程序;写出实验的步骤;设计程序测试用例和预期的运行结果。实验中:如果汇编源程序时出现错误,学生需要记录错误的类型,按照系统的提示信息仔细检查和分析,发现错误的原因并改正。当连接正确后,使用测试用例的数据运行程序,若运行结果不正确,利用debug调试工具分析产生错误的原因,记录段寄存器、通用寄存器、标志位、内存单元值的变化情况。找到产生错误的指令并加以改正,直到运行结果正确。实验后:学生按照教师的实验报告要求,认真书写本次实验的报告。实验报告中包括以下内容:题目、要求、解题方法、寄存器和内存单元的分配说明、程序的流程图、源程序、实验的步骤、设计程序测试用例和预期的运行结果、调试中出现的语法错误、debug调试的断点设置、寄存器和内存单元的值、运行结果和实验结论等。学生需在实验完成的三日内完成并向教师提交实验报告。教师要认真批阅学生的实验报告,总结学生容易出现的普遍性错误,在下次实验时提醒学生注意。

  5、新技术的引入

  学生在学习汇编语言课程时会与高级语言比较,学生普遍认为用高级语言编写程序更简单,所以一方面要引导学生意识到汇编语言在编写与硬件相关的底层系统软件时具有高级语言所不具备的优势,同时也要与时俱进地将新的技术和理念引入课堂中。可以增加保护模式下编程和win32编程的技术。主要介绍基于windows窗口的应用程序结构:主程序、窗口主程序、窗口消息处理程序和用户处理程序等。

  6、教学内容与科研相结合

  教学和科研是相辅相成的关系,在教学中及时引入科研成果可以提高学生学习的积极性,同时也可以保持教学内容的先进性和实用性。将用汇编语言实现软件的跟踪与反跟踪技术介绍给学生,对于有兴趣的学生可以组成研究小组,在教师的指导下深入研究,提高学生对于实际问题的分析和解决能力。

  7、辅助教学资源的扩充

  充分利用校园网络平台,建设汇编语言课程的学习网站,可以将课程的教学大纲、电子教案、课件、讲课录像等在网站上进行,建立课程的题库,方便学生自测学习效果。设置该课程的学习论坛、课程qq群,教师和学生可以对课程学习和相关的热点研究问题进行在线讨论。鼓励学生多阅读与汇编语言相关的英文原版书籍,如:the art of assembly language,randy hyde、ibm pc assembly language and programming,peter abel、电子工业出版社出版的intel 汇编语言程序设计(第4版),kip r、 irvine等。学生多看原版的教材可以开阔视野和获取更多的知识。

c语言程序设计实验报告2

  实验名称 计算出1000以内10个最大素数之和

  实验目的

  1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。

  2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。

  3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

  实验内容

  计算并输出1000以内最大的10个素数以及它们的和。

  要求:

  在程序内部加必要的注释。

  由于偶数不是素数,可以不考虑对偶数的处理。

  虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。

  输出形式为:素数1+素数2+素数3+…+素数10=总和值。

  算法描述流程图

  main函数:

  判断素数:

  源程序

  #include

  #include

  int sushu(int n)/* 判断素数的函数 */

  {

  int t,i;

  t=sqrt(n);

  for(i=2;i<=t;i++)

  if(n%i==0)/* 如果不是素数,返回 0 */

  return 0;

  return n;/* 如果是素数,返回该数 */

  }

  void main()

  {

  int i,j=0,n,m=0,a[1000],x;

  /*clrscr();*/

  printf("please input a number form 1 to 1000:");

  scanf("%d",&x);

  if(x==2)/* x=2时的处理 */

  printf("%dn",x);

  else if(x<=1) /* x在1~1000范围外时的处理 */

  printf("error!n");

  else

  {

  if(x%2==0)/* x为偶数时,把x变为奇数 */

  x--;

  for(i=x;i>1;i-=2)/* x为奇数时,做函数计算 */

  {

  n=sushu(i); /* 做判断素数的函数调用 */

  if(n!=0)/* 对素数的处理 */

  {

  a[j]=n;/* 把素数由大至小存入数组a[ ]中 */

  j++;

  if(j<11)

  m+=n; /* 统计前10个素数之和 */

  }

  }

  if(j<10)/* 当素数个数小于10个时,结果输出 */

  {

  for(i=0;i

  {

  n=a[i];

  printf("%d",n);

  printf("+");

  }

  printf("2=");

  printf("%dn",m+2);

  }

  else for(i=0;i<10;i++)/* 当素数个数大于等于10个时,结果输出 */

  {

  n=a[i];

  printf("%d",n);

  if(i<9)

  printf("+");

  else

  {

  printf("=");

  printf("%dn",m);

  }

  }

  }

  }

  测试数据

  分别输入1000、100、10测试。

  运行结果

  出现问题及解决方法

  当素数个数小于10时的处理不够完善,考虑不够周全。把“+2”的处理做的太勉强。

  程序过大,不够精简,无用文字太多。

  学习耐心与细心不足,如scanf(“%d”,&n);中的“&”经常忘记。

  编程思想不够发散,例如如何判断素数,只能想出2种方式(其中1种为参考教科书上内容);在今后学习中应更多的动脑,综合运用所学。

  基本功不够,如清屏clrscr()等函数用的不好,有时同样的.问题多次犯,给实验课老师带来很大的麻烦。这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。就算以后c语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。

  物理实验报告 ·化学实验报告 ·生物实验报告 ·实验报告格式 ·实验报告模板

  知识不够广泛,如vc++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。已会的东西掌握的还是不够好。

  实验心得

  通过本次c语言上机实验,我对这个介于人类与非人类之间

  的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。感谢高克宁老师的高标准、严要求,感谢实验课上小老师们的耐心指点,也感谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对c语言,我会更加努力。

【c语言程序设计实验报告】相关文章:

c语言实验报告范本03-18

c语言程序设计心得体会04-10

c语言程序设计心得体会(通用13篇)12-28

c语言程序设计心得体会经典(5篇)09-29

C程序设计求职信02-13

c语言实践报告01-17

c语言与c++基础知识点总结12-17

C#程序设计下课程设计教学分析12-17

C语言专业求职信12-17