C_上机实验(含作业)总的目的、要求和评分标准

  • 格式:doc
  • 大小:57.50 KB
  • 文档页数:6

上机实验(含作业)总的目的、要求和评分标准一、实验目的实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。

也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。

因此调式程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调式程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。

因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。

甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double 变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。

这样的学习才会有真正的收获。

实验目的可归纳如下:⒈验证自己已建立起来的概念或所编写的程序是否正确;⒉加深对课堂所学内容的理解和语法规则的记忆;⒊理解和掌握运用计算机高级语言进行编程的思想方法;⒋掌握常用算法的设计与应用实现;⒌熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;⒍学会上机调试程序的方法,不断积累调试经验,提高排错能力;⒎使自己具有独立的应用编程和熟练的程序调试能力。

二、要求:⒈做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

③将想要上机验证的问题草拟提纲;制定一个简捷的程序调试计划。

⒉上机时输入和调式自己所编写的程序。

在使用键盘时,应采用正确的指法击键,为今后正确使用键盘打下基础;应该一人一组,尽量独立思考,上机过程中出现的问题,除了是系统的问题外,一般应自己独立处理,尤其对“出错信息”,应善于自己分析判断,并充分利用开发工具提供的错误信息和调试手段解决出现的问题,及时修改与完善源程序,随时记录有价值的内容。

解决问题是学习调式程序的良好机会。

初学者切不可不编程序或抄别人的程序去上机,应从一开始就养成严谨的科学作风。

⒊程序调试通过后,应运行程序并根据事先准备的典型数据验证结果,在运行时要注意在输入不同数据时所得到的不同结果(如解一元二次方程上时,不同的a、b、c组合应得到实根、复根的不同结果)。

此时应运行几次,分别检查在不同情况下程序是否正确。

⒋为便于教师、助教检查和以后复习,请不要删除已通过的程序,包括有问题待答疑的程序,应保存在自己的工作目录内。

源程序名应能反映哪一次实验的哪一个题目,如Lab1_1_1.c 表示实验一的第1题的第一种解法,……,若有未完成调试的源程序,可以作存盘保存处理,待下一次实验继续完成。

三、实验报告内容:上机结束后,应整理出实验报告,实验报告可采用英文或中文书写,每份实验报告总分100分,实验报告必须在该次实验后的第2周星期四上午3、4节课前交到学习委员处,由学习委员按学号整理好,在上课前交到讲台上。

实验报告应包括以下内容:⒈实验目的(10分)⒉实验题目(10分)⒊程序清单(50分)(此部分要求:①含算法的伪代码描述或流程图描述;②必须包括注释。

)⒋运行结果(10分)(必须是程序清单所对应的输入、数据和打印输出的结果);①②③④ ⒌ 调式分析和体会(20分)(这是实验报告中最重要的一项,也是最容忽视的一项。

实验过程中大量的工作是程序调式,在调式过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高编程的能力。

因此,对实验的总结,最重要的是程序调试经验的总结。

调式分析也包括对结果的分析。

体会主要是指通过本次实验是否达到了实验目的,有那些基本概念得到了澄清等。

)四、作业内容:作业也应上机完成,每份作业总分100分,应包括以下内容:⒈ 实验题目(10分)⒉ 程序清单(70分)(此部分要求:① 含算法的伪代码描述或流程图描述;② 必须包括注释。

)⒊ 运行结果(20分)(必须是程序清单所对应的输入、数据和打印输出的结果)。

Lab 1 Sequence Structure⒈ 在自己的系统上运行“Hello,World”,再让程序遗漏一些部分,观察出现的错误信息。

⒉ 输入两个数,交换它们的值。

⒊ 输入三角形的三条边,计算其面积。

最好实现三条边是否能够构成三角形的判断。

Lab 2 Selection Structure⒈ 输入一个年份,判断其是否为闰年。

⒉ 读入x 的值,计算函数f (x ):x(x+2) (2<x ≤10)f(x)= 2x (-1<x ≤ 2)x-1 ( x ≤-1)⒊ 给一个不多于三位的正整数,求出它是几位数,并分别打印出各位上的数字。

⒋ 分别编写程序实现各相应功能,并验证结果,要求对数由键盘输入。

Lab 3 For Structure⒈ 从500开始,求被3、5、7除余数均为2的前50个数。

⒉ 打印形状为正方形和直角三角形的乘法九九表。

⒊求某二个数(由键盘输入)之间的素数。

