c语言实验6答案

2024-05-15

c语言实验6答案(共8篇)

篇1:c语言实验6答案

版权:ydz 题:

1.使用函数指针编写用梯形公式计算定积分1sinxdx和102xdx1x2的值,取105。

baxi提示:将积分区间[a,b]作n等分:,hnai*h,i0,1,2,,n,在每一分段[xi1,xi]上取点i(1)近似代替曲边梯形得:

bnxi1,i(2)xi,每一小段上用梯形来af(x)dxi1f(i(1))f(i(2))xi2记上式右边为Tn,则:

ban1Tn[f(xi1)f(xi)]ni12ban11[f(x)f(x)f(x)f(x)f(xn)] 012n1ni1222.使用数组指针处理方阵,方阵的阶数定义为常量N。用数组指针作函数参数完成下列功能,每个功能编一个函数。

实现方阵的初始化; 实现方阵的输出;

实现两个方阵相加,并输出相加结果; 实现两个方阵相减,并输出相减结果; 实现两个方阵相乘,并输出相乘结果;

主函数定义两个整型二维数组,分别调用上述函数去实现功能。

程序一

#include #include double(*f)(double x);double t1,t2;double jifen(double a,double b,double(*f)(double x)){ double t=0,h,x;int i,n=100000;h=(b-a)/n;x=a;for(i=1;i<=n;i++){

t=t+0.5*h*f(x);

x=a+i*h;}

版权:ydz return t;} double g(double x){ return sin(x)/x;} double p(double x){ return 1/(1+x*x);} void main(){ t1=jifen(1,2,g);t2=jifen(0,1,p);printf(“%lfn%lfn”,t1,t2);}

程序二

#include #define N 5 void chushihua(int(*p)[N]){ int i,j;for(i=0;i

for(j=0;j

scanf(“%d”,p[i]+j);

} } } void shuchu(int(*p)[N]){ int i,j;for(i=0;i

for(j=0;j

printf(“%d ”,*(p[i]+j));

}

printf(“n”);} } void xiangjia(int(*p)[N],int(*q)[N],int(*r)[N]){ int i,j;for(i=0;i

版权:ydz

for(j=0;j

*(r[i]+j)=*(p[i]+j)+*(q[i]+j);

printf(“%d ”,*(r[i]+j));

}

printf(“n”);} } void xiangjian(int(*p)[N],int(*q)[N],int(*r)[N]){ int i,j;for(i=0;i

for(j=0;j

*(r[i]+j)=*(p[i]+j)-*(q[i]+j);

printf(“%d ”,*(r[i]+j));

}

printf(“n”);} } void xiangcheng(int(*p)[N],int(*q)[N],int(*r)[N]){ int i,j,k;for(i=0;i

for(j=0;j

*(r[i]+j)=0;

for(k=0;k

篇2:c语言实验6答案

1.循环控制

a)程序中常用到顺序结构和选择结构,但只有这两种结构是不够的,还需要用到循环结构(重复结构)

b)对于某些问题,通过原始的方法需要分别编写若干个相同或相似的语句或程序段进行处理,工作量大、程序冗长、重复、难以阅读和维护,因而C语言提供了循环控制来处理需要进行的重复操作

c)循环结构、顺序结构、选择结构是结构化程序设计的3种基本结构,它们是各种复杂程序的基本构成单元

2.用while语句实现循环

while语句的一般形式为:

while(表达式)语句

a)“语句”就是循环体,循环体只能是一个语句,可以是一个简单语句,也可以是复合语句。循环体如果包含一个以上的语句,应该用花括号括起来作为复合语句出现,否则while语句的范围只到while后面的第1个分号处

b)在循环体中应当有使循环趋向于结束的语句,如果无此语句,则循环条件始终不变,循环永远无法结束

c)执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般形式中的“表达式”,它也称为循环条件表达式

d)while语句的循环控制:当循环条件表达式为“真”(非0)时就立即执行循环体语句,当循环条件表达式为“假”(0)时就不再执行循环体语句

e)while语句的过程特点:先判断循环条件表达式,后执行循环体语句

3.用do…while语句实现循环

a)do „ while语句的一般形式 do 语句 while(表达式)a.1.为了使程序清晰、易读,建议把循环体用花括号括起来,以防看到第2行语句就误以为整个语句结束了

a.2.do „while语句的循环控制:先执行一次循环体语句,然后判断循环条件表达式,当循环条件表达式为“真”(非0)时返回再次执行循环体语句,如此反复,直到循环条件表达式的值为“假”(0)为止,此时本次循环结束

a.3.do „while语句的过程特点:先无条件执行循环体语句,再判断循环条件表达式

b)while语句与do „while语句的比较

b.1.对同一个问题,可以用while语句处理,也可以用do „while语句处理,while语句与do „while语句的结构可以互相转换

b.2.while语句可以一次也不执行循环体语句,而do „while语句至少执行一次循环体语句。因此当用while语句与do „while语句处理同一问题(循环体部分相同)时,若循环条件表达式的初始值为“真”(非0)时,则两种循环得到的结果相同,若循环条件表达式的初始值为“假”(0),则两种循环得到的结果不同

4.用for语句实现循环

a)for语句的一般形式

for(表达式1;表达式2;表达式3)语句

