C语言实验报告《逻辑结构程序设计》(精选11篇)
C语言实验报告《逻辑结构程序设计》 篇1
C语言程序设计实验报告
实验二 循环结构程序设计
班级 2012196 学号 201219628 姓名 李明月
一、实验目的
(1)掌握用while语句,do-while语句和for语句实现循环的方法;(2)掌握循环结构的嵌套;
(3)掌握break语句和continue语句的使用方法。
二、实验内容及步骤
1.相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。国王能兑现他的许诺吗?
程序1:试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦子合多少立方米?(已知1立方米麦子约1.42e8粒)总粒数为:sum=1+2+22+23+„+263 程序代码:
#include
for(i=1;i<=63;i++)//用for循环语句实现循环运算 { t=t*2;sum+=t;//循环表达式 } printf(“总麦粒数为:%fn”,sum);v=sum/1.42e8;printf(“折合体积为: %f立方米n”,v);//对结果进行输出
return 0;} 运行结果:
2.求完数。
程序2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,输出所有的完数(要求:一行显示6个数);
程序代码:
#include
sum=0;for(j=1;j
if(i%j==0)
{
sum=sum+j;
} } if(sum==i)
{ printf(“ %d”,i);
n=n+1;
if(n%2==0)
printf(“n”);
} } printf(“n”);return 0;} 运行结果:
3.打印九九乘法表
程序3:编程输出如下上三角形式的九九乘法表。2 3 4 5 6 7 8 9-------n“);for(i=1;i<10;i++)//i { for(j=1;j<=i;j++)// printf(” “);for(j=i;j<10;j++)//j printf(”%-2d “,i*j);// printf(”n“);}
代表行 输出空格达到来使得向右对齐代表列
输出行与列的乘积 3 1 2 3 4 5 6 7 8 9
运行结果:
三、问题讨论
break语句和continue语句在循环结构中使用时有何区别?举例说明。
break语句是跳出整个循环过程,不再判断执行循环的田间是否成立,并且break语句不能用于循环语句和switch语句之外的任何其他语句中。而continue语句则只是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
例子:
#include
printf(”%d“,i);} printf(”n");return 0;} 输出:
但是换成break之后:
四、实验心得
个人感觉对于这几个循环语句还是for循环最为灵活,不进可以用于循环次数一句in个确定的情况,还可用于不确定的情况下,它也完全可以代替while语句。并且是程序看起来更为简洁明了。
C语言实验报告《逻辑结构程序设计》 篇2
在C语言实验中,主要是引导学生突破传统的思维方式,培养学生读、写程序和调试程序的能力以及提高上机的学习兴趣和自主实验的方法技巧等。以下是笔者结合教学实践,从几个方面总结如何加强实践环节的教学。
1 编写符合学生实际情况的实验讲义,注重学生综合实验能力的培养
目前,C语言实验方面的教材和参考资料很多,但是绝大部分内容广泛,针对性不强,不好直接拿来当作学生的实验指导书,主要有以下几个原因:第一,学生没有明确的实验目标,实验兴趣不大。上机时一些学生无所事事或玩游戏,不但害了自己,还影响其他同学。第二,现有教材中上机实验都立足于C语言本身的一些语言规则,和实际开发脱节,没有较容易理解和生动有趣的范例,比较死板、枯燥。第三、现有实验大多注重语句、语法等,没有把编程解题思路和程序测试等放在首位,对学生分析问题和解决问题的能力训练不够。为此,教师需要结合自己的教学经验,针对专业特色和教学要求编写针对性较强的实验指导书,以达到以下几个目的:(1)每个实验目的明确;(2)明确实验预习内容,让学生每次实验都作好预习准备;(3)实验指导部分重在指出此次实验的重点内容、不易理解和易出错的环节,而不是理论教材的重复讲述;(4)精选实验题目,以达到每一道题都能体现一个或多个知识点,并较多地设置“陷阱”,尽量让学生出错,把问题留给学生去思考和解决。根据难易程度分必作题和选作题,必作题要求在上机时间内完成,选作题供学有余力的同学参考,以满足不同层次学生的需求。
2 规范实验活动过程,量化评分标准
学生是实验的主体,要提高实验教学效果,学生必须要对实验有足够的兴趣和重视。然而,认为实验课无关紧要的思想还是比较普遍,因此作为实验教师就应当制定一些规章制度来规范整个实验过程,在C语言实验教学过程中实验教学过程中主要从以下几个方面进行规范。
2.1 检查实验预习报告
由于是程序设计课程,如果学生上机时才来思考、写程序和调试,绝大部分同学根本不能完成实验任务,甚至根本没法动手。为了提高实验教学效果,在自编的实验指导书中设有“预习与思考”内容。要求学生在上课之前思考相关问题并将“实验内容”部分的源程序写好。每次上课前,老师严格检查实验预习报告,凡没有预习的同学一律不允许进实验室。这样,可以促使学生对相关的内容进行一定时间的预习和思考,实验教学效果较明显。
2.2 严格考勤制度和实验现场考评
在实验教学过程中应注意培养学生的动手能力、独立科研能力及合作精神,绝不允许“一人动手大家看”这种“放羊式”现象出现。学生在做完实验后都必须由教师检查其结果,打分后方可离开,凡无结果或结果不理想者,必须补做或提供条件让其重做,促使学生在实验中勤动手,也使学生们具有成就感。对于部分综合型的实验尤其强调分工合作,实行小组长负责制,争取小组成员一起协调配合完成。
2.3 认真批阅实验报告加强反馈
每次实验结束,要求学生上交实验报告。对每一份实验报告都认真批阅,在不正确的地方作出批注,并提示学生错误的原因让他进一步思考;对表现好的学生下评语给予鼓励。这样做有几个好处:(1)能够检验学生上机实践的效果;(2)能及时发现和校正学生所出现的问题;(3)能够激发学生对此门实验课程的学习兴趣;(4)老师能清楚地了解学生对相关知识的掌握情况,教学更加有针对性。实践证明,认真批阅实验报告后,下次同学们上机时会更认真,所写的实验报告更工整、规范。
2.4 量化评分标准
实验课不同于理论课,实验操作能力是评价学生成绩的一个主要方面,不能仅以试卷的形式来评分,因此需要制定了严格的评分标准,将学生们在课堂上的表现以分数形式量化,比如可这样规定(实验成绩30分):其中操作和实验结果10分、实验报告5分、实验考试5分、提问5分、纪律5分:包括迟到早、旷课、环境整洁等。这样可以让学生有紧迫感,杜绝“放羊”现象的发生。
3 改革实验教学方法
在以前的实验教学中,老师在上机之前将实验过程中可能涉及到的问题先作讲解,在实验过程中,当学生问到问题时,马上给出正确的解决方案,甚至帮学生将问题解决,很少让学生去思考。这样可能下次学生遇到相同的问题时仍然没法解决。然而,学生在整个实验过程中,是否积极开动脑筋,所收到的效果是大不一样的。现在,在教学过程中切实采用“启发式”教学方法,主要体现在:(1)在课前,针对本次实验的内容提出几个问题让学生思考后作答,这样就会促使学生应用所学过的理论知识对教师所提的问题积极思考,并通过实验来验证解决;(2)对学生在实验过程中所遇到问题,并不马上将解决的方法都告诉学生,而是引导学生分析,在什么情况下才会出现这种错误,如果要解决它有哪几种思路,留几分钟的时间给学生自己思考。比如针对以下3个C语句:int b=7;float a=2.5,c=4.7;a+(int)(b/3*(int)(a+c)/2)%4,让学生计算表达式的值并上机验证。采用的教学方法是先让学生用笔计算,之后上机验证,看两个结果是否一致。一般会发现一部分学生出错,就可提出以下几个问题供他们思考:(1)整个表达式的结果是int型还是float型?(2)(int)(a+c)的结果是多少?是整型还是实型?(3)两个整型数据相除结果是什么类型?(4)“%”运算符的功能是什么?左右两边的数据要求是什么类型?
比起“填鸭式”的灌输,“启发式”教学方法可以让学生积极开动脑筋思考,对本实验的理解就会更加深刻,学到的知识也更扎实。
4 设计综合性的实验
以往大多数同学在学完C语言后,普遍反映能看懂例题,但遇到实际问题就无从下手,这主要是教材上的例题缺少实际意义。为此,我们可以设计短期任务与长期任务结合的上机内容。以一个大题目作为长期任务,再按不同功能模块分解开来,形成一个个短期任务。每一章学过之后要求完成一项或几项编程作业,而各章的编程作业不是孤立的,而是相互联系的,实际上它们都是一个较大型较复杂程序的组成部分。这样就可以使学生的任务形成一种连贯性,在整个学科的学习过程中始终都有一个总任务的驱动,而学生又在一个又一个短期任务的驱动下,体验着一次又一次迈向成功的喜悦。例如,以“学生成绩管理系统”为课程设计的长期任务,从常用输入/输出语句printf和scanf开始,让学生编写主函数并在主函数中调用若干个空函数形成一个文本型菜单的雏形;学习常用数据类型后,再编写一个验证密码输入的函数;选择结构后,要求编写一个菜单选取函数;循环控制和数组后,要求建立班级课程的成绩输入输出函数;学完结构体类型后,要求使用结构体数组来存储和处理学生的信息;学习链表后,要求利用单链表动态管理学生的成绩;最后在“文件”这一章,要求利用文件操作完成学生成绩管理。当学完整个课程,完成了平时要求的各项编程作业之后,就会发现,原来自己完成的远不是零碎的程序段,而是在制作程序的各个部件,只要通过简单的程序拼装,就可以构成一个比较复杂的程序。这也在潜移默化中培养了学生采用各个击破的方法解决实际问题的意识。最后,学生从整体的角度来审视整个程序的设计,并通过上机进行综合调试,达到提高编程能力的目的。
5 采用协作方式的实验组织形式
协作学习由David W.和Roger R.Jonson教授提出,是学生以小组形式参与、为达到共同的学习目标、在一定的激励机制下最大化个人和他人习得成果,而合作互助的一切相关行为。协作学习是一种通过小组或团队的形式组织学生进行学习的一种策略。小组成员的协同工作是实现班级学习目标的有机组成部分。小组协作活动中的个体(学生)可以将其在学习过程中探索、发现的信息和学习材料与小组中的其他成员共享,甚至可以同其他组或全班同学共享。在此过程中,学生之间为了达到小组学习目标,个体之间可以采用对话、商讨、争论等形式对问题进行充分论证,以期获得达到学习目标的最佳途径。学生学习中的协作活动有利于发展学生个体的思维能力,增强学生个体之间的沟通能力以及对学生个体之间差异的包容能力。此外,协作学习对提高学生的学习业绩、形成学生的批判性思维与创新性思维、对待学习内容与学校的乐观态度、小组个体之间及其与社会成员的交流沟通能力、自尊心与个体间相互尊重关系的处理等都有明显的积极作用。
采用协作方式来组织实验,是值得广大教师探讨并推广的一种形式。在C语言实验教学过程中,在尊重学生个体差异和一人一机基础上,利用局域网,将学生分成小组进行协作实验,将实验心得体会、结论等在网上共享。改变以前那种各自为阵,互不往来的实验组织方式。协作学习对提高学生的学习业绩、形成学生的批判性思维与创新性思维、对待学习内容与学校的乐观态度、小组个体之间及其与社会成员的交流沟通能力、自尊心与个体间相互尊重关系的处理等都有明显的积极作用。
6 结束语
C语言的实践教学在该课程的教学过程中占有举足轻重的地位,本文通过对C语言课程多年的教学经验和教学改革的实践和体会,提出了增强实践教学和加强学生动手能力的培养想结合的思想,使学生在实践教学的同时,也锻炼和培养了都手能力,为大学计算机语言课程的实践教学提出了一个新的思路和方法。当然,对于实验课的教学,还有许多方面需要我们进一步完善和提高。
摘要:《C语言程序设计》是高校计算机教学的一门基础课,实验教学在其中占有非常重要的地位。本文就如何强化C语言实验教学进行了探索,并提出了一些可行的方法。通过教学实践表明,这些方法和措施能有效地提高教学效果以及学生的动手能力。
关键词:C语言,实验教学改革,探讨
参考文献
[1]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999.
C语言实验报告《逻辑结构程序设计》 篇3
【关键词】C语言 程序设计 实验 考核体系
【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)37-0234-01
1.引言
C语言程序设计(实验)通过上机实践,可以帮助学生巩固课堂教学的理论知识,真正体现学生将知识“内化”的过程[1],意在培养学生分析问题、解决问题的实际动手能力和创新能力。传统的实验课程考核方式单一,不能公正的评价学生的实际综合能力。为了全面培养学生的学习兴趣、全面考查学生的综合知识点,全面注重学生的创新能力和实践能力的提高,以达到培养创新人才的目的,切实推进课程考核改革及考核体系已经刻不容缓[2]。
2.课程简介
程序设计基础是一门专业基础课,这门课通过全面、深入、系统地介绍程序设计方法和程序设计语言,使学生初步建立起程序设计的基本概念,通过学习一种典型的程序设计语言(C语言),初步掌握程序设计方法,具有一定的程序设计能力。我院的程序设计基础(C语言)分上下两个学期,程序设计基础(一)和(二),程序设计实验是单独的一门课程,有程序设计基础(一)实验和(二)实验,实验内容主要是辅助,强化理论各个章节的知识点,提高学生的动手能力为目的进行设计的。
本考核体系是基于程序设计基础(一)实验设计的。我院程序设计基础(一)主要的内容有:数据的表示、组织和处理、程序的基本结构控制(顺序、选择和循环)。
3.現行的考核方式
现行的考核方式比较单一,是从三个方面进行成绩给定:(1)考勤;(2)实验报告;(3)创新设计。这里的(2)和(3)都是以实验报告来给定成绩,其中一部分以实验报告的书面结果给定成绩,另一部分以答辩实验报告的方式给定成绩。现行的考核方式不能公正的评定学生的实际综合能力,也没有促进学生进行创新设计。
4.全程考核体系的构建
全程考核体系意在促进学生核心能力的提升,在学习过程和学习结果两个维度上设置考核指标:过程考核可以提高课程的教学质量,培养学生的学习能力以及提高学生的协作能力、表达能力、沟通能力等综合素质;结果考核目标是使学生掌握基本理论、基本知识的基础上增强职业素养与专业技能,提高分析问题及解决问题的能力。
全程考核体系:
(1)考勤
考勤是学生学习的基础和保证,能促使学生养成遵章守纪的习惯,以培养学生进行自我管理。每次实验使用E-learning系统进行签到记录。
(2)实验报告
实验课中,教师观察、了解学生学习的过程,学生参与课堂活动的广度和深度,学生学习过程中表现出来的解决问题的能力。而实验报告是实验过程中唯一存档的资料,是值得重视的环节。教师根据学生的实验报告的完成步骤、完成程度以及答辩等对每次实验进行综合评价。
(3)综合大作业
为培养学生的创新能力及实践工程能力,让学生以三人一组,综合运用所学知识,共同自主学习、相互启发、收集资料、团队协作开发一个趣味性、实用性的小系统。
大作业从三个方面给定成绩:一是系统的整体评价;二是团队分工;三是团队成员各自答辩情况。
成绩给定之一:系统的整体评价包括科学正确性、趣味性/适用性、界面的清晰性。成绩给定之二:根据团队的分工,评价团队各成员的工作量。成绩给定之三:团队成员各自的答辩情况加入各自的成绩。
(4)期末无纸化考试
为对学习结果进行公正的考核,且激发学生对C语言的热爱,我们用C语言编写了一个无纸化考试系统,并让学生观摩编制考试系统中的主要算法。考试系统的中的试题均为编程题目,按照实验教学大纲的知识模块将试题划分成几个组,每个组中的题目难度相当,考试系统从每个组中抽取一道编程题目,随机组成程序设计试卷。
考试过程中,为保证公正,避免学生考试上网查阅资料,使用E-learning系统控制学生,禁止其使用电脑的浏览器、U盘。
考试成绩从三个方面给定:一是程序结果,单纯地考核程序运行的正确性;二是程序设计思路;三是理论基础知识。
5.结束语
本考核体系应用于本学院15级数字媒体专业,将考核贯穿于整个学习过程中,调动了学生学习的兴趣,学生的实践能力和创新能力得到了一定的提升,能更公正地评价学生的综合能力,学生也表现出了对该门课程的热情和自信,本考核体系得到了学生的一致认可。
参考文献:
[1]王丽娜,吕红,张杰,任颖.《计算机程序设计实验》课程的教学改革与实践.计算机工程与科学.2014年.第A1期.
C语言实验报告《逻辑结构程序设计》 篇4
二、写一个函数intisprime(intn),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。
三、写一个函数reverse(chars[]),将字符串s[]中的字符存储位置颠倒后重新存于s[]中。试分别用递归和非递归两种形式编写。
四、写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。要求:把预备知识、步骤、程序框图、调试好的程序及存在的问题写在下面(不够可以附页)。
#include
#include
intdigit(int n,int k);
intisprime(intn);
void reverse(chars[]);//非递归实现
void reverse1(chars[]);//递归实现
int digit(int n,int k)
{
int m1,m2,i;
m1=n;
m2=0;
while(m1!=0)//统计n数字的位数
{
m1=m1/10;
m2=m2+1;
}
if(k<=0||k>m2)return 0;//不能正确截取
m1=n;
for(i=1;i m1=m1/10; m2=m1%10;//取第k位 return m2; } intisprime(intn)//是素数返回1,是合数返回0 { int i; if(n<0) n=-n; if(n==1)return 0; for(i=2;i<=n/2;i++) if(n%i==0) break; if(i>n/2) return 1; else return 0; } void reverse(chars[],int len)//非递归,字符串倒置 { int i;char ch; for(i=0;i { ch=s[i];s[i]=s[len-1-i];s[len-1-i]=ch; } } voidreverse1(chars[],int m,int n)//递归方法实现 { char ch; ch=s[m];s[m]=s[n];s[n]=ch; if(m<=n) reverse1(s,m+1, n-1); } void main() { int n=123456,k=4,len; char str[80]=“abcdefghij”,str1[80],str2[80]; if(digit(n,k)==0) printf(“%d输入错误n”,k); else printf(“%d的右边第%d位是:%dn”,n,k,digit(n,k)); if(isprime(k)==0) printf(“%d是合数n”,k); else printf(“%d是素数n”,k); len=strlen(str); printf(“原字符串n”); strcpy(str1,str); puts(str1); reverse(str1,len); printf(“倒置以后的字符串n”); puts(str1); 实验名称 ____ C程序的运行环境和运行C程序的方法_学期日期 同组人李江涛指导老师_杨雪松___________成绩___________------------------------- 【实验目的】: 1.了解所用的计算机系统的基本操作方法,学会独立使用该系统 2.了解在该系统上如何编辑、编译、连接和运行一个C程序 3.通过运行简单的C程序,初步了解C源程序的特点 【实验原理及相关知识】:(此处请简短概述一下就可以) 【实验设备】:(正确填写每次实验所用的设备型号) 【实验内容】:(此外按实指导书的要求写自己设计的东西) 【实验过程】: 【实验总结】:(此处写实验完成情况及对相关结果的分析总结) 【实验心得及其他】: 请各位同学认真添写实验报告,不要抄袭,尽量用自己的语言,自己的想法完成实验及 关键词:实验教学,立体化教材,网络学习平台,过程性评价 0 引言 《C语言程序设计》是计算机专业以及理工类非计算机专业一门重要的基础课程, 该课程作为一门程序设计语言的入门课程, 不仅要求学生掌握一门高级程序设计语言, 更重要的是学习程序设计的思想, 培养学生良好的程序设计风格和思维方式。衡量学生是否真正掌握了这门课程, 不仅仅是熟悉了语法, 掌握了一些算法, 更重要的是, 能够利用所学的知识独立解决一些问题, 因此这门课程是一门实用性很强的课程。切实加强实践教学环节重视对学生自主学习、研究能力和创新能力的培养, 对于提高C语言程序设计课程的教学质量具有重要的意义。鉴于此, 探索对实验教学的改革对提高该课程的教学质量有着重要的作用。多数任该课程的老师都普遍反映, 一些学生对编程实验兴趣不大, 尤其是进行到课程相对较难的内容时, 更是如此。这就要求我们必须重新审视该课程实践教学环节所面临的种种问题, 以期得到很好的解决。 1 存在的问题 1.1 实验课时间相对较少 在C语言的教学中, 实验课的时间占课程的三分之一, 明显感觉学生无法按时完成实验任务。较少的实验时间让学生无法在实验课上完成当次实验所要完成的任务, 只能依靠学生课下自己找时间再继续完成, 这样势必会存在一些问题, 学生可能因为在完成实验任务的时候, 对于遇到的问题不能及时得到辅导与解决, 而会“知难而退”, 大大削减了学生对课程学习的积极性。 1.2 实验教材与教学资料有待完善 目前大部分实验教材都是实验指导与习题集合二为一, 实验项目基本上都是编写程序, 而每一个实验题目都可在本书中找到答案, 学生只要把源程序输入计算机, 进行简单的调试就可以得到实验结果 , 用不着去温习、思考和创新, 因此, 一旦布置一些实验指导书以外的问题, 或者将原有的问题进行扩展, 大部分学生就会束手无策, 不知如何解决。这样不利于培养学生循序渐进的发现问题、分析问题、解决问题的能力和创新能力。 1.3 实验教学与理论教学结合不紧密 传统的语言程序设计的实验教学就是上机调试程序, 只追求将程序调试通过就万事大吉, 但往往结果却事与愿违, 很多同学独立解决一个问题, 不是想不出问题解决的算法, 就是即使有了算法, 编写出来的程序也是语法错误一大堆。因此, 要想实验任务能够很好的完成, 还要督促加强相关的理论知识的学习和掌握, 只有这两个环节都抓好, 才能真正提高教学质量。 2 加强实验教材建设 2009年10月广东省教育厅下达的“广东省高等学校计算机基础课程教改与实践项目”的课题“C语言程序设计立体教材开发”的资助及要求下, 我们集中精力编写一本好用的、有助于提高学生的自学能力和动手实践能力的一本立体化实验教材。 教材本着是通过大量的不同层次的实验任务训练, 着重培养学生读程序、分析程序、修改程序以及编写程序的能力, 以达到提高学生动手编程、解决实际问题的能力以及知识的综合运用能力这一目标, 构建了“文字教材+辅 导学习光盘+网络学习平台”三位一体的立体化学习资源, 使本课程的实践教学由原来单一的按照实验指导书上机调试程序, 转变为学生依托立体化学习资源进行自主学习。 该实验教材除了介绍实验环境和与各实验配套的习题及答案外, 重点集中在实验指导部分, 该部分共有11个实验, 其中2个为综合性实验。每个实验项目的设置如下所示 (综合性实验除外) : 实验名称、实验目的、相关知识点概要及示例、实验任务、读程序改错、程序扩展、编写程序。 每个实验的实验任务都设置了3个层次, 第1层次为读程序改错, 目的是读简单程序, 读懂并纠正程序中的错误, 这些错误, 一般都是初学者易犯的常见错误, 通过改错训练, 避免以后编写程序时犯同样错误;第2层次为程序扩展, 目的是训练学生读程序的能力, 在分析、理解程序的基础上, 模仿原来的程序对程序进行扩充改写, 使得学生能够完成部分编程, 为独立完成编写程序打下基础;第3层次为程序编写, 训练学生独立编程的能力以及解决实际问题的能力。经过“读懂-模仿改写-编写”的实践过程, 在由浅至深的逐步引导中熟悉理解和掌握程序设计的思想、方法和技巧, 并能熟练掌握及运用程序的调试、追踪方法。同时在配套的光碟中还提供了每个实验项目的训练目的、问题分析及解决方法、流程图、参考程序等, 以便于学生自主学习。网络学习平台是基于Blackboard构建的, 里面包括实验环境介绍视频、教学资源、教学难点动画演示, 在线练习, 网络答疑等。 3 实验教学改革 鉴于之前在实验教学中存在的问题, 我们对《C语言程序设计》课程进行了教学改革, 主要体现在以下几方面: 3.1 加强实践教学环节 加大实验学时, 将理论和实验学时的分配比例定为1:1, 这样学生可以有充分的时间进行上机实践, 促进学生对课程的消化理解, 提高学生动手解决问题的能力。除此以外, 期末考试采用上机考试, 因此要求学生不仅能够编写出程序, 而且还要能够调试、运行出程序的结果, 因此学生会更重视上机实践环节。 3.2 借助立体化资源, 培养学生自主学习、协作学习的能力 利用现有立体化教材, 我们把过去简单的布置给学生编程的实验任务转变为“预习-实践-总结”相结合的方式, 避免学生在实验课上因为没有准备而无作事事, 避免学生写出的程序错误一大堆而不知所措, 浪费了很多实验课的宝贵时间。具体做法是:在理论课之后, 实验课之前必须自行完成基本的上机实验任务, 首先包括实验指导书上面的阅读程序改错题、网络学习平台上的在线测试题, 为顺利完成程序扩展和编程题扫清语法障碍;其次, 完成程序扩展题和编程题程序的编写, 为顺利完成实验任务奠定了基础。在此期间, 学生存在的问题可以根据学习平台上的学习资源 (C语言实训教程光盘中的相关资源选择性的放在课程的学习平台上) 进行自主学习, 也可以通过平台上的讨论板进行交流。实验课的任务主要是完成前期预习阶段编写好的程序的调试、运行, 解决预习过程中遗留的问题。完成所有的实验任务后, 对本次试验进行总结, 完成实验报告, 使得学生对本次实验有更深刻的认识。 3.3 加强过程性评价 对于一门实践性较强, 同时逻辑性又较强的课程来说, 要想能够取得良好的教学效果, 平时学习的积累过程是非常重要的。因此, 我们非常重视学生平时的学习过程, 除了传统的记录学生的到课情况、完成作业和实验情况外, 我们鼓励学生积极利用网络教学平台上提供的各种学习资源, 包括巩固基础知识的教学课件、在线练习题、常见问题解答, 也包括教学重点难点解析的动画和视频, 开阔学生视野的经典编程案例以及其它的优秀的课程网站等等。鼓励学生共同探讨学习, 分组讨论, 积极在讨论板中发言, 提出问题或者解决问题, 并且利用Blackboard的课程统计功能, 将学生在平台上学习的痕迹记录下来, 作为平时成绩的一部分, 提高学生对本课程学习的兴趣以及自主学习的意识。这样, 通过日常的积累, 巩固了学生的基础理论知识, 极大的提高了实践教学质量。 4 结束语 针对《C语言实训教程》课程实践教学环节存在的问题, 我们从实验教材建设入手, 按照最初制订的 “边建设, 边使用, 边改进”的原则, 在2010年上半年以网络教材的形式在全校9个开设《C语言程序设计》的班级试用, 并且进行了一系列教学改革, 取得了良好的效果。学生的总评成绩较以前有明显提高, 学生对课程和老师的满意率也显著提高, 在学生对整个部门任课的26名教师的教学质量评价中前7名就有5位是《C语言程序设计》的任课教师, 这是历届以来对C语言课程组老师总体评价最好的一次。这说明我们通过立体化教材资源的建设, 以及通过资源利用采取的一系列实践教学改革得到了学生的认可, 取得了初步的成效。 参考文献 姓名: 班级: 学号: 实验内容: 编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用三个空格分开)。例如用户输入了42339,屏幕输出结果为: 【提示】巧妙使用 / 和 % 两种运算符。源代码: #include long int num,a,b,c,d,e; scanf(“%ld”,&num);a=num/10000;b=num%10000/1000;c=num%1000/100;d=num%100/10;e=num%10;printf(“%ld %ld %ld %ld %ldn”,a,b,c,d,e);} 运行结果: 实验内容: 已知三角形三边a,b,c,计算三角形的面积。 注:三角形面积公式为area=[s(s-a)(s-b)(s-c)]的1/2次幂 S=1/2*(a+b+c)源代码: #include } scanf(“%lf%lf%lf”,&a,&b,&c);s=(a+b+c)/2;if(a>0 && b>0 && c>0){ area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%lfn”,area);} else printf(“输入错误,三角形边长不能为负数或0n”);运行结果: 实验内容: 输入圆的半径,计算出圆的周长和面积 源代码: #include double r,z,area,pi=3.14159;scanf(“%lf”,&r);if(r>0) { z=2*pi*r;area=pow(r,2)*pi;printf(“圆面积为%lf周长为%lfn”,area,z);return 0; } } else printf(“输如错误,圆的半径不能为负数或0n”);运行结果: 实验内容: • 体型判断。按“体指数”对肥胖程度进行划分: 体指数t = 体重w /(身高h)2 (w 单位为公斤,h单位为米) – 当t < 18时,为低体重; – 当t介于18和25之间时,为正常体重; – 当t介于25和27之间时,为超重体重; – 当t >= 27时,为肥胖。 • 编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。• 用3种方法编程: – 算法1:用不带else子句的if语句编程 – 算法2:用在if子句中嵌入if 语句的形式编程 – 算法3:用在else子句中嵌入if 语句的形式编程 算法1:源代码: #include float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0){ printf(“输入错误,身高体重不能为负数或0n”);} { t=w/pow(h,2); if(t<18){ printf(“低体重n”); goto loop; goto loop; } if(t>=18 && t<25) { } if(t>=25 && t<27){ printf(“超重体重n”); goto loop;} if(t>=27){ printf(“正常体重n”);goto loop; printf(“肥胖n”); } } loop:return 0;} 运行结果: 算法2:源代码: #include #include float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0){ printf(“输入错误,身高体重不能为负数或0n”);} { t=w/pow(h,2);if(t<25){ if(t>=18){ } printf(“正常体重n”);goto loop;goto loop; printf(“低体重n”);} if(t>=25){ if(t<27){ } printf(“超重体重n”);goto loop; printf(“肥胖n”);} } loop:return 0;} 运行结果: 算法3:源代码: #include float w,h;double t;scanf(“%f%f”,&h,&w);if(w<=0 || h<=0)printf(“输入错误,身高体重不能为负数或0n”);else { } t=w/pow(h,2);if(t<18)printf(“低体重n”);else { } if(t>=18 && t<25)printf(“正常体重n”);else { } if(t>=25 && t<27) printf(“超重体重n”);else printf(“肥胖n”);return 0;} 运行结果: 实验内容: 编写一个程序,计算-32768~+32767之间任意整数(由键盘输入)中各位奇数的平方和。源代码: #include } int a,b=0,c=0,i;scanf(“%d”,&a);for(i=0;i<5;i++){ if(a%2!=0){ } a/=10;} printf(“%dn”,b);return 0;c=a%10;b=b+c*c; 运行结果: 实验内容: 设有一四位数abcd=(ab+cd)2,编写一个程序,求a、b、c、d。源代码: #include for(num=1000;num<=9999;num++){ a=num/1000; } 运行结果: } return 0;b=num%1000/100;c=num%100/10;d=num%10;if(num==pow((10*a+b+10*c+d),2))printf(“a=%db=%dc=%dd=%dn”,a,b,c,d); 实验内容: 鸡兔问题:鸡兔共30只,脚共有90个。编写一个程序,求鸡、兔各多少只。源代码: #include } 运行结果: int x,y;for(x=0;x<=45;x++){ } return 0;for(y=0;y<=22;y++)if(x+y==30 && 2*x+4*y==90)printf(“鸡有%d只,兔有%d只n”,x,y); 实验内容: 编写一个程序,求S值(n由键盘输入): (程序检验参考: x=6.66,n=8时,s=40.955;x=6.66,n=15时,s=-1.511 源代码: #include #include double jiecheng(int); double s=0,x=6.66; } double jiecheng(int x){ } double f;if(x==0||x==1)f=1;int n,i;scanf(“%d”,&n);for(i=1;i<=n;i++){ } printf(“%.3fn”,s);return 0;s=s+pow(-1,i)*pow(x,i)/jiecheng(i);else f=jiecheng(x-1)*x;return f; 运行结果: 实验内容: 编写一个程序,求前 n 项之和S值,其中 n≥1,x ≠ 0。(n由键盘输入): 2x 5x 13x S = ── ── + ──-── +...2x 5x 13x(程序检验参考:x=6.66,n=8时,s=-16.492;x=6.66,n=15时,s=-28.469)源代码: #include int a=1,b=2,n,i,t=0; double s=0,x; scanf(“%lf%d”,&x,&n); if(n>=1) { for(i=1;i<=n;i++) { if(i%2) { s+=pow(-1,i+1)*a/(b*x); t=a; a=b; b=t+b; } else { s+=pow(-1,i+1)*a*x/b; t=a; a=b; b=t+b; } } printf(“%fn”,s); } return 0;} 运行结果: x3x5x7x9x,3!5!7!9! 实验内容: 利用泰勒级数sin(x)≈ 计算sin(x)的值。要求最后一项的绝对值小于10-5,并统计出此时累加了多少项。 (程序检验参考:x=6时,sin(x)=-0.279415,count=13)源代码: #include double s=0,x; int i,count=0;scanf(“%lf”,&x);for(i=1;;i+=2){ } s+=pow(-1,count)*pow(x,i)/jiecheng(i);count+=1;if(fabs((pow(x,i)/jiecheng(i))) } printf(“sin(x)=%f count=%dn”,s,count);return 0;double jiecheng(int i){ } 运行结果: double f;if(i==0||i==1)f=1;else f=jiecheng(i-1)*i;return f; 实验内容: 三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配? 源代码: #include int i,j,k,way=0; for(i=0;i<=3;i++) { for(j=0;j<=3;j++) { for(k=0;k<=6;k++) { if(i+j+k==8) way=way+1; } } } printf(“way=%dn”,way); return 0;} 运行结果: 实验内容:编程打印以下图案 ****** ****** ****** ****** 源代码: #include int i,j;for(j=1;j<=4;j++){ for(i=1;i<=4-j;i++) } { printf(“ ”);} printf(“******n”); return 0;} 运行结果: * *** ***** ******* 源代码: #include int i,j;for(j=1;j<=4;j++) { for(i=1;i<=2*j-1;i++) } printf(“*”);printf(“n”);return 0;} 运行结果: * * * * * * * * * * * * * * * * * * * * * * * * * 源代码: #include int i,j,m,n;for(j=1;j<=7;j++){ if(i<5) { } else { m=j-4;n=(15-2*j);m=4-j;n=2*j-1; } for(i=1;i<=m;i++) printf(“ ”); for(i=1;i<=n;i++)printf(“*”); printf(“n”);} return 0;} 运行结果: 实验内容: 输出下三角形乘法九九表--------1 2 3 4 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 源代码: #include 9n”); for(j=1;j<=i;j++) { printf(“ %d ”,k=i*j); } printf(“n”);} return 0;} 实验一 顺序结构程序设计(2学时) 一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴ 程序功能描述。 ⑵ 程序版本号、创作日期。 ⑶ 作者信息描述:班级、学号、姓名。 ⑷ 问题分析描述。 ⑸ 算法设计描述。 ⑹ 关键语句注释说明。 ⑺ 调试运行过程中出现的错误及改正方法。 ⑻ 输入数据样例。 ⑼ 输出数据样例。 三、实验内容 以下两题,任选其一解答。 你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。 1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。 输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50 参考测试数据: 输入:0 0 180 输出:20015.08 输入:30 0 90 输出:8397.7 2输入:60 0 45 输出:2453.20 2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。 提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。 建议你自己一步步推导出公式,而不要照搬网上的现成公式。 四、常见问题 疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗? 答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。 疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗? 答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。 实验二 选择结构程序设计(2学时) 一、实验目的 掌握选择结构程序设计的一般方法及选择结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗? 以下两题,任选其一解答。 1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。 2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。 四、常见问题 疑问1:闰年的规律是不是四年一闰? 答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。 疑问2:公元1年1月1日是星期几呢? 答:星期一。 疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算? 答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。 疑问4:这里计算总天数,好像要用到循环程序吧? 答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。 实验三 循环结构程序设计(2学时) 一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 四、常见问题 疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金? 答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。 实验四 循环程序综合应用(4学时) 一、实验目的: 掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。 要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下: 2012年日历 ========== 9月 ---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30------------------------- 2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。 四、常见问题 疑问1:如何控制某个月1日的打印位置? 答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。 疑问2:如何控制每周和每月的打印换行? 答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。 实验五 字符串处理综合应用(4学时) 一、实验目的 掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。 2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。 四、常见问题 疑问1:如何才能分离出整数中的每一位数字? 答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。 疑问2:若不能确定整数的实际位数,如何控制分离过程? 答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。 疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元? 答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。 实验六 文件应用程序设计(2学时) 一、实验目的掌握文件应用程序设计的一般方法及其调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。 《C语言程序设计》是软件工程专业和计算机专业学生的一门必修课, 也是一门专业基础课。因为软件工程专业学生的培养目标是专业的软件工程师, 因此, 本专业学生除了要掌握《C语言程序设计》课程外, 还需要学习和了解其它的程序设计语言, 如VB, C++, Java和.net等一系列的编程语言。《C语言程序设计》作为第一门学习的程序设计语言课程, 对于后序课程的学习和掌握起到至关重要的作用。而且, 该课程的学习对于学生的学习自信心影响比较大。因此有必要采用合适的教学方法, 提高学生编程语言的兴趣以及自信心。 按照教学大纲的要求, 学生在刚开始学习的时候, 教学内容比较简单, 按照正常的逻辑思维路线就可以设计出简单的程序。但是随着教学内容的深入, 尤其是学习循环结构是, 同学们对于循环的执行过程和最终运行结果的分析, 都会产生比较难、不知程序如何执行以及执行结果是什么的想法。针对这种情况, 根据教学内容的要求, 教学大纲的安排, 我在教学过程中, 采用循序渐进的方法, 逐步启发学生, 帮助他们了解程序执行的过程以及在每一过程中所产生的运行结果, 最终使他们不仅对循环结构有了比较清晰的认识, 而且对程序设计产生一定的兴趣, 打消程序设计比较难, 不好掌握的思想。下面, 我对教学过程所采取的方法做一个简单的介绍。 1 教学过程 1.1 最简单的程序:输出一排星号 (也可以是其他的符号) 一般地, 大部分程序设计课程的第一个程序, 都是在屏幕上输出一行信息。例如, , 在屏幕上显示一句话“hello world”。在C语言程序设计中只需要一条语句就可以实现:printf (“hello world”) ;这个程序也是学生理解计算机交互能力的第一个程序。 根据要求, 输出的内容不同, 只需要对双引号中的内容进行替换就可以实现。例如输出内容为:十个星号, 可以将输出语句改写为:printf (“**********”) ; 1.2 将最简单的程序用循环实现 如果将以上的程序改为用循环结构实现, 运行结果相同, 也是在屏幕上显示十个星号, 那么可以将程序改写为: 这是最简单的循环结构, 其中循环语句只包括一个输出语句, 执行的结果是输出一个星号。因为该语句被执行了十次, 所以总共输出十个星号。为了让学生理解循环结构的特点以及执行结构, 特别强调{}的作用。并要求学生养成添加{}的习惯, 为今后复杂程序的编写打牢基础。 通过此例, 可以让学生感性地认识循环结构中的几个关键点:循环变量的初值、终值、变化规律以及整个程序的循环次数。为了让学生了解程序执行的效果, 还可以将循环语句改写为:printf (“*n”) ;此时, 程序的结果将是输出一列星号。通过一个非常小的改变, 让同学们明白循环语句的作用和执行效果, 同时也可以增加学生的兴趣。 1.3 用循环实现矩形图形的输出 如果需要输出多排星号, 只需要将程序再改写为: 通过这个程序, 可以进一步让学生理解循环变量的改变以及循环语句的变化对整个程序的影响。同时, 可以改变循环变量的终值6为其他的数字, 让学生发生图形的变化。还可以改变程序, 分别将两个程序中的最后的换行符”n”删除, 再观察程序执行的结果。通过这两个改变, 让学生再次感性地认识程序执行的奥秒。 2 用嵌套实现矩形图形的输出 通过对简单循环程序的理解, 可以将简单的循环结构进行嵌套, 实现复杂图形的输出。按照循序渐进的原则, 学生已经理解了简单的循环结构的特点以及编程效果, 接着就可以深入学习嵌套的循环结构了。将上述程序作为一个嵌套循环结构中的内层循环结构, 再对程序作以下改写: 可以对程序作以下分析:首先, 根据对简单循环结构的理解, 外层循环的循环变量从1变化到6, 每次变化的增值为1, 因此, 一共执行了6次。每次循环执行的内容都是前面已经分析过的简单循环结构的程序, 执行结果是输出一排星号。因此, 可以得出本程序的执行结果:输出一个矩形星号。可以通过改变循环变量的初值、终值以及每一次的增值, 让学生感性地看到图形的变化, 深入了解循环结构。针对本程序, 还可以将最后的换行语句删除, 再查看程序运行的结果, 让学生进一步了解循环语句的作用。 3 通过改变内层循环的次数实现三角形图形的输出 再将程序复杂化。在上述程序中, 由外层循环的循环变量决定内层循环中循环体的执行次数, 即, 更循环变量i与循环变量j满足一定的代换关系。如, 将程序作以下改写: 再让学生观察程序的运行结果, 同学们会发现, 产生了很大的变化, 输出图形变成了三角形。 将上述程序再做进一步的改写: 这一次的改写, 是增加了一个内层循环, 使得内层有两个顺序执行的循环结构。输出的三角形再次发生变化。通过前面的学习, 同学们很快就可以发现, 每一个内层循环的作用。 4 输出其他复杂的图形 通过对上面几个程序的学习, 同学们已经深刻掌握了循环结构的特点, 理解了循环程序中, 循环变量的初值、终值以及变化情况对循环结构所起的作用。理解了循环语句的作用以及执行过程。这对于他们再次去编写更加复杂的图形或者利用循环结构去编写程序, 起到重要的帮助作用。 5. 结束语 通过对循环结构的学习, 让学生理解程序的执行过程以及执行效果, 这与顺序结构有着显著的差别。同时, 利用图形, 让同学们从感性的角度, 对循环结构中的各个关键点有了比较深刻的认识。这对于后期数组的学习有着极大的帮助。同时, 为今后的编程语言学习, 不仅打下牢固的基础, 而且让学生建立编程的自信心, 为今后的程序设计课程的学习起到铺垫作用。 参考文献 [1]谭浩强.C程序设计[M].北京:清华大学出版社, 2002. [2]雷学生, 胡多.C语言程序设计教学方法探讨[J].计算机教育, 2006 (6) . [3]刘天时, 李皎, 陈明晰.游戏算法分析在C语言教学中的应用[J].中国科技信息, 2010 (7) . 【实验1】 实验题目: 1、下列代码片段哪里有错误? char var1,ptr1; var1 = „x‟; ptr1 = &var1; 2、设有如下定义: Double var1, *ptr1, *ptr2; Float* ptr3; Int var2, *var4; 那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4个属于哪种数据类型? 3、下列代码片段在哪里有错误? Char c = ‟ A ‟; Char * p; p = c;或*p=‟A‟; 4、下列代码片段的输出结果是什么? charvar1 = „ S „; charvar2 = „ X ‟; char*ptr1, *ptr2; ptr1 = &var1; ptr2 = &var2; *ptr2 = *ptr1; printf(“%ct%cn”, *ptr1, var2); 【实验2】 实验题目:输入3个整数,按由小到大的顺序输出。 【实验3】 实验题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 实验要求:写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 【实验4】输入年和天数,输出对应的年、月、日。 例如:输入2000和61,输出2000-3-1。 课程名称:C语言程序设计 课程属性:必修(限选) 实验属性:独立设课 适用专业:光伏发电技术及应用、光伏材料加工与应用技术、新能源应用专业 学时:(实验学时 34) 应开实验学期:第二学期 应开实验项目数: 实验类型:综合性、验证性 一、本门课程实验的目的与要求 通过实验,加深学生对C语言的理解,掌握数据类型、模块化程序设计、指针、数组、指针及结构体、共用体和枚举类型的定义及使用,会写选择型程序、循环型程序,要求学完本门课程后,可编写C语言小程序。 上机实验是学习C语言程序设计的重要环节。通过实验,学习C语言的特点和方法;理解计算机程序的执行过程;掌握用计算机解决问题的方法和基本的程序设计技术;学会程序的调试方法。 二、实践形式和实践环境要求 1、实践形式:课内实验。 2、实验环境要求:每人一台电脑,安装有(Turbo C 2.0,C++环境)的实验室环境条件。 三、实践总学时和实践资料 1、总学时:34学时。 2、资料:按自编实验指导书相关内容进行实践。 四、考核与成绩评定 本课程实验考核由各分阶段实验报告、期末实训两大部分组成。各分阶段实验报告占总成绩的60%,期末考核占总成绩的40%。 五、实践任务与学时分配 实验一C程序上机操作方法及运行环境 (一)实验目的与要求: 1、了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2、了解在该系统上如何编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序,初步了解C程序的特点。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验二数据类型、运算符和表达式 (一)实验目的与要求: 1、掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。 2、掌握不同的数据类型之间赋值的规律。 3、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用。 4、进一步熟悉C程序的编辑、编译、连接和运行的过程。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验三顺序结构程序设计 (一)实验目的与要求: 1、掌握字符型数据与整型数据如何通用及赋值语句的使用方法。 2、掌握各种类型数据的输入输出函数的应用方法。 3、掌握顺序结构程序的编写过程。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0环境)。 实验四选择结构程序设计 (一)实验目的与要求: 1、掌握关系运算符和逻辑运算符的使用方法及其表达式的应用。 2、掌握分支语句的使用。 3、结合程序掌握一些简单的算法。 4、学习调试程序。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验五循环结构程序设计 (一)(一)实验目的与要求: 1、掌握循环次数不确定的循环程序设计方法。 2、掌握如何用break语句退出循环。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验六循环结构程序设计 (二)(一)实验目的与要求: 1、掌握循环次数确定的循环结构程序及双重循环结构程序的设计思路。 2、掌握循环控制变量的取值范围的确定。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验七数组的应用 (一)(一)实验目的与要求: 1、掌握一维数组的定义及应用,主要注意其下标从0开始及下标越界问题。 2、掌握数组在循环的控制下其下标的灵活变化。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验八数组的应用 (二)(一)实验目的与要求: 1、掌握数组的定义、数组元素的引用及数组的初始化。 2、掌握字符数组的定义、数组元素的引用及对字符数组的初始化。 3、在综合应用中的具体体现。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境))。 实验九函数 (一)(一)实验目的与要求: 1、掌握函数的定义、说明和调用方法。 2、理解return语句的作用和使用方法。 3、掌握函数调用过程中“传值”和“传址”方法的特性、使用及区别。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验十函数 (二)(一)实验目的与要求: 1、掌握函数的定义、说明和调用方法。 2、理解return语句的作用和使用方法。 3、掌握函数的嵌套调用和递归调用的定义及编制方法。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验十一编译预处理 (一)实验目的与要求: 1、掌握简单的宏定义和带参数宏的定义及其应用,并理解宏展开实质。 2、掌握文件包含和条件编译的应用。 3、清楚带参的宏和函数的差异。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验十二指针 (一)实验目的与要求: 1、掌握指针的概念,指针变量的定义和使用。 2、会使用指向数组的指针。 3、会使用指向字符串的指针。 4、掌握指针型函数和指向函数的指针。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0,C++环境)。 实验十三结构体、共用体 (一)实验目的与要求: 1、掌握结构体类型的说明和结构体变量的定义。 2、掌握结构体变量成员的引用和对结构体变量的初始化。 3、掌握结构体数组的定义及使用。 (二)参考学时:2 (三)实验环境::计算机机房(Turbo C 2.0环境)。 实验十四文件 (一)实验目的与要求: 1、掌握文件以及缓冲文件系统、文件指针的概念。 2、学会使用文件打开、关闭、读、写等文件操作函数。 3、学会用缓冲文件系统对文件进行简单的操作。 (二)参考学时:2 【C语言实验报告《逻辑结构程序设计》】推荐阅读: c语言实验报告内容07-10 C语言程序设计实验九08-21 c语言程序设计实验三09-06 c语言实验五函数11-20 西南交大c语言实验07-16 实验一 C语言的运行环境和运行过程08-02 顺序结构与逻辑运算实验报告10-28C语言实验报告 篇5
C语言实验报告《逻辑结构程序设计》 篇6
大一C语言上机实验报告 篇7
C语言程序设计实验安排 篇8
C语言实验报告《逻辑结构程序设计》 篇9
C语言程序设计实验十指针 篇10
C语言实验报告《逻辑结构程序设计》 篇11