c语言程序设计实验三(精选14篇)
1.c语言程序设计实验三 篇一
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语句。并且是程序看起来更为简洁明了。
2.c语言程序设计实验三 篇二
C语言是计算机及相关专业的一门非常重要的基础课, 是大学生学习程序设计的入门课程, 也是学生学好后续课程的基础。同时, C语言课程的实践性很强, 需要上机实验才能很好的掌握。上机实验不仅需要运行以及验证程序, 且需要充分理解程序设计的理念以及设计方法。因此, 要使学生学好这门课, 必须在重视理论教学的同时, 加强实验环节。学生只有在上机实践中才能真正学会如何编写程序和调试程序。也只有通过上机实践才能更好地掌握程序设计的理论知识。
2 现阶段C语言实验课存在的问题
2.1 学生的学习积极性不高
由于大一的学生对编程一无所知, 对计算机编程存在一种畏难情绪, 加上C语言本身比较抽象, 一般的C程序编程又很枯燥, 所以学生普遍反映C语言难学, 导致很多学生的学习积极性不高。另外, 上实验课之前没有做好充分的准备工作, 所以, 在上实验课时, 有些学生坐在计算机前不知道输入什么程序, 有的同学将书本上现成的程序输入进去, 根本不知道程序的功能和逻辑关系, 一旦程序出错或操作失误就束手无策了。同时, 有相当一部分学生上机不是去编写、调试程序, 最后实验报告也是草草了事只求应付。
2.2 课堂教学中没有突出语言课程本身的特点
现在大多数C语言教材只注重对C语言语法的剖析, 对算法进行剖析过于简单, 使学生在上机编程时没有软件工程的概念。现在大多数的教材在编写时对算法问题只用了很少的章节来分析, 使得学生在编程时只有理论知识而不知道怎样把理论知识用来解决实际问题。
2.3 实践教学环节重视不够
目前对C语言程序设计课程的考核一般采用的是笔试考试形式, 上机考试所占比例不够或者不进行上机考试。这样的考核形式直接导致学生不懂基本的实践操作, 对程序执行过程中的常见问题的处理、编译等功能应用检测不能到位。
3 计算机C语言实验教学改革途径
3.1 提高学生实验的兴趣
每次上机实验之前, 教师要布置好上机任务, 要求每位同学做好预习, 写出上机实验的内容、编好程序、准备好调试所需的数据, 并进行初步的结果分析。这样, 学生可以带着任务实验, 避免了盲目的输入程序, 提高了实验效果。另外, 教师主要起引导的作用, 实验前的讲解以重点、难点和注意事项为主, 不应面面俱到, 可以先给出一些问题, 让学生带着问题去做、去观察、去思考。实验中, 应以学生为主体, 使学生成为真正的主人。学生多动手, 不仅可以发现程序中存在的问题, 同时也可以充分地感受到自己分析问题、解决问题的乐趣。
3.2 培养学生对实际问题的分析解决能力
学习C语言不能停留在学习它的语法规则, 而是利用学到的知识编写C语言程序, 解决实际问题。把C语言作为工具, 描述解决实际问题的步骤, 由计算机帮助我们解题。只有通过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确地解题。程序设计的核心是编程思想。程序设计就是分析解决问题的方法步骤, 并将其记录下来的过程。从自然语言角度来说, 就是用自然语言记录;从计算机角度来说, 必须用计算机语言记录下来。在实验教学中, 我们应该重视编程思想。编程思想应该是我们将程序设计的重点, 我们不但要自己讲, 还要学生也能讲, 学生能够理解。我们还要学生能够把编程思想用"流程图"画出来。另外, 我们要培养学生对实际问题的分析解决能力。我们要多设计一些实际问题的实验, 要学生自己想出编程思想, 自己能够用程序设计解决一些实际问题。
3.3 教学实验项目的开发
把理论教学和学生特点结合起来, 开展具体的趣味性实验项目。通过综合实验项目的开发, 使学生明白所学知识与专业相结合能产生什么样的服务实施。这样, 提高了教学的针对性, 调动了学生学习的积极性, 实现理论教学与专业实践的有机融合。以往大多数同学在学完C语言后, 普遍反映看得懂程序的设计代码意义, 但遇到实际问题就无从下手。因此, 我们可以设计一个短期任务与长期任务相结合的上机内容, 以一个大题目作为长期任务, 再按不同功能模块分解开来, 形成一个个短期任务。每一章学过之后要求完成一项或几项编程作业, 而各章的编程作业不是孤立的, 而是相互联系的, 实际上它们都是一个较大型较复杂程序的组成部分。这样就可以使学生的任务形成一种连贯性, 在整个学习过程中始终都有一个总任务在驭动着, 而学生又在一个又一个短期任务的驱动下, 体验着一次又一次迈向成功的喜悦。
3.4 改革成绩考核方式
课程考核是提高及检测教学效果的重要手段。C语言程序设计课程传统考核方式一般都采用的是笔试考试, 试卷涵盖课程理论知识以及程序开发, 这种评价方式注重理论检测, 容易使学生把关注重点放到知识点的掌握, 而不利于学生程序设计能力的提高, 从而不能有效考查学生程序开发的能力。改革考核内容以及考核方法要注重学生实际操作调试能力的考查。首先, 考试形式由笔试改为笔试和机试综合考查, 同时, 为了强调课前预习的重要性, 为了避免学生将问题堆积、鼓励学生多提问题, 加了对课前预习报告的考察, 并且在平时成绩中加大了对学生平时好学程度的考察。这样, 可以更公平合理地对学生的学习效果进行评价。
3结束语
C语言实验教学是学生学与老师教两方面有机的结合, 我们要以学生的学为本, 在实验教学过程中, 要根据目前的教学现状, 总结教与学的不足, 敢于进行实验内容和实验教学方法的改革与创新。以上是对实验教学方法进行的探讨, 通过实践发现, 这些方法有助于激发学生学习自觉性和主动性, 提高学生分析问题和解决问题的能力, 能够达到提高教学质量的目的。
参考文献
[1]李慧君, 王喻红.浅谈C语言实验教学[J].黑龙江科技信息, 2011年第2期.[1]李慧君, 王喻红.浅谈C语言实验教学[J].黑龙江科技信息, 2011年第2期.
[2]文玉锋.信管专业C语言程序设计实验课的教学改革与实践[J].科技资讯, 2011年第2期.[2]文玉锋.信管专业C语言程序设计实验课的教学改革与实践[J].科技资讯, 2011年第2期.
[3]孙静.信息管理专业C语言课程设计的研究与实践[J].福建电脑, 2011年第7期.[3]孙静.信息管理专业C语言课程设计的研究与实践[J].福建电脑, 2011年第7期.
[4]胡尊美.C语言程序设计实验教学改革探讨[J].福建电脑, 2010年第1期.[4]胡尊美.C语言程序设计实验教学改革探讨[J].福建电脑, 2010年第1期.
3.c语言程序设计实验三 篇三
许多院校的专业开设了C语言课程,将其作为学生学习程序设计技术的入门课程,这与C语言的特点是分不开的。C语言不但可以编写系统软件,而且可以根据用户的需要编写出满足用户要求的应用软件,尤其是C语言具有很好的对计算机的硬件编程能力。同时,C语言具有逻辑性强、处理问题周密、严谨的特点,是集知识和技能于一体,实践性很强的课程。学生通过学习C语言可掌握程序设计的一些基本方法和技巧。然而C语言的数据类型较多、表达式丰富、语法结构较复杂,使它成为一门教师难教、学生难学的课程。因此,在重视理论教学的同时,必须加强实验环节。只有上机实践才能正真学会如何编写程序和调试程序,体会到“优化”程序;也只有通过上机实践才能更好地掌握程序设计的理论知识。然而,在C语言实验课中,我这两年的教学观察中发现普遍存在以下几个问题:
第一,学生没有明确的实验目标,实验兴趣不大。上机时一些学生无所事事或玩游戏,不但害了自己,还影响其他同学。第二,现有教材中上机实验都立足于C语言本身的一些语言规则,和实际开发脱节,没有较容易理解和生动有趣的范例,比较死板、枯燥。第三、现有实验大多注重语句、语法等,没有把编程解题思路和程序测试等放在首位,对学生分析问题和解决问题的能力训练不够。
二、实验教学探讨
我在教学的过程中,职借鉴职业技术学院的职业性教学的经验,注重职业岗位能力与职业技能的训练,注重解决问题、分析问题和自学等能力的培养。在C语言实验上机课中,主要是引导学生突破传统的思维方式,培养学生读、写程序和调试程序的能力以及提高上机的学习兴趣和自主实验的方法技巧等。
1、简化入门实验,提高学生实验兴趣 学生大多已习惯于计算机的图形操作界面,且基础比较薄弱,动手能力相对也差,加上或多或少的惰性,而开始学习C语言后,突然进入的是一个纯英文的界面和纯键盘操作,这种反差很大。为减轻学生畏惧压力,让学生容易上手,可简化C语言的入门实验操作:(1)在桌面上创建TC的快捷方式,双击后可直接进入TC编辑环境。(2)在编辑、编译、连接及运行C语言程序时,教学生直接按F2键进行存盘操作,Ctrl+F9运行程序,Alt+F5看到运行结果。而没必要让学生先认识TC的菜单中每个英文单词的意义等,将TC环境的细节认识和程序的编译、连接等单步操作留到后面实验中逐步了解。学生一上机就能体会到成功,并利用发音和动画程序引起学生的兴趣。
2、设计针对性的实验 设计一些学生们比较感兴趣的编程题目,加强学生对程序错误的诊察和校正能力、测试关系和逻辑表达式的能力、程序代码优化能力等方面的培养。从输入输出语句上机开始,我有意设计了相应的上机实验。如在选择结构中,设计如下过程:
(1)实验内容和步骤:①例:有如下程序段(让学生填写成完整的程序):
if(a>b)scanf(“%d”,&x);
else scanf(“%d”,&x);
为了更容易看明白程序的逻辑结构,用流程图来加以描述。要求增加一些输入语句和输出语句,以便使上述程序段能在不同a,b和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。
②实验步骤:记下分别使用下列各组数据运行时的操作流程。
⑴a=1,b=1,x=1;
⑵a=1,b=1,x=2;
⑶a=3,b=0,x=1;
⑷a=2,b=0,x=4;
⑸a=2,b=1,x=1;
⑹a=1,b=0,x=2;
⑺a=2,b=1,x=1;
⑻a=3,b=0,x=2;
(2)分析讨论:①用哪一组数据就可以使程序段中的每个处理语句都执行一次?为了找出程序中2各条处理语句中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。②用哪两组数据就可以使程序段中的每个分支都至少运行一次?这种情形与上面的讨论有何不同?如果为了找出程序中各分支中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。③用哪两组数据就可以把判定框中的每个条件都运算一次?如果为了测试出判定条件中的错误,应使用哪些数据对程序进行测试?请上机验证自己的结论。④用哪四组数据才可以把各种条件的组合都检测一遍?如果为了测试各种条件组合的情形,应该使用什么样的测试数据?请上机验证自己的结论。⑤用哪四组数据才可以把从起始到终止的各条路径都覆盖一次?如果为了测试出程序在不同路径下的错误,应该使用什么样的测试数据?请上机验证自己的结论。
(3)进一步的实验:①从键盘输入三个数,代表三条线段的长度。请写一个判定这三条线段所组成的三角形属于什么类型(不等边、等腰、等边或不能构成三角形)的C程序。②请分别设计下列数据对自己的程序进行测试。
A.找出各条语句中的错误。
B.找出各分支中的错误。
C.找出各条件中的错误。
D.找出各种条件组合中的错误。
E.找出各条路径中的错误。
而在循环语句上机中,对学生进行代码优化训练,让学生学会删除多余运算、代码外提、强度削弱、变换循环控制条件等代码优化手段。通过这些上机实践,学生大致知道一些软件测试、程序优化知识,提高了学生上机的积极性,使学生从上机就是检验书本例题、习题中解脱出来。
3、设计综合性的实验 以往大多数学生在学完C语言后,普遍反映看得清程序的设计代码意义,但遇到实际问题就无从下手。这主要是教材上缺少实际意义的题目,为此,一定要设计短期上机实验任务与长期任务结合的上机内容。以一个大题目作为长期任务,再按不同功能模块分解开来,形成一个个短期任务。每一章学过之后要求完成一项或几项编程作业,而各章的编程作业不是孤立的,而是相互联系的,实际上它们都是一个较大型较复杂程序的组成部分。这样就可以使学生的任务形成一种连贯性,在整个学科的学习过程中始终都有一个总任务的驱动,而学生又在一个又一个短期任务的驱动下,体验着一次又一次迈向成功的喜悦。
例如,以“学生成绩管理系统”为课程设计的长期任务,从常用输入/输出语句printf和scanf开始,让学生编写主函数并在主函数中调用若干个空函数形成一个文本型菜单的雏形;学习常用数据类型后,再编写一个验证密码输入的函数;选择结构后,要求编写一个菜单选取函数;循环控制和数组后,要求建立班级课程的成绩输入输出函数;学完结构体类型后,要求使用结构体数组来存储和处理学生的信息;学习链表后,要求利用单链表动态管理学生的成绩;最后在“文件”这一章,要求利用文件操作完成学生成绩管理。当学完整个课程,完成了平时要求的各项编程作业之后,就会发现,原来自己完成的远不是一个一个零碎的程序段,而是在一块一块制作程序的各个部件,只要通过简单的程序拼装,就可以构成一个比较复杂的程序。这也在潜移默化中培养了学生采用各个击破的方法解决实际问题的意识。最后,学生从整体的角度来审视整个程序的设计,并通过上机进行综合调试,达到提高编程能力的目的。
4、采用协作方式的实验组织形式 协作学习由David W. 和Roger R. Jonson教授提出,是学生以小组形式参与、为达到共同的学习目标、在一定的激励机制下最大化个人和他人习得成果,而合作互助的一切相关行为。
采用这种形式在上机过程中,学生之间为了达到小组学习目标,个体之间可以采用对话、商讨、争论等形式对问题进行充分论证,以期获得达到学习目标的最佳途径。学生学习中的协作活动有利于发展学生个体的思维能力,增强学生个体之间的沟通能力以及对学生个体之间差异的包容能力。此外,协作学习对提高学生的学习业绩、形成学生的批判性思维与创新性思维、对待学习内容与学校的乐观态度、小组个体之间及其与社会成员的交流沟通能力、自尊心与个体间相互尊重关系的处理等都有明显的积极作用。
在尊重学生个体差异和一人一机基础上,利用局域网,将学生分成小组进行协作实验;将实验心得体会、结论等在网上共享。改变以前那种各自为阵,互不往来的实验组织方式。
三、结束语
4.c语言程序设计实验三 篇四
实验六 函数 掌握函数实参与形参的对应关系以及“值传递”的方式; 3 掌握函数递归调用的方法;
二 实验内容 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。
【提示】设有两个正整数m和n ⑴ 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则:
hcf(n,k)hnk0k0⑵ 若最大公约数为h,则最小公倍数为:m*n/h。
实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include
完整程序如下: #include int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { return(m*n/h);} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);} 运行结果如下图: 编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: Cnmm!n!(m-n)!【注意】函数f的类型应用long或double。 程序如下: #include void main(){ long m,n,c;printf(“请输入两个整数”); scanf(“%d,%d”,&m,&n);c=f(c);m=m*(m-1)n=n*(n-1)c=m/(n*c)printf(“组合为%dn”,c); } 有一个字符串,输入一个字符,编写函数dstr将输入的指定字符从字符串中删去。#include 完整程序如下: #include 一、本大纲编写的依据是《C语言程序设计》教学大纲。实验总学时:32学时 学分:1学分 二、适用专业:全院C语言公共课 三、考核方式及评定标准: 实验操作能力50%,实验报告50% 四、配套的实验教材或自编指导书: 《C语言程序设计学习指导》 五、实验项目概述与学时分配: 实验一:C语言开发环境与输入输出(4学时) (一)实验类型:演示性 (二)实验类别:学科基础 (三)每组人数:1人 (四)实验目的和实验能力要求: 1.学习Turbo C2.0集成环境,掌握源程序编辑方法; 2.掌握在Turbo C2.0集成开发环境中编译、调试与运行程序的方法; 3.通过运行简单的C语言程序,初步了解C语言源程序的特点。 (五)实验内容: 1.设计一个C语言程序,输出以下信息: *************** Hello! *************** 2.设计一个程序,从键盘输入一个圆的半径,求其周长和面积。 3.设计一个程序,从键盘输入一个小写字母,将它转换成大写字母输出。4.输入一个华氏温度,要求输出摄氏温度。公式是:C=(5/9)*(F-32)。5.输入一个球的半径,求其表面积和体积。(S= 4πr²,V= 4πR³/3)。 (六)主要仪器设备: 1.计算机:CPU: Pentium III 600MHz以上 RAM:256M以上 硬盘空间:4G以上 2.操作系统: Windows2000、WindowsXP、Windows2003 任选其一 3.软件要求:Turbo C2.0 (七)所在实验室:计算机实验室 实验二:程序流程控制应用(6学时) (一)实验类型:验证性 (二)实验类别:学科基础 (三)每组人数:1人 (四)实验目的和实验能力要求: 1.掌握Turbo C2.0集成环境中的单步执行; 2.熟悉if 与switch语句的格式、执行过程、使用方法及典型案例; 3.学会使用选择结构解决一般的实际问题,能编写简单的应用程序。 4.掌握循环结构while、do-while、for等语句格式、执行过程、使用方法及典型案例。 5.学习循环结构的嵌套使用。6.掌握分支与循环综合程序的编写方法; 7.学习并熟悉break、continue的区别与使用。8.学会常用数值与图形的编程方法。 (五)实验内容: 1.由键盘输入三个数,判断能否构成三角形。 2.某商店“五·一”长假期间购物打折。规则如下: 若每位顾客一次购物,①满1000元,打九折; ②满2000元,打八折; ③满3000元,打七折; ④满4000元,打六折; ⑤5000元,打五折; 编写程序,输入购物款,输出实收款。3.有下列分段函数: 编一程序,输入x,输出y的值。4.计算:S=1+2+3+4+„+n。 5.裴波那契数列的前几个数为1,1,2,3,5,8,„„,其规律为: 6.求出100~200之间的所有素数,输出时一行打印五个素数。7.编写程序用公式计算e的近似值。直到最后一项小于给定精度。8.从键盘输入任意多个整数(-999为结束标志),计算其中正数之和。9.求π近似值的公式为: 其中,n=1、2、3„设计一个程序,求出当n=1000时的π的近似值。 (六)主要仪器设备: 1.计算机:CPU: Pentium III 600MHz以上 RAM:256M以上 硬盘空间:4G以上 2.操作系统: Windows2000、WindowsXP、Windows2003 任选其一 3.软件要求:Turbo C2.0 (七)所在实验室:计算机实验室 实验三:函数与宏定义的应用(6学时) (一)实验类型:验证性 (二)实验类别:学科基础 (三)每组人数:1人 (四)实验目的和实验能力要求: 1.了解函数的定义方法,理解函数的调用; 2.初步掌握函数的递归、嵌套调用; 3.掌握函数调用的实参与形参的传递。 (五)实验内容: 1.编写一个函数,用递归的方法求1+2+3+4+„+n的值。在主函数中进行输入输出。 mc2.编写程序,输入m和n(n>m),求n的值。3.编写程序,求两个自然数m和n的最大公约数和最小公倍数。4.分别输入整数半径和实数半径,使用函数重载计算圆的面积。5.使用内联函数计算长方形的面积。6.用函数调用方法打印九九表乘法。 (六)主要仪器设备: 1.计算机: CPU: Pentium III 600MHz以上 RAM:256M以上 硬盘空间:4G以上 2.操作系统: Windows2000、WindowsXP、Windows2003 任选其一 3.软件要求:Turbo C2.0 (七)所在实验室:计算机实验室 实验四:数组的应用(8学时) (一)实验类型:验证性 (二)实验类别:学科基础 (三)每组人数:1人 (四)实验目的和实验能力要求: 1.掌握一维数组、二维数组、字符数组的定义、初始化赋值、数组元素的引用方法; 2.掌握求最大、小值、平均值、排序的方法以及有序数组的查找、增加、删除的编程方法; 3.初步掌握字符串处理函数的使用方法以及字符串复制、连接、测长等程序的编写方法; 4.掌握数组的典型应用。 (五)实验内容: 1.应用一维数组,对10个数进行冒泡排序,使其按照从大到小的顺序输出。2.应用二维数组打印5行杨辉三角形。 3.从键盘输入两个字符串,将它们连接成一个字符串。4.编程序将输入的字符串删去空格后输出。5.编程实现将一十进制整数M转换为D进制数。(选做)6.已知一int a[20]数组,编程将值为偶数的元素移到数组前端,值为奇数的元素移到数组后端。(要求元素比较、移动次数尽量最少) (选做)7.某班有10个学生,进行了“数学”、“语文”、“英语”、“C语言”等科目的考试,编写程序: (1)将考试成绩输入一个二维数组;(2)求每门课的平均成绩、每门课的不及格学生的人数及每门课的最高分与最低分;(3)求每个学生的平均成绩、总分、不及格门数;(4)按学生平均成绩的高低排序并输出。 8.设计一个程序,打印杨辉三角形。(使用其它方法) (选做)9.编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。 (六)主要仪器设备: 1.计算机:CPU: Pentium III 600MHz以上 RAM:256M以上 硬盘空间:4G以上 2.操作系统: Windows2000、WindowsXP、Windows2003 任选其一 3.软件要求:Turbo C2.0 (七)所在实验室:计算机实验室 实验五:指针的应用(8学时) (一)实验类型:验证性 (二)实验类别:学科基础 (三)每组人数:1人 (四)实验目的和实验能力要求: 1. 理解指针的基本概念和运算 2. 掌握指针与数组、指针与函数、指向字符串的指针的应用 3. 掌握多重指针的概念和基本应用 (五)实验内容: 1.输入3个数a,b,c,按小到大顺序输出。要求利用指针方法实现。 2.用返回指针类型函数实现字符串连接函数strcat(),通过1)输入字符串s1和s2进行测试,2)将字符串“string”作为参数与s1和s2的连接后的结果调用函数strcat()实现连接。 3.写一个函数,该函数从主程序接受一个字符串,将字符串中的数字和其它字符分开,形成二个字符串输出。 4.编一程序,实现计算器的功能,使得在操作系统下可以通过如下形式实现操作 calc 4 + 5 calc 3.7 * 7.9 (六)主要仪器设备: 1.计算机: CPU: Pentium III 600MHz以上 RAM:256M以上 硬盘空间:4G以上 2.操作系统: Windows2000、WindowsXP、Windows2003 任选其一 3.软件要求:Turbo C2.0 一、、for(i=0;i T[2*d]=' Scanf(“%s”,&s)、#define ARR-SIZE 80; Inverse(char a); Str[i]=str[j]; 3、int f=1; 二、1、i<=n S+x[i] i2—i1+12、#include String strTemp[i] J++; 随着科技的不断进步, 计算机基础教学已不再局限于围绕Windows操作系统及几种常见办公软件而进行, 更需要对程序设计能力进行培养。目前计算机程序设计语言教学主要涉及C语言、Visual Basic、Visual FoxPro等, 其中C语言作为C++、C#、Java等功能强大的主流语言的前身, 尤其适合用来作为对计算机编程要求较高的一些专业计算机程序设计启蒙语言。C语言是一种高度过程化的语言, 语法灵活, 逻辑性非常强。对于C语言的学习, 必须依赖大量的上机实践来巩固理论教学内容, 强化对编程思维的理解, 掌握C语言的精髓。所以, 在C语言程序设计教学中, 实验的设置显得尤为重要, 实验方案设置是否合理直接影响到学生对C语言的理解和掌握。 1计算思维 计算思维是目前的一个研究热点, 自2006年被提出以来, 国内外许多著名的计算机科学家和计算机教育家都不遗余力地对它的内涵和外延进行了卓有成效的研究和应用, “计算思维”一经问世, 就散发着超强的魔力, 引领着计算机科学界尤其是计算机教育界的发展方向。 1.1计算思维内涵 2006年3月, 美国卡内基 · 梅隆大学计算机科学系主任周以真教授[1,2]首次在权威杂志Communications of the ACM上提出了“计算思维” (Computational Thinking) 概念:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解的思维活动。按照周以真教授的解释, 计算思维建立在计算过程的基础上, 但是又超越了计算机本身。计算思维现今已不仅仅运用在计算机学科上, 也广泛应用在其它自然学科甚至是人文学科中, 它是一种思维方式, 是一种解决问题的思考过程, 从现实角度来说, 计算思维就是将问题引入、归纳、求解、引申的过程, 也就是将未知问题归纳成若干已知问题从而求解的过程。计算思维不是一个单独的、与其它思维方法毫无关联的孤立方法。计算思维产生于计算机科学, 而与计算机科学联系最紧密的思维方法是数学思维、逻辑思维和工程思维。可以将计算思维看作是计算机科学与数学思维、 逻辑思维和工程思维的交集, 而它们也代表了计算思维的不同层次要求[3]。在计算机课程教学中引入和培养学生的计算思维, 进而让计算思维影响学生的一生, 帮助学生以计算思维的方式来分析、解决各类科学及社会问题。 1.2计算思维在C语言实验中的体现 C语言作为一种结构化的程序设计语言, 它的学习过程必然是理论与实践相结合, 在实验中逐渐进步的过程。 同任何计算机编程语言一样, C语言编程能力的提高必须依靠一个又一个上机实验, 在不断的 “思考—编程—调试—运行—反思”过程中逐步提高。同Visual Basic、Vis- ual FoxPro等面向对象的计算机编程语言不同, C语言是高度过程化的, 结构非常严谨, 并不像其它语言那样松散和随意, 这就需要格外注意其语法和语义的准确性和完整性, 而编程者的这些良好习惯和注意度都需要在大量的上机实践中培养。 C语言是一种过程化的语言, 它是以时间轴驱动的, 用C编写的程序执行过程, 类似于我们处理日常问题的一般过程:先做什么, 再做什么;如果发生了什么, 就做什么;必须要做了什么, 才能再去做什么, 等等。从宏观上看, C语言采用的是自顶向下、逐步求精、模块化的设计思路, 而计算思维就是将问题引入、归纳、分解、进而求解的过程。可以在C语言实验中引入计算思维的思想, 帮助我们对实验进行分析和总体设计;反过来, 也可以在C语言实验中培养学生的计算思维。 2引入计算思维的C语言综合实验设计 2.1问题描述 设计一个万年历, 要求实现以下功能:1能显示某一具体日期的星期数;2能显示任一日期所在月的月历;3具备翻页功能, 能利用键盘上的左右方向键进行月份的切换, 上下方向键进行年度的切换[4]。 说明:以1582年10月15日 (星期五) 为起始日期 (历史上多次修改历法, 其中最后一次修改是1582年10月15日, 在此之前的星期数是不准确的) 。 2.2问题分析与分解 计算思维的方法就是分解、归纳、化未知为已知的过程。首先对问题进行分解, 要完成这个实验, 需要解决3个问题: (1) 确定某一输入日期的星期数。按问题描述, 输入任一日期后, 首先要求出它的星期数。问题描述中已经给出了初始日期1582年10月15日为星期五, 那么只要先求出输入日期与1582年10月15日之间相差的天数day, 就可用公式 (day%7+5) %7求出该日期的星期数。 在求解这个问题时, 又需要考虑一个子问题:怎样解决闰年的问题。闰年的2月有29天, 其规则是年份数字能够整除4但不能整除100, 或者能够整除400。因此, 可以用#define Year (x) (x%4==0&&x%100!=0||x% 400==0) ?1:0这条参数宏来表示是否闰年。 (2) 如何显示该日期所在月的月历。根据第一个问题的结果, 已经知道该日期的星期数, 接下来的事情是只要在该日期的基础上向前递减、向后递推就能知道该月每一天的星期数, 这个问题又可分成两个子问题:1确定月历的样式、设计格式;2分析并确定该月份中每一个日期在月历中的位置。在求解这个子问题时, 需要考虑星期的排列以及日期的换行问题, 可以用循环语句加以控制。 (3) 翻页功能设计。根据上两步的结果, 接下来增加翻页功能, 这里需要从4个方面进行设计:1向左按钮:如果当前月份为2~12月, 则年份不变, 月份-1;如果当前月份为1月, 则年份-1, 月份改为12月;2向右按钮:如果当前月份为1~11月, 则年份不变, 月份+1;如果当前月份为12月, 则年份+1, 月份改为1月;3向上按钮:月份不变, 年份-1;4向下按钮:月份不变, 年份+1。 从以上分析可以得出该实验的问题分解情况, 如图1所示。 2.3问题归纳与引导 根据以上分析, 将问题分解成若干子问题, 每个子问题再进一步细化, 最后分解成已知问题, 例如闰年的求法、 输出格式的设置、月份的加减等问题。计算思维的魅力正在于此。通过对问题的分解、归纳, 最终变换成已知问题。 在这一实验过程中, 为了达到培养学生计算思维的目的, 需要特别注意问题的归纳与引导, 计算思维强调的是从未知到已知的求解过程, 是一种自然归纳、推导、总结的过程, 教师在实验指导过程中, 不能直接给出答案和源程序代码, 而要根据结构化程序设计自顶向下、逐步求精的思想, 并以“问题归纳—分解—求解—引申”的模式逐渐引导学生一步一步走向解决问题的彼岸。 3结语 C程序设计语言的教学离不开上机实践, 上机实践过程中实验方案的好坏和教师的实验指导直接决定着学生的学习效果, 如要在有效的上机实验课时内达到最好的学习效果, 就必须让学生尽早掌握计算思维的能力。计算思维自2006年被提出并被明确定义以来, 逐渐成为计算机科学领域和计算机教育界最先进、最流行的思想之一。在C语言程序设计实验方案设计中, 时刻注意学生计算思维能力的培养, 有着非常重要的积极作用。这种能力的掌握, 不仅对学生本身编程能力和计算机能力的提高大有裨益, 而且对学生今后更全面、更有效、更科学地处理各类问题也具有帮助作用。 参考文献 [1]WING J M.Computational thinking[J].Communications of the ACM, 2006, 49 (3) :33-35. [2]周以真.计算思维[J].中国计算机学会通讯, 2007, 3 (11) :83-85. [3]陆汉权, 何钦铭, 徐镜春.基于计算思维的大学计算机基础课程教学内容设计[J].中国大学教育, 2012 (9) :55-58. 关键词 C语言 软件编程 实验探讨 中图分类号:TP3 文献标识码:A 1 C语言的概述 在各种计算机编程语言中,C语言属于一门高级语言,它是一切计算机语言的基础,拥有高级语言和低级语言的特点,灵活方便,简洁紧凑;而且它的语法限制不严格,程序员在设计时程序书写自由。不仅能够编写系统软件,同时还可以编写应用软件,能够适应于多种操作系统,应用广泛,可移植性强。总之,C语言对于信息技术的发展具有十分重要的作用和价值。 2基于C语言的计算机软件编程实验研究 2.1C语言的编程技巧 (1)灵活运用指针 在C语言编程的时候,指针是一种特殊类型的变量,它能够帮助程序员有效的表达和解决程序设计过程中遇到的复杂问题,熟练掌握指针是必要的。指针具有三要素:指针名以及指针类型和值。在编程时,指针和一般变量名相同,但是在类型以及值上具有区别,另外,指针不仅能够被用于表示数组,还可以被作为函数的参数返回值。 (2)C 语言的特有函数 在C语言编程的时候,有时需要用到一些特有函数。函数都具有一定的功能,同时函数名也反映了该函数的功能。在进行函数定义时,程序员需要把函数的名字、返回值类型以及参数名等各项都进行定义。另外,因为库函数是由C 编译系统提供的,这些函数均是系统首先定义好的,在程序调用的时候,程序员只需利用“#include 指令”把与之相关的头文件包含到所用文件中即可。 (3)算法技巧 在程序设计的过程中,算法是程序的灵魂,因此,掌握一定的算法技巧是必不可少的。通常情况下,算法不仅可以用自然语言表示,有的时候也利用流程图表示。需要注意的是,利用流程图表示算法时,程序设计员必须熟练掌握常用的流程图符号。且“数学乃是计算机之母”,牢固的数学知识同样能够提升编程效率。 (4)位运算以及文件知识 相比其他计算机高级语言的运算方法,位运算作为C 语言的重要特色,具有独特性和唯一性。位运算是以二进制位为对象,然后结合相关程序要求进行各种运算。文件包含有数据文件以及程序文件,是计算机不可缺少的,程序设计员在进行编程时,需要把所写的程序存储的文件之中,这样可以便于程序员查找数据,提升查找效率。 2.2 C语言和汇编语言混合的程序设计案例分析 (1)混合的软件编程方法 随着信息技术的不断发展和应用,在软件开发过程中,大多时候需要使用两种语言混合编程,有效地提高了程序的开发效率。通常情况下,混合的软件编程方法有两种,具体如下: ①把汇编语句嵌入C语言程序中。例如,把asm汇编语句嵌入到C语言源程序中:/*把5送到ax寄存器*/当把一组汇编语句嵌入到C语言源程序中,则需要利用大括号把嵌入程序给括起来:在本次的实验之中,在进行程序嵌入时,有其固定的格式,需要在嵌入的各行代码之前加“asm”关键字,也可以直接在asm代码块中放入汇编语句。但是程序设计者在进行嵌入时,一定要注意满足以下条件:汇编语言指令代码中关键字asm必不可少,且要放在指令代码之前;嵌入汇编语言指令代码能够和正常C语言程序混合,但是C语言的分隔符“;”必不可少;嵌入汇编语言时C语言的注释分界符必不可少,分别是“/*”和“*/” 。 ②首先编写C语言程序以及汇编程序,然后独立编译目标代码模块,最终进行链接。 首先,在进行混合编程时,C语言程序能够调用汇编语言的各种子程序以及其定义的变量,同时,C语言编写的函数以及定义的变量等也可以被汇编语言调用。而且混合编程的过程中,一个任务往往是由若干个功能模块组成,且不同的功能模块均是利用合适的语言进行独立编程,且以函数的形式存在。因此,程序设计者要根据每一模块的特点选择相应的语言和语言编程系统进行独立编程,并形成目标文件,继而连接目标文件,形成完整的可执行文件。在混合编程的过程中,设计者需要注意五个问题:参数传递问题;寄存器的使用问题;存储模式;变量以及函数的调用问题;子程序的返回值问题。其中,关于参数传递问题,在进行C语言程序调用汇编程序时,必须遵从参数传递原则,利用堆栈把参数传递给汇编程序。例如,在C语言程序中含有函数:voidaa(char*p,inti),这个函数是利用汇编语言进行编写的,如果编译是在小内存模式下实施的,系统在进行调用时,则写成aa(&q, n);运行时程序首先把n压入堆栈,然后再把&q压入堆栈,当参数传递过来并被汇编语言的子程序取得时,BP寄存器便被用作基地址寄存器,实现对栈中所存数据进行存取操作。 (2)混合的软件编程实例分析 程序的主要功能是在五个数中寻找最小数,有主程序“min.c” 以及汇编子程序“qiumin.asm”这两个部分组成。其中主程序是利用C语言编写,汇编子程序是利用汇编语言编写,被主程序调用,主要于完成寻找最小数。程序代码如下: /*文件名为:min.c*/ /*声明qiumin为外部函数*/ 利用C语言和汇编语言混合的编程方法,能够实现应用程序局部满足高运行速度的要求,但是在具体的运用之中,程序设计者仍需要注意寄存器分配以及内存模式等因素对于程序的影响;且在运行时,因为程序设计语言之间存在相互调用的外部接口,故可以实现外部调用。 参考文献 实验一 上机操作初步和简单的C程序设计 一、实验目的1、熟悉C语言运行环境Turbo C++3.02、会简单的程序调试 3、熟悉C语言各种类型数据的输入输出函数的使用方法 4、掌握顺序结构程序设计 二、实验内容 1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7) 2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6) 3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8) 4、运行如下程序,写出运行结果。第一┆范文网整理该文章,版权归原作者、原出处所有...#include void main() { int a=1,b=2; a=a+b;b=a-b;a=a-b; printf(“%d,%dn”,a,b); } 三、实验步骤与过程 一、教学目的和要求 熟悉ADS1.2开发环境编译、下载、调试程序的基本过程; 掌握C和汇编语言混合编程方法。 掌握ATPCS中的寄存器及参数传递规则。 二、实验内容 1、分别编写C程序和汇编程序,要求在C程序中调用汇编程序实现字符串拷贝功能。C程序中设定源字符串及目的字符串;汇编程序实现拷贝功能。 2、分别编写C程序和汇编程序,要求在汇编程序中调用C程序实现4个整型数的求和运算。汇编程序实现变量的赋值及C函数的调用;C程序实现求和运算。 3、编写C程序内嵌汇编语句,对两个整型数a、b进行求和运算,和值存放到变量c中。 (1)要求main()函数完成变量赋值及a、b、c数值信息输出;内嵌汇编语句实现求和计算。 (2)要求C程序中main()函数完成变量赋值及a、b、c信息打印,add()函数实现加法 运算;main()函数中的内嵌汇编调用C函数add()进行求和运算。 三、思考题 1、什么是ATPCS?它有哪些规则? 2、C程序调用汇编程序需要进行哪些设置?参数如何传递? 3、汇编程序调用C程序需要进行哪些设置?参数如何传递? 关键词:C++;程序设计;教学方法;教学改革 0引言 C++语言运用范围非常广,在软件设计、网络通讯、游戏娱乐等等领域都能涉及到,也是当前世界上使用最广的编程语言。但是行业的发展受到多方面局限,人才的缺失是行业发展最大的阻碍,许多高校都意识到这个问题,相继的开始《C++语言程序设计》课程,主要就是让计算机专业的人才能够多涉及这方面课程,提高学生的自主学习与独立思考能力,增加就业的几率。传统教学方式,存在教学目标不清晰以及教学方式古板的问题,很多学生对这门学科的重要程度认知不足,教学方式与内容的乏味让学生对此课程并无多大兴趣。本文是根据多年来的经验总结以及市场调查,从教学目标与内容多方面进行研究,以此追求有效的教学改革。 1教学中存在的普遍问题 1.1学生学习目标不明确 教学的主要目的是为了培养学生的兴趣以及软件编程能力,提高学生的独立思考、分析与解决问题的能力,提高就业的几率。以往的课程都是由不同教师来传授,每一个教师都只关注自己本科教学,并没有从全局效果分析,学生对自己的学习目标不明确,导致学习兴趣降低。没有目标的学生犹如行驶中迷失了方向的帆船,不知所措。当学生对自己的学习有了清晰的规划,就会不断朝着目标的方向努力前进。 C++涉及的概念都是较为复杂的,在学习过程中灵活多变,出错可能性非常大,可以说想要学好此课程是相对较难,所以很多学生都产生退却念头;同时C++不仅是纯对象语言,当中还涉及到程序设计语言,面对对象并不是单一的。这种特性导致了C++语言与C语言能够兼容存在。两种语言之间有时不需修改就能够使用,所以在刚开始学习时,学生觉得相对简单。[1]。然而,这两种语言也必然存在不能共通之处,学生要真正掌握两种不同的语言,就必须对其进行对比,找到其相同之处和不同点。 1.2教学重点偏向语法,课后延伸匮乏 在语言教学中侧重与语法[2]。在传统的教学当中,不管是老师教授还是教材讲解,都是先把概念推从出去,再理解规则,最后用案例讲解。概念知识相对来说不仅枯燥,要想记住也是较难的,在教学过程中,要引起学生兴趣非常难。虽然传统教学中有案例分析,但是案例分析都是各自孤立的,只是针对某一部分的知识,学生无法从中感受到实际运用价值。枯燥无味的文字不仅不能引起学生的学习兴趣,反而会让他们觉得反感。被动地接受理论知识只会让学生很快就忘记了教学内容,只有生动的教学方式才能激发起学生的兴趣。 教材课程中有课时限制,所以教学过程基本上都是从语法、规则、案例等等形式来落实。每一堂课讲解的时间都有限,再加上教师的课前准备不足,那么这堂课的实际效用就非常低。如果在课后没有进行延伸与巩固,那么学生要掌握更深层次的知识是不可能的。在这种情况下,学生掌握的知识只是皮毛,甚至可以说有些接收能力比较差的学习是掌握不了课堂知识。如果没有进行课后巩固,基本上这堂课的知识就是一闪而过了。对于老师传授的知识,学生不可能过目不忘,因此,只有不断对知识进行巩固和复习,才能让学生牢牢记住知识。 1.3教学方式无结合企业实际需要 学生在C++语言的学习中,通常都是局限在一部分知识中,并没有顾全大局的理念。传统的教学都是采用循序渐进的形式,每一节课都给学生灌输新概念、新规则,学生没办法从所有学习的知识中进行融合使用。[3]。就算是在教学中加入了大量的实验课程,也只是围绕某一个章节某一个知识进行实验安排。这种实践课程也只是一时兴趣,学生在学习一段时间后就会产生厌倦,学到的知识进而就无法使用到企业公中。单调的教学模式显然已经让学生失去了兴趣,这对于提升学生的思考能力和动手能力毫无帮助。每一个学生在毕业后都会步入社会,因此,了解社会环境和企业对于人才的要求对于学生来说尤为重要。如果教师一味地向学生传授课本知识,即便学生能够牢牢记住这些理论知识,也不知道如何将其应用到实际操作中。因此,在教学过程中,教师应该注重理论与实际的相互结合,把学生培养成为综合型的人才。 2教学改革策略 针对上述对C++语言教学存在问题的概述,本文从以下几个方面进行策略研究,在实际使用中也取得了不错的反馈。 2.1明确学习与教学目的 学习的动机是学生能够持续进行的基础,完成整个学习与巩固过程都需要学习动机来维持。现在大学生在学习过程中会考虑到今后就业方向,如果在课堂当中能够开展与今后就业相关的内容,那么学生会非常重视这次学习,效果自然就非常明显。对于不同的教学内容,学生往往会表现出不一样的兴趣程度,因此,老师首先要了解学生在学习过程中最为关注的问题,并且针对这些问题设计和安排教学内容。学生对于感兴趣的教学内容往往会表现出更强的积极性和主动学习性,学习效果也会有所提高。结束校园学习后的学生都会走向社会,他们对于未来的就业环境和企业的人才需求表现出更强的兴趣,因此,老师在教学过程中可以适当插入这部分的内容。 2.2教学内容要结合整体与具体两个方面 教材的编排几乎都是从概念、规则、举例这样的形式,但是知识的分散导致每一个章节的内容都联系不上,学生感受不到整体的编程效果。所以,在教学当中,应该注重整体到具体的方式,让学生能够先了解整个C++编程过程,然后再在每一个程序中融入教学内容,把教学具体到每一个知识点中,巩固学生的知识能力,学生在学习完所有知识后就已经完成整个设计。这种教学思路对程序类型的课程学习有极大作用。教学首先必须具备清晰的规划,才不会显得杂乱无章。教师应当确定一个大致的教学方向,然后再对教学内容展开详细的安排,在规划教学内容时,必须充分考虑不同学生对于教学任务的完成程度,从而对教学内容的难度进行适当的调整,尽可能地让更多的学生掌握教学内容。 2.3教学方法注重同中求异、异中求同 教学当中注重同中求异,异种求同的话,能够让学生抓住事物的本质,对事物的理解加深,有利于思维拓展。为了能够让学生的学习更加深入,可以用对比学习的方式,这样的教学效果会更加好。比如说,把c++语言与C语言进行对比教学,这样学生不仅能够学习到新内容,还能够巩固旧知识,得到双收益效果。其实两种语言在设计思路上有较大差异,一种是面对程序语言,把数据与数据捆绑起来,另一种是面对整个过程的语言设计,用分块的模式教学。教学内容的不同并不是意味着教学方法也截然不同,把相似的内容集中起来教学,有利于学生更好地把握知识,采用不同的方法对相同的内容进行教学,有助于老师找到教学中的平衡点,发现更合适的教学方法。 2.4校园学习与企业联合,为就业作准备 很多计算机相关专业的学生为了能够快速就业,在校园里就会选择去外面机构培训。当然培训并不意味就是能提高就业率,主要还是看学生的态度以及掌握情况。如果在高校的C++语言学习中,可以用校园与企业合作的方式来教学,在教学当中可以加入机构培训的方式;在每一次学完知识后就加入实践活动,对于今后的就业帮助极大。同时,提高学生的学习能力以及适应能力方面也有很大帮助。学校更加注重的是理论知识的传授,而企业更加注重的是实际的操作,企业提出人才要求,学校能够更加有针对性地为学生制定学习任务,从而让学生更好地掌握相关的专业技能,让自己离开校园后尽快适应到社会的工作中。 3结语 本文提出了《C++语言程序设计》课程的教学改革思路,通过教学方法、模式的改变,来激发学生的学习兴趣与能力培养,用校企联合的方式来为今后就业奠定基础,累积学生经验的同时还能提前模拟就业。有教学实验证明,这些教学改革方式是能够在一定程度上提高教学效果,并且对编程类型的课程来说都有极大的借鉴作用。传统的教学方式显然已经不能满足人们日益增长的需求,社会环境是不断进步的,竞争是越来越激烈的,为了使学生具备更强的社会竞争力,学校必须转变教学方法,一方面要让学生掌握基础的理论知识,另一方面需要注重学生的操作能力培养。总体来说,就是要理论知识与实践操作相互结合,培养全能型的学生,对他们的知识掌握以及今后的就业都有极大帮助。 参考文献: [1]杨庚.面向对象程序设计与C++语言[M].北京:人民邮电出版社,2012. [2]杨杰,陈雪兆.《C++程序设计》教学中存在的问题及改进建议[J].湖南科技学院学报,2013,11(26):190191. 1 实验教学的目的及要求 1.1 实验教学目的。 上机属于实践环节, 试验教学的主要任务是从应用和实践的角度出发, 使学生通过上机操作掌握本课程所讲述的程序设计思想, 并能独立编写C应用程序, 为提高学生的实际编程能力打下基础。 1.2 实验要求。 1.2.1上机做好充分的准备。上机前没有充分的准备, 会白白浪费上机时间;如果抄书本上的或别人的程序, 会一无所获。上机前写好自己的程序, 并仔细检查, 想想可能出现的情况, 带着问题上机, 这样上机效用就高了。1.2.2上机调试运行程序。考虑可能的各种情况, 分析程序, 调试程序, 看是否是预期的结果。学会独立思考, 勤于分析, 通过自己实践得到的经验用起来更加得心应手。1.2.3整理上机实验结果, 写出实验报告。实验结束后, 要整理实验结果并认真分析和总结, 根据实验要求写出实验报告, 用书面形式加深对本次实验涉及到的相关知识的理解和应用。 2 在实验教学中遇到的实际问题及解决方法 C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格, 这就给编程人员留下“灵活的余地”, 但还是由于这个“灵活”给程序的调试带来了许多不便, 尤其对初学C语言的人来说, 经常会出一些连自己都不知道错在哪里的错误。常见典型错误有: 2.1 书写标识符时, 忽略了大小写字母的区别。 编译程序把a和A认为是两个不同的变量名, 而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上, 符号常量名用大写, 变量名用小写表示, 以增加可读性。 2.2 忽略了“=”与“==”的区别。 在许多高级语言中, 用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写:if (a=3) then… 但C语言中, “=”是赋值运算符, “==”是关系运算符。如:if (a==3) a=b; 前者是进行比较, a是否和3相等, 后者表示如果a和3相等, 把b值赋给a。由于习惯问题, 初学者往往会犯这样的错误。 2.3 多加分号。 本是如果3能整除a, 则i加1。但由于if (a%3==0) 后多加了分号, 则if语句到此结束, 程序将执行i++语句, 不论3是否整除a, i都将自动加1, 这就从根本上歪曲了程序设计的初衷。 2.4 输入数据的方式与要求不符。 2.4.1 scanf ("%d%d", &a, &b) ; 输入时, 不能用逗号作两个数据间的分隔符, 如下面输入不合法: 3, 4 输入数据时, 在两个数据之间以一个或多个空格间隔, 也可用回车键, 跳格键tab。 2.4.2 scanf ("%d, %d", &a, &b) ; C规定:如果在"格式控制"字符串中除了格式说明以外还有其它字符, 则在输入数据时应输入与这些字符相同的字符。下面输入是合法的: 3, 4 此时不用逗号而用空格或其它字符是不对的。 3 4 3:4 2.5 输入输出的数据类型与所用格式说明符不一致。例如, a已定义为整型, b定义为实型 编译时不会给出错误提示信息, 但运行结果将与原意不符。这种错误只有在上机调试的时候才会发现, 如果没有亲手调试过这样的程序, 是不会发现的, 会大大影响同学们对各种数据类型之间区别的理解, 尤其需要注意。 以上这些错误都是我们在实验教学中经常遇到的, 其中有些是不太明显的语法错误, 软件不会给出错误提示, 但是编译链接的时候却会出错, 执行的结果也不正确, 还有的是因为前面的数据定义错误, 造成了后面语句的出错, 使得同学们找不到到底是哪里错了。这些问题, 都是需要同学们熟练掌握编程规范和深入学习较难的章节后才会解决的。 学习C语言始终要记住“千金难买回头看”。“千金难买回头看”是学习知识的重要方法, 就是说, 学习后面的知识, 不要忘了回头弄清遗留下的问题和加深理解前面的知识, 这是学生最不易做到的, 然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计思想, 不管是哪种教材, 一开始就强调这种方法, 这时也许你不能充分体会, 但是学到函数时, 再回过头来仔细体会, 温故知新, 理解它就没有那么难了。学习C语言就是要经过几个反复, 才能前后贯穿, 积累应该掌握的C语言相关知识。 3 对于今后实验教学的几点建议 3.1 启发式教学。 为培养学生逻辑思维和创新能力, 在教学过程中, 教师应遵循启发式教学原则, 通过各种教学方式和手段激发学生的学习欲望, 积极投入到学习活动中, 积极思考, 发现问题, 提出问题, 并逐步解决问题。例如, 在讲解程序设计举例时, 不只是简单地给出程序清单, 而是从分析问题入手, 继而找出解决问题的方法, 再给出算法, 最后编写出完整的程序, 而在这一全过程中, 最关键的是每一步都采用与学生一起探讨的方式, 让学生在启发下思考, 在思考中解决问题, 从而掌握独立分析问题、解决问题的方法。 3.2 积极使用现代化教学手段。 结合传统的“粉笔+黑板”的教学模式, 大量采用多媒体教学, 大大提高了课程教学效果。目前一般为教师提供了两种多媒体教学环境:一种是配有音响和大屏幕投影的多媒体教室;第二种是装有多媒体教学软件的计算机机房。 3.3 网络教学。 为充分发挥校园网的优势, 培养学生自主学习的能力, 可以把课程教学大纲、电子教案、教师精心制作的教学课件等教学资源放在网上供学生自学, 并利用电子邮件、学院网站的交流园地与学生进行课外交流, 为学生答疑解惑, 为学生提供了更为广泛的沟通渠道与环境。 3.4 开放的实验环境。 学校机房应定时向学生开放, 并安排指导教师给予一定的指导, 不仅增加了学生上机实践的时间, 同时也为培养学生较好的自主学习习惯打下了良好的基础。 3.5 实践教学形式多样。 除传统的课堂实验外, 还要开展课程设计、典型程序分析与设计等实践环节, 并要求教师组织C程序设计兴趣小组, 组织C程序设计大赛, 组织学生在学习C语言的编程基础之上学习高级编程语言, 参与科研开发等。 综上所述, 实验教学是提出问题、分析问题、解决问题的过程, 我们要从中了解和把握学生的个性特点、学习情况和学习能力等方面的差异, 从学生的实际出发, 针对不同学生的不同情况组织教学, 使同学们能克服畏难、厌学的情绪, 上课能专心听讲, 提前做好预习与上机调试, 只有做到这些, 才能让同学们真正体会到其实C语言并不难学。 摘要:C语言功能丰富、使用灵活、可移植性好、既具有高级语言的优点, 又具有低级语言的许多特点。在实践教学中, 主要内容包括基础知识、四种结构的程序设计、函数与数组的应用和一些简单的算法。主要结合实验教学中遇到的一些问题及实例, 进一步阐述了如何学好C语言的核心内容。 关键词:高级语言,程序设计,算法,实验教学 参考文献 [1]谭浩强.C程序设计[M].北京:清华大学出版社, 2001. [2]骆健, 何光明.C语言学·练·考[M].北京:清华大学出版社, 2004. [3]谭浩强, 张基温, 唐永炎.C语言程序设计教程[M].北京:高等教育出版社, 1992. 1、实验报告要求使用本校实验报告专用纸张。不允许使用从作业本上撕下来的纸张。 2、实验报告要求字迹清楚,书写认真,内容完整,不允许打印或复印。 3、为保证同学们在实验后达到预定教学效果,不允许抄袭实验报告,不得弄虚作假。 4、实验报告参考课本第13章格式和要求来写。对应各项填入实验报告纸对应的位置。 5、实验报告一般应该有以下各项:①班级②学号③姓名④实验日期⑤实验报告名称(如果没有名称,则用“上机实验1”代替)⑥实验目的要求⑦实验内容(编程题除程序源代码之外,还必须有程序运行时的键盘输入数据和对应显示输出的记录,否则会影响成绩)⑧回答指定的思考问题(没有第⑧项会影响成绩)⑨如果同学们认为对学习有帮助,可以在最后附上实验心得体会,如实验中遇到的问题,问题的解决方法,尚未解决的问题等等,这些会有利于教师今后的教学(第⑨项与实验报告成绩无关)。 6、出现实验报告字迹潦草、内容不全、伪造实验数据、抄袭实验报告、问题回答错误等情况时,教师会酌情扣除实验报告成绩。 靳天飞 姓名: 班级: 学号: 实验内容: 编写一个程序,从键盘输入任意一个五位数,把这个数值分解为单个数字,然后打印出每一个数字(每个数字之间用三个空格分开)。例如用户输入了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;} 【c语言程序设计实验三】推荐阅读: C语言实验报告《逻辑结构程序设计》01-26 《C语言程序设计》说课稿07-13 c语言程序设计试题四08-06 《C语言程序设计实践》课题02-26 c语言程序学习心得11-17 c语言atm程序模拟02-04 c语言程序设计第一章07-18 c语言程序设计试题集07-285.c语言程序设计实验三 篇五
6.c语言程序设计实验三 篇六
7.c语言程序设计实验三 篇七
8.c语言程序设计实验三 篇八
9.c语言实验报告 篇九
10.实验二语言与C语言混合编程 篇十
11.c语言程序设计实验三 篇十一
12.C语言实验教学浅析 篇十二
13.c语言实验报告要求 篇十三
14.大一C语言上机实验报告 篇十四