a.1.表达式1:设置初始条件,只执行一次,可以为0个、一个或多个变量设置初值。允许在表达式1中定义变量并赋初值,这样使程序简练、灵活方便,但所定义变量的有效范围只限于for循环中,在循环之外不能使用此变量

a.2.表达式2:是循环条件表达式,用来判定是否继续循环,在每次执行循环体之前先执行此表达式来决定是否继续执行循环体

a.3.表达式3:作为循环的调整使循环趋向于结束,例如使循环变量增值,它是在执行完循环体后才进行的

a.4.由上所述,for语句可以理解为:

for(循环变量赋初值;循环条件;循环变量增值)语句

b)关于for语句的一些说明 b.1.表达式1可以省略,即不设置初值,但表达式1后面的分号不能省略。由于for语句省略了表达式1,没有对循环变量赋初值,因而为了能正常执行循环,应当在for语句之前先给循环变量赋初值

b.2.表达式2可以省略,即不用表达式2来作为循环条件表达式,不设置和检查循环的条件。此时循环将无终止地进行下去,也就是认为表达式2始终为“真”(非0)

b.3.表达式3可以省略,但此时程序设计者应当另外设法保证循环能够正常结束,即使循环趋向于结束的操作不放在表达式3的位置,而是作为循环体的一部分,如果在循环体中没有这种语句,则循环体将无止境地执行下去

b.4.表达式1和表达式3可以都省略,只有表达式2,即只给定循环条件,但如c.1和c.3所述,应当在for语句之前先给循环变量赋初值,且在循环体中设置使循环趋向于结束的语句

b.5.表达式

1、表达式

2、表达式3可以都省略,即不设初值,不判断条件(此时认为表达式2始终为“真”),循环变量不增值,将无终止地执行循环体语句

b.6.可以把循环体和一些与循环控制无关的操作也作为表达式1或表达式3出现,这样使程序短小简洁,但过分利用这一特点会使for语句显得杂乱、可读性降低,因而最好不要把与循环控制无关的内容放到for语句中。

表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量初值无关的其他表达式。

表达式3可以是与循环控制无关的任意表达式,for语句可以在表达式中完成本来应该在循环体内完成的操作,即for语句的循环体为空语句,把本来应该在循环体内处理的内容放到表达式3中,作用也是一样的

b.7.表达式1和表达式3可以是一个简单表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。在逗号表达式中按自左至右的顺序求解,整个逗号表达式的值为最右边的表达式的值

b.8.表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非0(“真”)就执行循环体

b.9.for语句可以与while语句互相转换,二者无条件等价 即for(表达式1;表达式2;表达式3)语句 可以改写为 表达式1;while(表达式2){ 语句 表达式3;} c)for语句的执行过程 c.1.求解表达式1 c.2.求解表达式2,若此条件表达式的值为“真”(非0)则执行for语句中的循环体,然后执行第b.3步,若此条件表达式的值为“假”(0)则结束循环,转到第b5步

c.3.求解表达式3 c.4.转回第b.2步继续执行

c.5.循环结束,执行for语句下面的一个语句

5.循环的嵌套

a)一个循环体内又包含另一个完整的循环结构,称为循环的嵌套 b)内嵌的循环中还可以嵌套循环,这就是多层循环

c)3种循环(while循环、do „while循环、for循环)可以互相嵌套

6.3种循环方式的比较

a)3种循环都可以用来处理同一问题,一般情况下(循环条件表达式的初始值为“真”)它们可以互相代替

b)在while循环和do „ while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋向于结束的语句。for循环可以在表达式3中包含使循环趋向于结束的操作,甚至可以将循环体中的操作全部放到表达式3中,因此for语句功能更强,凡是while循环能完成的,用for循环都能实现

c)用while和do „ while循环时,循环变量初始化的操作应当在while和do „ while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化

d)while循环、do „ while循环和for循环都可以用break语句跳出循环,用continue语句结束本次循环 7.改变循环执行的状态

一般情况下,都是根据事先指定的循环条件正常执行和终止循环,但当出现某种情况需要提早结束正在执行的循环操作时,可以用break语句和continue语句来实现提前结束循环

7.1.用break语句提前终止循环

a)break语句可以使流程跳出switch结构而继续执行switch语句下面的一个语句,还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句,但break语句只能用于循环语句和switch语句而不能单独使用

b)break语句的一般形式为: break;c)执行break语句,流程跳转到循环体结束的花括号之外,即不再继续执行其余的几次循环而提前结束循环

7.2.用continue语句提前结束本次循环

a)有时不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下一次循环,这时可以用continue语句

b)continue语句的一般形式为 continue;c)执行continue语句,流程跳转到循环体结束的花括号之前(不是花括号之外),即跳过循环体中continue语句下面尚未执行的语句而结束本次循环,然后接着执行后面的循环过程

7.3.break语句和continue语句的区别

a)continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断循环条件是否成立

篇3:浅论C语言实验教学改革

C语言因其丰富的功能、具有良好使用的灵活性,可移植性好,特别在嵌入式系统开发方面,C语言体现了自身的优势。本人认为将“C语言”作为计算机专业学生学习程序设计的人门课程,旨在让学生掌握基本的程序设计方法,培养学生逻辑思维能力,最终达到他们能够利用C语言来解决一些问题。传统教学过程中却存在很多问题,比如概念不能充分理解;知识结构不完善;动手能力差,写出的程序多数是从课本例题模仿而来,代码中无法体现个性化的思想,更别说涉及到软件开发;以上问题是笔者从事几年的C语言教学总结而来,特别是结合自己在实验教学方面的实践经验,提出了一些解决的方法和建议。