⒋按下面的近似公式计算:e=1+1/1!+1/2!+1/3!+……+1/n!使误差小于给定的δ。

⒌百马百担问题。

有100匹马,驮100担货,大马驮3担,中马驮2担,两个小马驮1担。

问有大、中、小马各多少匹?⒍用二分法求下面方程2x3-4x2+3x-6=0的根,要求误差小于10-6。

Lab 4 Array ( Part Ⅰ)注意:本次实验在课堂内只要求完成前面3题。

后3题为作业题,要求自己上机完成。

每题可用函数,也可不用函数来完成每个功能的设计。

⒈产生1000—5000之间的100个随机整数,找出其中的素数,用冒泡排序法对找出的素数进行排序。

请将产生的随机数、找出的素数和排序后的素数分别输出。

⒉有一个按非递增排列好的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。

⒊输入一个字符串,统计数字‘0’、‘1’、‘2’的出现个数。

⒋将一个字符串中的字符全部变成大写字母。

⒌将某一字符数组a中下标为单号(1,3, 5,7,9,……)的元素值传给另一个字符数组b,然后输出a和b的内容。

⒍某班级有100个学生,现选举班长,有5个候选人,请统计每个候选人的票数,并用冒泡排序法对票数进行排序。

Lab 5 Array ( Part Ⅱ)注意:本次实验在课堂内只要求完成1至3题;4至6题为作业,要求自己上机完成。

必须在实验报告中完成6道题。

7至9题为选做题。

每题中的每个功能都必须用一个函数来实现。

⒈产生50—1000之间的100个随机整数,用冒泡排序法对这100个素数进行排序,然后找出其中的素数。

请将产生的随机数、排序后的随机数和找出的素数分别输出,要求每行输出10个数。

⒉假设有一个数组,存放着10个数,现输入一个数,用顺序查找法找出该数是数组中第几个元素。

如果该数不在数组中,则打印“无此数”。

⒊求一个5*5矩阵的两条对角线元素之和。

⒋编程找出一个二维数组中值最大和值最小的元素,并告知所在行号和列号。

⒌用递推法打印杨辉三角形(提示:利用二维数组)。

⒍编程求二个矩阵的乘积。

⒎找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

⒏有10个按由小到大的顺序存放在一个数组中,现输入一个数,用折半查找法找出该数是数组中第几个元素。

如果该数不在数组中,则打印“无此数”。

⒐约瑟夫问题。

M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时此人出圈,直到圈中只剩下一个人为止。

请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。

Lab 6 Function ( Part Ⅰ)注意:下列题目中,每一个功能模块都必须用函数来实现。

⒈求 m!/(n!*(m-n)!) 的值。

⒉用二分法求下面方程2x3-4x2+3x-6=0的根,要求误差小于10-5。

⒊随机产生100个200至500之间的整数,把其中的素数找出来,要求每行输出10个数。

Lab 7 Function ( Part Ⅱ)⒈编程计算X n(要求:用递归函数)。

⒉编程计算Ackermann函数Ack(m,n)(要求:用递归函数)。

对于m≥0, n ≥0, Ack(m,n)定义为:Ack(0,n)=n+1Ack(m,0)= Ack(m-1,1)Ack(m,n)= Ack((m-1), Ack(m,n-1))⒊在自己的系统上分别运行下列程序,再让其中的变量做些存储类别上的变化,观察输出结果。

main() {int a=2,i;clrscr();for (i=0;i<3;i++)printf("%4d",f(a));}f(int a) {int b=0;static int c=3;b++;c++;return a+b+c;}int a=3,b=5;max(int a,int b) {int c;c=a>b?a:b;return c;}main() {int a=8;printf("%d\n",max(a,b));}int a=3,b=5;void num() {extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main() {int a=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}int a;fun(int i) {a+=2*i;return a;}main() {int a=10;printf("%d,%d\n",fun(a),a);}Lab 8 Pointers注意:本次实验在课堂内只要求完成前面3题,后3题为作业题,自己上机完成。

每题中都必须使用指针类型。

⒈输入三个整数,要求由大到小输出。

⒉输入10个整数,将其中最大的数与第一个数对换,把最小的数与最后一个数对换。

要求:输入、处理和输出分别用一个函数实现。

⒊有一个整型二维数组,大小为mXn,要求找出其中最大值所在的行和列,以及该最大值。

请编一个函数max,m和n是该函数的形参,数组元素的值在分别用input和output函数实现。