2 C语言实验教学中存在的几个问题

1)对实验教学认识有误区。很多学校把实验课视为理论课的附属,没有将实验教学单独开课,没有单独配备相应的硬件资源(实验室)和软件资源(实验教师),甚至实验课的课时只有理论课课时的一半。C语言是一门应用性非常强的课程,归根到底要培养学生的综合编程能力!试想,作为入门语言,编程语言对于学生来说是陌生的,2课时的理论课,可以给学生讲授3-4个比较重要的知识点,而实验教学如果只配备1个学时,单单是4个重要的知识点的验证恐怕时间都不够,更别说让学生去设计实验,来进一步理解所学的知识,能够真正地将课本上的知识转化为自己掌握的一种技能。

2)实验教学的课堂内容设置不合理,无法达到实验教学的真正目的。由于某些教师精力有限,没有专门针对理论教学的进度以及内容,对实验课的内容进行认真的设计和反复的修改。导致学生在实验课上试验内容与理论课内容错位,使得学生茫然不知所措,不能消化理论课的内容,对实验课乃至整门课程失去信心和兴趣。如果失去信心和兴趣,就会对课程产生逆反心理,产生逆反心理后又直接影响到学习的兴趣,造成恶性循环。

3)综合性实验(课程设计)没有开展,或者说效果不好。综合性实验(课程设计)是检验课程开设效果的最有力的手段,也是提高学生自身编程技能的一个非常好的契机。但是,如果实验课普通实验效果都不好,这样的综合性实验对于学生来说,简直是遥远的、不可触及的。对于以后续专业课的进一步学习,埋下了隐患。

3 实验教学方教学方法的改革和探讨

针对以上提出的实验课程教学中存在的问题,我对C语言课程教学做了一些尝试,应该说还是受到了比较明显的效果。

1)将实验教学做好定位,明确实验教学的任务,将实验教学学时应该是理论教学学时的1倍或者1.5倍。我们先看看实验教学的目的:一是让学生掌握基本的程序设计算法,能够编程实现我们课后练习的一些题目,当然这是对学生的最基本要求,也是最低要求;二是,让学生真正掌握C语言这样的一个软件开发的工具,为学生以后走向工作岗位,奠定良好的基础。因为对于计算机专业的学生,通过课程设计或者综合性实验能够用C语言开发一个小的软件(哪怕只有2个或者3个功能),对于他们来讲,会有一种成就感,能够给他们学习的信心和兴趣,或许一名优秀的软件设计人员会因此而产生。

通过上面我们不难看出,实验教学,不仅要引导同学更好理解理论课中的一些算法、语法、设计思想,更重要的是,通过实验课,我们将那些枯燥的理论转化为自己的思想,成为自己编程的利器。由此可见,增加实验教学的学时数,是提高C语言教学效果的一个前提保障,没有充足的学时数,其他的改革措施无从谈起。

2)在具体教学过程中始终贯彻任务驱动的教学机制(如图1所示)。把整个学期的实验教学活动看成完成综合性实验的一个过程,学期期末有综合性实验这样的最终的任务;对于每次课程,都有具体、明确的习题配套练习,可以看成最终任务的分割。也就是,这门课程的目的就是让学生在完成一个一个的任务中潜移默化地提高编程能力和技巧。做到这样要求,教学任务明确了,学生的学习目标自然也就明确了。任务驱动的教学机制给实验教师提出了相对比较高的要求,因而教学任务的设置变成一项非常重要的工作。表现在:

(1)实验教师要具有完整的C语言的知识结构体系,把教学大纲中的重要知识点串起来,再具体分配到每个具体的学时里,让学生掌握。最后达到让学生掌握和建立C语言的知识体系结构。

(2)实验教师要加强与理论教师之间的联系。因为学生的学习进度、基本概念、基本算法的思想都是在理论课上学习的,而实验课要巩固他们的知识,要实现算法的代码设计,要提高变成技巧,可以说任务很繁重。如果实验教学在此环节上和理论教学联系不能很紧密,会造成两个本该相辅相成的教学环节脱节,学生既没有达到实验教学的目标,理论教学的内容又得不到实践,最后我们的教学效果就难以保障了。

3)思维能力和编程能力培养并重,相辅相成。

(1)为了培养学生的良好的思维方式,我们在授课过程中应该始终贯穿结构化程序设计思想和自顶向下、逐步求精的思维方式。在分析典型问题时,要从构造算法出发,着重探讨分析问题和设计算法的思维过程,加强学生思维方式的培养。以解决闰年问题为例,这个问题本身非常经典,是一般C语言课程学习完控制结构后一般都要联习的题目,我在具体的教学过程中是这样执行的:

首先画出流程图,流程图是最能体现学生解决问题思路的方式之一。

如果学生能够画出图2这样的流程图,基本上说明他已经解决了闰年问题。剩下的部分就是将流程图的思路转化为具体的Turbo C的可执行代码。可以让学生将流程图先转化成一条条的汉语语句。

S1:测试数据Y是否能被4整除;

S2:如果S1不成立,输出“不是闰年”;

S3:如果S1成立,继续判断是否被100整除;

S4:如果S3不成立,则是闰年;

S5:如果S3成立,继续判断是否被400整除;

S6:S5成立,则输出“不是闰年”;

S7:S5不成立,则输出“是闰年”;

有了清晰的思路,学生建立了解题的方法,剩下的内容就是根据C语言的语法规则将上述语句转化为C的代码即可。

(2)C语言教材中的课后习题非常丰富,许多题目的针对性也很强,教师应该对其进行归纳、整理和分类。针对同一类问题时不要逐题练习,应该在重点练习典型题目的基础上,拓展学生思路,引导学生归纳和总结求解一类间题的基本算法,达到举一反三的效果。

4 结束语

针对“C语言”教学相关的若干问题,我们提出了正确认识实验教学,摆正实验教学的位置。并将“任务驱动”的教学法引人到实验教学的各个环节中。实践证明这些教学方面的探索,在实验教学中取得了较好的教与学的双向效果。帮助学生建立了完整的课程知识体系,激发了学生的学习积极性和主动性,培养了他们的算法思维能力,提高了综合编程能力,最终完全达到了预先的教学设想和效果。

参考文献

[1]谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999.

[2]栾咏红.C语言课程案例教学模式的探究与思索[J].内江科技,2007(11):153.

篇4:C语言实验教学方法探讨

关键词:C语言;实验;教学方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21728-02

Discussion of the Experiment Teaching Method in C-programming

LIU Han-ying

(Department of Electronic and Computer, Guilin University of Technology, Guilin 541004, China)

Abstract:C-programming experiment is important part of C-programming teaching. As the result of each kind of reason, there are some disadvantages in the experiment teaching of C-programming: the experiment passing rate of national examination is low; the teacher can't instruct because of so many students; the students written down the programs without preparation. The students don't know how to do with the errors. With some teaching examples of the C-programming experiment, this paper propose some teaching methods, The experiences show that the proposals stimulated the students' enthusiasms of studying, and improved the quality of experiment teaching.

Key words:C language; experiment; teaching method

《C语言程序设计》(以下称C语言)是计算机及相关专业的一门专业基础课,是学习其他专业课程如《C++与面向对象程序设计》、《JAVA》、《数据结构》、《数据压缩》、《计算机图形学》的基础,C语言实验是C语言教学中的一个重要环节,常常占总学时的2/5以上。C语言实验教学有利于增加学生对理论知识的理解,调动学生的学习主动性,提高学生思维能力和动手能力。然而,由于各方面的原因,C语言实验教学中存在一些问题:全国等级考试实验通过率不是很高;C语言实验往往是大班上课,学生人数较多,老师指导不过来;学生课前没有预习,上机时直接输入参考程序,实验成了打字练习;英语水平不高,对错误提示无从下手;部分学生以为编译通过就是调试成功,不会使用调试工具。笔者近年来多次承担C语言实验教学任务,总结了一些教学方法和经验,下面是笔

者对C语言实验教学方法的探讨。

1 思想上重視实验环节,提高学习兴趣

由于C语言教学往往是大班教学,在考核方式上常常采用的是理论考试,部分学生不重视实验课,课前不预习,上机时就直接输入指导书上的参考程序,实验效果很差。因此,为了提高实验教学的效果,应将上机考核作为C语言考核的重要组成部分,让学生从思想上重视实验环节,做好课前预习。同时,笔者把一些用C语言程序实现的小游戏或画的图形图像演示给学生看,激发学生的学习兴趣,取得了较好的效果。

2 编写适宜的实验指导书

目前,有许多与C语言课程配套的实验指导书,这些指导书常常配有答案[1]。学生拿到指导书后,看有答案,常常不自己思考就将书上的程序录入进去,编译出错时不是根据错误提示查找错误原因,而是从头到尾地与书上程序比对,改正录入错误,遇到书上有错,就无从下手。整个上机练习成了打字练习。笔者认为,一本适宜的实验指导书应具备以下几点:

(1)实验指导书要与理论知识配套

C语言实验教学的目的是通过实验,让学生增强对理论知识的理解,学会自己编写、调试程序。因此,实验指导书的内容要与理论教学配套,有针对性地设置实验内容,且实验时间安排要合理(略晚于理论教学),参考程序与实验指导书分离。

(2)实验内容难度适宜

由于种种原因,学生能力上有很大差异,为此,在编写实验指导书时要兼顾各个能力层次的学生,设置基础题、中等难度题和较难题多个层次。笔者从历年的考试题中抽取一些具有代表性的改错题作为基础题练习;在此基础上,设置一些程序设计题让学生编写、调试;对学有余力的学生,可设置一些难度较大的题目,组成小组讨论。

3 养成良好的编程习惯

3.1 注意编程思想

算法是程序设计的精髓,语言只是表示形式,没有正确的计算机算法,就无法用计算机正确地解决问题。对于每一道题目,首先找出解决问题的算法,画出盒图,最后才是编写程序,这样可以减少出错的可能性。

3.2 使用有意义的标识符

C语言教材常常使用i,j,k,a,b,c几个字符作为标识符,很多学生在学习C++时觉得很难,其中一点就是C++中教材中的标识符较长。笔者建议学生,在编写程序时尽量使用一些有意义的字符串作为标识符,尽量不要用l作为标识符,提高程序的可读性,如输入一系列学生成绩时使用的是score1,score2……,而不是a1,a2……。

3.3 养成良好的程序录入习惯

有的学生在录入程序时不注意书写格式,在遇到错误时常常不易查找。笔者要求学生使用锯齿形的书写格式,在录入大括号、小括号、引号等时都要做到成对录入,有较地提高了程序录入的准确率。

4 改革实验辅导方法

4.1 网络教学软件的使用

传统的实验课是老师先布置实验习题,学生练习,遇到问题举手,老师解答。然而,C语言实验往往是大班教学,学生人数较多,许多问题十分相似,老师常常为同一问题解释多次,指导不过来。针对这一问题,笔者使用了红蜘蛛软件[3],这个软件可以在局域网上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并同时实现屏幕监视和远程控制等网络管理的目的。该软件是专门针对电脑教学和培训网络开发,可以非常方便地完成电脑教学任务,包括教师演示、学生示范、屏幕监视、遥控辅导、屏幕录制、屏幕回放、网络考试、网上语音广播、两人对讲和多方讨论、联机讨论、同步文件传输、提交作业、远程命令、获取远端信息、电子教鞭、电子黑板与白板、网上消息、电子举手、锁定学生机的键盘和鼠标、网络唤醒、远程关机和重启、学生机同步升级服务、远程安装、倒计时、班级和学生管理等。笔者通过文件传输功能,将实验题目(如基础改错题)发放给学生,让学生练习,然后通过提交作业功能抽一名学生的作业来讲解。

4.2 总结错误

针对一些学生英语水平不高,对错误提示无从下手的现状,笔者总结了上机时经常遇到的错误,如语法错误、逻辑错误等,罗列给学生,并从一些试题中挑选一些适宜的改错题传给学生练习,学生不用从头到尾地录入程序,提高了实验效率。

4.3 调试方法的使用

調试的目标是寻找软件错误的原因并改正错误[2],一般有以下几种调试途径:

4.3.1 蛮干法

上机时指导学生查找错误,学习使用程序调试工具,跟踪程序的执行过程,发现较隐蔽的错误,提高学生动手解决问题的能力。如学生编写如下程序计算 (用公式 )时,发现结果不对,笔者指导学生使用调试工具观察变量pi和t的值,很快找到了错误原因,同时学生也练习了调试工具的使用方法。

#include

#include

void main()

{float s,n,t,pi;

t=1;pi=0;n=1;s=1;

while(fabs(t)<1e-6)

{pi=pi+t;

n=n+2;

s=-s;

t=s/n;}

pi=pi*4;

printf("pi=%fn",pi);}

4.3.2 回溯法

从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。如上例中,用go to cursor执行到pi=pi*4,发现pi的值不对,则往回分析代码,很快可以查出是循环条件不对。

4.3.3 对分查找法

对分查找法的基本思路是,如果已经知道每个变量在程序中若干个关键点的正确值,可以用赋值语句或输入语句在程序中关键点附近“注入”这些变量的正确值,然后运行程序,并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。

4.4 让学生自己调试程序

由于学生多,问题多,为了快速地解决问题,有时老师会帮学生调试程序来提高效率。笔者认为,老师应指导学生调试程序,而不是帮学生调试程序,学生只有自己动手,动脑,才能真正学会调试方法。同时笔者鼓励学生之间互相帮助和交流,培养团结协作的精神,学生在帮助同学的同时自己也得到学习。

5 结束语

以上是笔者对《C语言程序设计》实验教学方法进行的探讨,通过实践发现,这些方法有助于激发学生学习自觉性和主动性,提高学生分析问题和解决问题的能力,达到提高教学质量的目的。

参考文献:

[1]谭浩强.C语言程序设计题解与上机指导[M].北京:清华大学出版社,2005.

[2]张海藩.软件工程导论[M].北京:清华大学出版社,2003.168.

[3]http://www.forclass.com/.

篇5:C语言实验

实验一:C语言程序调试基础

一、实验目的

1.掌握C语言源程序的编写方法和调试方法

2.学会使用VC6开发工具及调试过程的查错纠错能力。

二、任务

调试课本例子:例2.19、例3.5、例5.9

三、实验过程及结果

1.鼠标左键双击VC,打开程序;单击打开的New的页面中,单击

键,选择键,选择,在新,最后单击键,就可以建立一个新的页面。

2.在界面中输入例2.19的内容,单击

键进行调试,底下的对话框出现

一句话时,说明我们编写的程序无错,就可以单击键,来运行程序。运行结果及编写程序内容如图:

4.关闭这两个窗口,再单击

实验二:顺序程序设计

一、实验目的:

1.掌握顺序程序的设计方法;

键,选择

2.掌握输入输出控制语句。

二、实验任务与要求

1.第3章课后习题T2 2.第3章课后习题T7

三、实验过程及结果

实验三:分支程序设计

一、目的

1.掌握分支程序控制语句的语法格式及纷争程序设计方法。2.了解分支程序的条件表达式及运算规则; 3.掌握分支程序控制语句的嵌套使用方法。

二、任务

1.第4章课后习题T6 2.第4章课后习题T8 3.第4章课后习题T12

三、实验过程及结果

实验四:循环程序设计

一、目的

1.掌握循环程序的控制语句的语法规则;

2.掌握循环程序的编写方法;

3.掌握循环程序的嵌套与退出控制方法。

二、任务

1.求100~200间的全部素数。2.第5章课后习题T8 3.第5章课后习题T10

三、实验过程及结果

实验五:数组

一、目的

1.掌握数组的定义及使用方法 2.掌握字符数组的相关操作函数。

二、任务

1.用数组求Fibonacci数列的钱40项,每5个一行。2.将一个3行8列的数组A转置为数组B。3.已知字符串str1=”abcde”,str2=”hijklm”,比阿尼写程序分别实现str1与str2的连接、求长度、比较等操作。

三、实验过程及结果

实验六:函数

一、目的

1.掌握函数的定义与调用方法。2.掌握函数参数的专递方式。

3.掌握函数的嵌套调用和递归调用方法。

二、任务

1.编写一函数,用冒泡排序法实现对数组A的排序。2.编写一函数,用选择排序法实现对数组A的排序。3.编写一函数,实现对给定年year是不是闰年。4.编写一函数,实现对给定整数m是不是素数。

5.利用递归算法,编写一函数,求Fibonacci数列的第n项。

三、实验过程及结果

实验七:变量作用域

一、目的

1.了解变量的存储类型及生命周期、作用域的性质。2.准确使用局部变量和全局变量。

二、任务

1.根据变量作用域知识,分析下列程序的运行效果。2.调试程序,分析个变量的作用范围和生命期。

#include int i=5;void fun1(){ int i=5;static int j=20;i+=5;j=j-3;printf(“i=%d.j=%dn”,i,j);} void main(){

Printf(“i=%dn”,i);

int i=40;

printf(“i=%dn”,i);

fun1();

fun1();}

三、实验过程及结果

实验八:结构体

一、目的

1.掌握结构体的定义方法和使用。

二、任务

定义一日期(年、月、日)结构体,编程实现日期的输入、日期的输出、日期加上一个整型天数、两个日期数据相减等功能。

篇6:C语言实验报告《综合实验》

1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。

2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。

二、实验内容

编写一个学生信息排序程序。要求:

1、程序运行时可输入n个学生的信息和成绩(n预先定义)。

2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。

3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。

1、使用函数方法定义各个模块。

三、步骤与过程

篇7:c语言实验报告

学生姓名: 学 号: 专业班级:

√ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验类型:□ 验证 □一.实验名称

实验3 控制语句

二.实验目的

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

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

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

三.实验内容

1. 选择结构程序设计; 2. if语句的使用;

3. 使用switch语句实现多分支选择结构; 4. 三种循环语句的应用; 5. 循环结构的嵌套;

6. break和continue语句的使用。

三.实验环境

PC微机

DOS操作系统或 Windows 操作系统 Visual c++程序集成环境

四.实验内容和步骤

本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。学会单步调试和断点调试程序及变量跟踪方法。

1. 任意输入4个整数,要求按由小到大的顺序输出。

2.编程实现:输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。

要求:(1)将变量定义为整型。

(2)输入整数前,利用puts()/printf()给出提示信息。

(3)输出结果时要有必要的说明,例如:输入358时,显示358 is 100 to 999。(4)该程序利用if语句实现。

运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。

3.编写程序:根据公式

261111......,输出 π的值。

122232n2要求:

(1)变量π为单精度类型,n为整型;

(2)计算当n的取值分别为20,50,100,200时的π值,说明什么问题?

(3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4 为止。

(4)对修改后的程序,输出π值以及总的项数n。输出格式为:π=值;n=值。

4.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如:输入12,其因子为1,2,3,4,6,12)。

要求:

(1)采用while循环语句实现。

(2)输出格式为:Input:12 Output:1,2,3,4,6,12 5.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。学生的成绩可分成5个等级,90-100分为A级,80-89分为B级,70-79分为C级,60-69分为D级,0-59分为E级。要求在输入负数时,给出错误提示。

① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。

② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束 6.某航空公司规定:在旅游旺季7~9月份,如果订票20张及其以上,优惠票价的10%,20张以下,优惠5%;在旅游淡季1~6月份,10~12月份,订票20张及其以上,优惠票价的20%,20张以下,优惠10%。编写一个C程序,根据月份和旅客订票张数决定优惠率。已知机票单价,请算出旅客的总付款。请使用不同的测试数据进行测试。7.计算并输出1000以内最大的10个素数以及它们的和。

要求:

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

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

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

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

五.实验数据及处理结果

/*写出实验内容的算法(用流程图表示)、完整的程序、结果并能对结果的正确性及上机时产生的问题进行分析,注意程序变量命名应见名知意、有适当的注释,程序书写规范*/ 【习题1】

【设计思路】 :输入a,b,c,d四个数,将四个数两两进行比较,如果前者大于后者,则将两数的值交换,否则不变。这样重复操作6次,最后输出a,b,c,d的值,则a,b,c,d从大到小排列。

【数据输入】输入整型变量 a,b,c,d 【数据输出】输出 a,b,c,d的值,使其从大到小排列。【源程序实现】

#include main(){

int a,b,c,d,t;printf(“please input four numbers(example:1 2 3 4):n”);scanf(“%d %d %d %d”,&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}/* 实现a,b的交换 */ if(a>c){t=a;a=c;c=t;}/* 实现a,c的交换 */ if(a>d)

} {t=a;a=d;d=t;}/* 实现a,d的交换 */ if(b>c){t=b;b=c;c=t;}/* 实现b,c的交换 */ if(b>d){t=b;b=d;d=t;}/* 实现b,d的交换 */ if(c>d){t=c;c=d;d=t;}/* 实现c,d的交换 */ printf(“%d,%d,%d,%d”,a,b,c,d);【结果及截图】

答:输入64 3 5 23,运行结果为3,5,23,64,其截图如下:

输入格式的提示。

【修改后程序实现及结果】 /*习题2、4请添加此步*/

【问题分析】 输入数据时,没有按正确格式输入,所以在输入数据之前,应该给出一个【习题2】

【设计思路】

【数据输入】 输入整型变量x。【数据输出】 输出x的范围。【源程序实现】

#include

main()

{

int x;

printf(“Please input a number:n”);

scanf(“%d”,&x);

printf(“%d is ”,x);

if(x<10)printf(“less than 10n”);

else if(x<100)printf(“10 to 99n”);

else if(x<1000)printf(“100 to 999n”);

else printf(“more than 1000n”);

return 0;

}

【结果及截图】

答:运行程序,分别输入9,21,321,4321,截图如下:

【习题3】

【源程序实现】

#include

#include

main()

{

int n,N;

float pi,sum=0;

printf(“Please input a number:nN=”);

scanf(“%d”,&N);

for(n=1;n<=N;n++)

sum+=1.0/(n*n);

pi=sqrt(6*sum);

printf(“pi=%f”,pi);

return 0;} 修改后的程序: #include #include main(){

int n=0;

float pi,sum=0;

do

{

n++;

sum+=1.0/(n*n);

}while(1.0/(n*n)>=1e-4);

pi=sqrt(6*sum);

printf(“pi=%f;n=%d”,pi,n);

return 0;}

【结果i及截图】

答:计算当N的取值分别为20,50,100,200时,截图如下:

【结果ii及截图】

【习题4】

【源程序实现】

#include main(){ int num,i=2;printf(“Input:”);scanf(“%d”,&num);printf(“Output: 1”);/*第一个因式为 1*/ while(i<1000){ if(num%i==0)printf(“,%d”,i);i++;} return 0;}

【结果及截图】

答:输入30,得其因式为 1,2,3,5,6,10,15,30,截图如下:

【习题5】

【源程序实现】

If 语句

#include main(){

int num;

printf(“Input:”);

scanf(“%d”,&num);

if(num<0||num>100)printf(“The number is wrong!”);

else if(num<=59)printf(“E”);

else if(num<=69)printf(“D”);

else if(num<=79)printf(“C”);

else if(num<=89)printf(“B”);

else printf(“A”);

return 0;}

Switch 语句

#include main(){

int num,n;

printf(“Input:”);

scanf(“%d”,&num);

n=num/10;

switch(n)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5: printf(“E”);break;

case 6: printf(“D”);break;

case 7: printf(“C”);break;

case 8: printf(“B”);break;

case 9:

case 10: printf(“A”);break;

default: printf(“error!”);

}

return 0;}

【问题分析】

【习题6】

【源程序实现】

#include main(){ int month,num;float price,cost;printf(“month=”);scanf(“%d”,&month);printf(“nprice=”);scanf(“%f”,&price);printf(“nnum=”);scanf(“%d”,&num);if(month>=7&&month<=9){if(num>=20)cost=price*0.9*num;else cost=price*0.95*num;} if((month>=1&&month<=6)||(month>=11&&month<=12)){if(num>=20)cost=price*0.8*num;else cost=price*0.9*num;} printf(“cost=%f”,cost);}

【习题7】

【源程序实现】

#include #include void main(){ int num,i,sum=0,count=0;for(num=999;count!=10;num-=2){for(i=2;i=sqrt(num)){count++;sum+=num;printf(“%d+”,num);} } printf(“b=%d”,sum);} 【结果及截图】

六.简答题

篇8:浅谈C语言实验教学方法

1 现阶段存在的问题

传统的C语言程序设计课程的教学是以教师课堂讲授为主的教学方式, 学生完全在教师的讲解下学习知识。但是由于大多数学生基本上是初次接触程序设计, 加之教科书内容抽象, 概念复杂, 规则较多, 使用灵活等在实际的教学过程中反映出很多问题。具体表现在以下方面:

1.1学生没有明确的实验目标, 实验兴趣不大。

1.2现有教材中上机实验立足于C语言本身的一些语言规则, 和实际开发脱节, 没有较容易理解和生动有确的范例, 比较死板、枯燥。

1.3现有实验大多注重语句、语法等, 没有把编程解题思路和程序测试放在首位, 对学生分析问题和解决问题的能力训练不够。导致学生在上机实践中编写程序能力不强, 很多学生上实验课时只是机械地把作业本写好的程序输入电脑。

1.4考核形式单一, 缺乏实践考核。传统的程序设计语言的考试考核要求简单, 考试形式单一, 以期末笔试为主;平时成绩主要侧重于考勤、作业、实验报告。不重视上机实践能力的考核, 只偏重于理论考试, 这导致学生对上机实践的不重视。

基于以上问题, 致使C语言课程教学质量不高, 学生普遍编程能力差, 如何提高C语言程序设计的教学效果就显得尤为重要, 这就要求我们在教学改革方法上有所突破。因此, 在实践教学环节中, 为了提高教学质量, 使学生从枯燥乏味的书本中走出来, 教师必须利用现有资源重新整合教学内容, 改进单一、乏味的教学方法, 力求显现在学生面前的知识有趣, 以提高学生的学习兴趣。

2 教学改革方法

2.1 采用多媒体教学手段。

利用多媒体技术进行信息的展示配合课堂讲解可以大大的提高课堂的教学效率。在教学过程中利用多媒体课件, 通过程序演示的方法教学, 让学生快速掌握编程环境以及程序调试的方法, 激发学生对新知识的联想, 不仅可以提高课堂的教学效率, 还可以帮助学生建立知识结构, 培养良好的自学能力和积极思考的习惯。

2.2 根据教学内容, 精心设计实验内容。

为了激发学生的学习兴趣, 提高学生学习的主动性, 并且能够让学生更好地掌握所学知识, 教师应该根据教学内容, 合理设计实验内容, 使实验内容既联系实际需要又能够让学生感兴趣, 使学生能够运用所学知识解决问题。

2.3 引入综合性实验, 激发学生学习兴趣。

以往大多数同学在学完C语言后, 普遍反映能看懂例题, 但遇到实际问题就无从下手, 这主要是教材上的例题缺少实际意义。为此, 我们在实践教学中设计综合性实验的上机内容。综合性实验是以学生为主体, 将学生分成几个项目小组, 小组成员共同选择题目, 商讨编程方法和具体分工模块。通过引入综合性实验大大地激发学生学习兴趣, 小组成员充分发挥自己的学习主动性和研究能力, 使孤立的编程经验融入到综合性实验中去, 学生对程序设计方法有更深入的体会, 对培养学生的逻辑思维能力、合作能力和创新能力有很大帮助。

2.4 充分利用网络资源, 提高教学效率。

在实验教学过程中, 充分利用网络平台教学会有良好的教学效果。首先, 实验室安装网络教室软件, 配置教师机, 上课时老师布置本次课实验内容, 让学生自己练习, 然后所有学生通过网络将抽出的作业拷贝到自己的计算机上, 随机抽出一个学生的作业作为示例, 由教师在教师机上边调试边讲解, 学生通过投影屏幕看教师的讲解, 并操作自己的计算机。每次试验结束, 通过网络教室平台把实验中出现的普遍问题进行集中讲解, 使学生及时了解自己学习中的问题以便避免或改正。

2.5 采用任务驱动教学法的教学模式。

任务驱动教学模式是指教师把教学内容设计成一个或多个具体的任务。让学生通过完成具体的任务, 掌握教学内容。有了学习任务, 教师才能帮助学生有效地学习, 使预期的学习结果得以实现。它打破了传统教学方法中注重学习的循序渐进和积累的老套路, 是一种学生主动学习、教师加以引导的教学方法;不再按照教学内容的从易到难的顺序, 而是以完成任务作为驱动进行教学。任务驱动教学法符合探究式教学模式, 适用于培养学生的创新能力和独立分析问题、解决问题的能力。在C语言程序设计课程教学过程中, 让学生以一个个具体的任务为线索, 把教学内容巧妙地隐含在每个任务之中, 让学生自己提出问题, 并经过思考和教师的点拨, 自己解决问题。从而培养出独立探索、勇于开拓进取的自学能力。

2.6 改革考核方式。

建立一个服务于课程目标的学生学习评价方法是一项非常重要的工作, 考核不是目的, 以考促学才是考核的本质。传统的笔试考核方式已不能满足课程的需要, 为使考核真正发挥“以考促学”的作用, 我们改革了考核内容和考核方式, 重视对学生学习过程的考核, 重视实际动手能力的考核, 侧重考核学生对知识的融会贯通和灵活运用能力。具体措施如下:

(1) 单一的笔试变为复合试考核, 从多方面对学生进行考核。课程总成绩由平时成绩、实验成绩、期中成绩、期末成绩四部分组成。期中平时成绩考核包括出勤、随堂实训、课堂提问、作业等;实验成绩考核针对学生上实验课的实验成绩。

(2) 期末上机考试题型包括调试程序题、程序改错题、编写程序题等, 重点考查应用性较强的题型。考核学生综合知识运用能力、实际编程能力和实际操作能力。

实践表明, 这种考核方法不但能更客观地反映学生的学习情况, 同时也能促进学生学习, 起到良好的教学效果。

结束语

C语言的实验教学在该课程的教学过程中占有举足轻重的作用, 现通过总结多年来的教学经验和教学改革体会, 提出C语言课程加强实践教学改革、提高学生动手能力的思路和方法, 使学生通过本门实验课程的学习能够很好地培养编程能力和程序设计思维能力, 真正实现在实验教学中培养学生分析问题与解决问题的能力。

摘要:通过分析C语言实验教学中存在的问题, 采用现代化教学手段对C语言实验教学改革提出了一些思路和方法, 提高了C语言课程的教学质量, 改善了教学效果。

关键词:C语言,实验教学,教学方法

参考文献

[1]谭浩强.C语言程序设计[M].第三版.北京:清华大学出版社, 2005.

[2]谭浩强.C语言设计题解与上机指导[M].第三版.北京:清华大学出版社, 2005.

[3]胡尊美.C语言程序设计实验教学改革探讨[J].福建电脑, 2010.

[4]张道好.“C语言程序设计”课程教学方法的研究与实践[J].安庆师范学院学报:自然科学版, 2008.

上一篇:北京化工大学招生简章下一篇:新生幼儿园开学的祝福语