c语言程序设计第二章(精选8篇)
一、单项选择题
1、以下不是C语言的特点的是________。
A)语言的表达能力强 B)语言定义严格 C)数据结构系统化 D)控制流程结构化
2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。
A)编辑和编译 B)编译和连接 C)连接和运行 D)编辑和运行
3、以下不是二进制代码文件是________。
A)标准库文件 B)目标文件 C)源程序文件 D)可执行文件
4、下面个选项组中,均属于C语言关键字的一组是________。A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type
5、下面四组字符串中,都可以用作C语言标识符的是________。A)print B)I am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY
6、以下不属于流程控制语句的是_________。
A)表达式语句 B)选择语句 C)循环语句 D)转移语句
7、下面描述中,不正确的是________。
A)C语言的函数体由一系列语句和注释组成。B)注释内容不能单独写在一行上。
C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。D)scanf和printf是标准库函数而不是输入和输出语句。
8、下面描述中,正确的是________。
A)主函数的花括号必须有,而子函数中的花括号是可有可无的。B)一个C程序行只能写一个语句。C)主函数是程序启动时的唯一入口。D)函数体包含了函数说明部分。
二、填空题
1、一个完整的C程序至少要有一个________函数。(主函数)
2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统)
3、C语言是以________为基本单位、整个程序由________组成。(函数 函数)
4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出)
5、标准库函数存放在________文件中。(函数库)
6、目标程序文件的扩展名是________。(.obj)
7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数)
8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)
三、应用题
1、你认为C语言的主要特点和用途是什么?他和其他高级语言有什么不同?
答:主要特点:生成的执行程序短,代码效率高,运行速度快。适合开发系统软件。与其他高级语言相比,具有面向机器的指令,具有构造类型能力,适应用面广,可用于一般用途,还可用于开发控制软件。
2、C语言以函数为程序的基本单位,它有什么好处?
C以函数为单位有利于程序的模块化,便于程序调试和阅读。
3、C语言程序结构的特点是什么?由哪些基本部分组成? 答:
1)C程序由函数构成。
2)每个函数由函数说明部分和函数体两部分组成。3)每个C程序总是从main函数开始执行
4)书写格式自由。
5)每条语句必须以分号结束。
4、C语言标识符的作用是什么?命名规则是什么?与关键字有和区别?
答:标识符是C语言中用户给用到的变量、常量、数组、函数、文件、类型等的命名。命名规则:以字母或下划线开头,后跟字母、数字或下划线。标识符一般不超过8个字符。标识符不能与系统关键字同名。
C / C + + 语言程序设计是计算机专业本科生的专业基础课程,也是大学计算机基础系列课程的核心课程。通过本系列课程的学习,旨在使学生掌握程序编写的基本技能,培养程序设计思想和方法,养成良好的编程风格,编制高效可靠的程序,进而具备灵活利用所学知识解决实际问题的能力。长期以来,高校都在不断地探索和实践关于C /C + + 语言程序设计课程的教学模式。传统的教学一般着重概念和语法规则,缺少学习的实用性和针对性,实验环节与课堂教学环节存在不同程度的脱节。面对繁复枯燥的语法规则和程序结构,学生也很难的有学习兴趣。因此,根据质量工程的相关要求,研究教学改革方案,找出目前C /C + + 语言程序设计课程在教学中存在的主要问题,对现有的教学方法和教学手进行现代化研究与实践,具有十分重要的现实意义。
2 C / C + + 语言程序设计教学现状
本人承担了多年的C /C + + 语言程序设计课程的教学工作,在教学过程中发现了现有教学模式的一些问题和不足,分析总结如下:
( 1) 教学中过度依赖课本,“照本宣科”现象比较普遍。受中学教育模式影响,大多数教师授课时倾向于依赖选定的教材或很少几本参考教材授课,课程章节固化,凡事以课本为主,课本里有什么就讲什么,授课内容“流程化”“格式化”。这虽然有助于教学内容的结构和完整,学生也能直接沿用中学培养的习惯获得知识,但这只不过是“填鸭式”教学的延伸。长此以往,学生学习的主动性会逐渐丧失,对课本外的东西提不起兴趣,学习也只是为了应付考试。
( 2) 过于偏重理论教学,实践教学所占比重较小。在有限的课时教学中,传统方式仅能将基本的、重要的概念、语义语法规则教授给学生,而对其应用方式、更深层次的知识点、探索及发散性的科学问题涉及较少。课程考核也大多片面强调书面成绩,对于C /C + + 语言程序设计这种实践性要求强的课程,书面考试并不能反映出学生对课程的掌握水平,反而误导部分学生靠“死记硬背”课本上的知识点和程序片段蒙混过关。
( 3) 课程衔接性差,在知识体系中,没能很好形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C /C + + 语言知识应用于专业问题的描述和求解中。在教学中,缺少利用所学知识解决实际问题的教学引导,书本与现实隔离,很难做到“学为所用”。
针对上述问题,结合本校实际,对C /C + + 语言课程教学的主要环节教学模式、上机实践、课程考核等方面进行了研究与探讨。
3 C / C + + 语言程序设计教学改革与探索
结合C /C + + 课程的特点,针对传统教学中存在的问题,积极进行课堂教学、实验教学和考核方式的改革,具体从以下几个方面进行了一定的探索实践:
3. 1课程教学改革
( 1) 打破课本章节格式,探索“实例驱动式”和“阶梯式”教学方法针对C /C + + 语言程序设计的课程特色,强调“从实践中来,到实践中去”的教学目标。在课程教学中,注意引入具体化的实例,使得概念的抽象都来源于实际的例子。比如在C语言教学中发现很多同学上课时能听懂,看别人的程序也能看懂,但自己动手去写时却无从下手。这种情况不是个例,而是学习语言类课程时大多数学生都存在的问题。在教学中可以结合生活中的实际例子来示范,为学生“看”和“写”搭建桥梁,培养程序设计思想。例如,从做面包到C语言程序编写的示例( 图1) 。在教学中,可以引导学生分步考虑面包的制作工序,操作中需要摒除详细的细节部分,抽象出核心的流程,然后一步一步代入C语言的程序设计结构和语法规则,使得学生对课程内容有熟悉度和参与感。
通过“做面包”的例子,可以结合变量在内存中存储的方式,帮助学生掌握“变量需要先声明才能使用”的知识点,同时也铺垫了函数的概念,还可以进一步扩展加入分支结构( 面包的不同口味) ,循环结构( 制作多份面包) 等。通过动员学生逐步思考,一起动手做面包,把计算思维与有趣的课堂互动结合起来,既提高了学生学习的兴趣,也“润物细无声”地把编程思维传达到学生心中。而后在学生通过课程学习已经建立了一定的编程思维的基础上,再结合我校的卓越工程师计划,把实际项目引入课堂中来,深入引导实例教学,实现学生从“课本学习”到“实践学习”的转变,通过项目实例让学生亲身感受所学知识的用处,也为毕业后的职业发展打下扎实的基础。
另一方面,知识的获取需要一个循序渐进的过程。这就需要教师在备课时,将同类型问题找出来,将这些问题按难易程度排队上课,先让学生解决最简单的问题,再依次提高问题的难度。通过教学,学生对于同类问题的解决就有了比较深刻的认识。比如上面提到的做面包的问题,同一个问题可以分级扩展,从做一份面包到做多份面包,从做单一口味的面包到做多种口味的面包,从做面包到卖面包,进而面包分类,存货处理等等。通过与实际例子结合循序引进,反复强调知识点加深学生印象,打牢基础。C语言的开设一般在大学一年级,此时着重培养学习兴趣和规范学生养成良好的编程习惯,而C + + 的学习着重于面向对象的程序设计,一般开设于大二下学期或者大三上学期,在C + + 面向对象语言学习时,结合类和对象的概念以及继承和派生等等知识点还可以对“做面包”的问题再做进一步扩展,从做面包到做馒头、饼干等各种糕点,鼓励学生动脑思考逐渐扩充功能,可以自己编程开发一个具备制作、买卖、分类、存货处理等功能的糕点铺。教学中可以根据需要切换各种生活场合,提高学生兴趣,强调编程思想源于生活,服务于生活,学生在日常中也会经常回想起课堂所学知识,达到事半功倍的效果。
( 2) 高效利用团队教学资源,体现从计算机基础课到专业课的顺利交接
C / C + + 语言程序设计立足于引导学生建立基本的“人机互动”概念,构建编程思维理念,掌握核心程序设计方法,开发“发现问题,凝练问题,求解问题”的能力。它是计算机基础课到计算机专业课程的重要衔接,所以在课程设计上,要逐步培养学生从“使用计算机工具→理解计算机工作原理→开发计算机软硬件”的计算思维。但这个目的只通过一门课程是无法完成的,在教学过程中,需要利用院系优秀的教学资源,组建教学团队,使得课程选取→大纲制定→计划培养→落实实施形成系统化,脉络化的结构,加强课程之间的衔接和交互,增加知识的穿插讲授,使得各个课程相辅相成,相得益彰,起到事半功倍的作用。通过对不同专业需求的分析,在制定教学大纲时注重课程的衔接,在实际操作中注重教学团队中任课教师课堂情况的反馈,通过强化教学内容和学生掌握情况双重渠道,避免课程之间的脱节。针对一门课程,学生学分的获取和讲授课时的结束并不意味着本门课程的结束,在形成系统化的课程设计后,可以有效利用每门课程的信息反馈,有的放矢的对学生薄弱环节进行再强化,达到扎实学习,学以致用,而不仅仅是应付考试的良性循环机制。
3. 2上机实践改革
计算机语言类课程的学习关键在于动手实践,但即使意识到了实践的重要性,学生真正动手也往往受限于上机时间和实践平台。在传统的实验教学模式下,大多此类课程都由实验指导书作为参照,学生按图索骥的输入一些代码,完成一些任务。评判的方式也大多依赖于教师,学生实践得不到实时反馈,积极性很难调动起来,课下也不会有意识去编程实践。通过借助我校搭建的ACM/ICPC竞赛平台,学生平时有充足的题目可供练习。而且所有题目规范,输入输出格式明确,评判也由机器在后台完成,正确与否也能实时反馈。通过多组数据的测试,竞赛平台能够发现并迫使学生修正编程中存在的容易人为忽略的问题。另外,ACM/ICPC竞赛平台还可以按照班级、年级、专业等排名,学生也能实时监控自己做题的数量、成功率等,并可以通过Q&A的环节进行错误求助并与其他同学沟通。学生的学习积极性一下子就提高了起来,出错的题目,知识点通过讨论也能自己在课余时间解决。
通过与ACM/ICPC竞赛平台的结合,主要实现了以下几个 方面的探索:
( 1) 激发学生学习兴趣,创造兴趣学习小组
在ACM/ICPC的平台的辅助下,激发学生分组分队共同解决问题,成立程序编写互帮互助小组,采用不定时竞赛的方式对各小组进行考评,并辅以奖励和惩罚措施,尽量让每个学生都不落队。通过组队,同学之间也有了更好的沟通渠道,每个人成为团队的一部分,培养了学生的分享和互帮互助的团队合作精神。
( 2) 鼓励学生涉猎算法等相关知识,培养计算思维
通过ACM选拔,ACM战队的主力队员会通过集训学习数论、计算几何、动态规划、二分图、博弈论、网络流等相关知识,但竞赛选拔的队员屈指可数。这些优秀的种子选手和现有的ACM培训资源却未被大多数学生利用。C /C + + 语言类教学和大多数计算机类课程所追求目标,其核心就是培养学生的计算思维。我们采用了通过优秀学生和ACM集训队带队教师的不定期讲座和培训,以及培训资料等资源的共享来吸引更多的学生参与到程序设计的队伍中来,并已经在学生中通过口耳相传起到了一定的影响力。在上机课中适度引入部分难度稍大的,需要借助其他相关知识才能解决的问题,鼓励学生查阅资料,自己动脑,动手去分析和解决问题,养成良好的主动学习习惯。
3. 3课程考核改革
课程设置的目的不是考试,而是解决问题,特别对于C /C + + 语言程序设计类需要实践的课程尤其是这样。传统的卷面考试不仅不能反映学生对课程的掌握程度,反而诱导出诸如靠划重点、死记硬背程序企图蒙混过关拿到学分的问题。所以在对C /C + + 语言程序设计考核时,我们采用了平时成绩和期末机考相结合的方式。考试成绩分三部分组成,上课活跃度占30% ,分组实践占30% ,期末机考占40% 。其中,上课活跃度包括出勤次数和上课提问情况; 分组实践指通过小组成员共同努力分析、解决实例的情况,一般在上机时根据进度提出难度稍高的问题,鼓励学生通过团队协作,查阅课外资料等来完成; 期末机考是从ACM平台上抽取一部分题目作为期末考核,考察学生实际编程能力。
4结束语
在研究与探索C /C + + 语言程序设计教学的过程中,通过“阶梯式”“实例驱动”的教学方法,辅以ACM竞赛平台,优化配置团队教学资源,追求实用性、系统化、高效率的课程实现,全面提升学生的对程序设计的实践应用能力。通过教学改革,提高学生在学习中发现问题、分析问题和解决问题的能力,培养学生编程思维,计算思维。实践表明,本文提出的教学改进方法可以激发学生学习的热情和兴趣,有效地提高了C /C + + 语言程序设计课程的教学效果。
摘要:针对C/C++语言程序设计课程语法规则繁琐、概念抽象等特点,结合我校实际情况,通过深入分析课堂教学、上机实验及课程考核等教学环节,从教学方法、实验设计及课程考核三方面提出改进方案,提出了以培养学生计算思维为最终目标,以提高学生学习兴趣,激发学生学习积极性为目的,以“阶梯式”“实例驱动”为教学方法,整合教学团队共同促进教学的模式。通过教学改革,激发了学生对C/C++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。
关键词:教学方法案例教学启发教学教学效果
0 引言
《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的语言课程,在整个语言课程体系中占有非常重要的地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法,结合近几年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言课程的教学和学习有所帮助。
1 分析教学中存在的问题
《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现,这就要求学生首先要能够理解和掌握数学知识,才能将其转化用c语言来实现。在调试程序时,提示的信息都是用英语给定,那么也就要求学生掌握最基本的英语单词,有些甚至是计算机专业英语,能将英语句子翻译为汉语,才能够对程序加以修改。学生在心里认为c语言难学,没有积极学习的主动性,导致上课时没兴趣,不能专心听讲,布置的作业无从下手,在实践课中,看到要编写的程序题目,理不出头绪。
2 涉及新的知识要有导入
在教学的過程中,要将新的知识点,要有很自然的导入语,引导学生思考问题和解决问题的方法。例如:scanf(“%d”,&a);只能从键盘接受 一个整型数,现在要输入40名学生的成绩,如何通过一个scanf函数来实现,难道是要定义40个变量,那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师,给他们提出问题,在给出解决问题的办法。
3 举一反三
给定一个例子时,将涉及到的所有内容都要讲到。各种形式,可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:
(1)main()(2)main()
{ int i=1,n;{inti=1,n;
doubles=1; doubles=1;
scanf("%d",&n); scanf("%d",&n);
while(i<=n) do{ s*=i;
{s*=i;i++;
i++;} }while(i<=n);
printf("%lf",s); printf("%lf",s):
} }
(3)main()(4)main()
{inti,n ; {int i,n;
double s=1;doubles=1;
scanf("%d",&n); scanf("%d",&n);
for(i=1;i<=n;i++)i=n;
s*=i;while(i>=1)
printf("%lf",s); {s*=i;
} i--;}
printf("%lf",s);}
(5)main() (6)main()
{intI,n; { inti=0,n;
doubles=1; doubles=1;
scanf("%d",&n); scanf("%d",&n);
i=n; while(i<=n)
for(i=n;i>0,i--) {i++;
s*=I;s*=i;}
printf("%lf",s);}printf("%lf",s);}
一个例子可以给出多种方法来实现,在这只给出6中形式,从这6种中,就可以看到初值不同,语句的书写顺序不同。通过一个例子,让学生能理解各种形式,遇到诸如此类问题时,就可以迎刃而解。
4 与实践教学相结合
程序设计课程具有很强的实践性,对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。
参考文献:
[1]朱健,庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.
[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008(1).
[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.
//定义学生结构体,st数组。
int score[5];float jqave;int rank;}st[27];
struct kecheng { int num;char kcname[20];
//定义课程结构体,course数组.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;
}course[5];
void readdata1(){
int i,j;
char str1[100];
FILE *f1;
f1=fopen(“c:xinji110213.txt”,“r”);
fgets(str1,100,f1);// printf(“%-s”,str1);
for(i=0;i<27;i++)
{
fscanf(f1,“%d%s”,&st[i].num,st[i].name);
// printf(“%-4d%-10s”,st[i].num,st[i].name);
for(j=0;j<5;j++)
{
fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}
// printf(“n”);}
fclose(f1);}
void readdata2(){
int k;
char str2[100];
FILE *f2;
f2=fopen(“c:xj02kc.txt”,“r”);
fgets(str2,100,f2);// puts(str2);
for(k=0;k<5;k++)
{
fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);
// printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);
}
fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)
{
for(j=0;j<5;j++)
{
s+=course[j].xuefen;
sum+=st[i].score[j]*course[j].xuefen;
}
st[i].jqave =sum/s;
} }
void ranking()
{ int i,j;
for(i=0;i<27;i++){
st[i].rank=1;
for(j=0;j<27;j++)
if(st[i].jqave st[i].rank=st[i].rank+1;} } void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 学号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 n”);fprintf(fp,“ 名次 学号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 n”); for(i=0;i<27;i++) { printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); for(j=0;j<5;j++) { printf(“%10d”,st[i].score[j]); fprintf(fp,“%10d”,st[i].score[j]); } printf(“%12.2fn”,st[i].jqave); fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);} void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格 n”);printf(“ 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格 n”);for(j=0;j<5;j++) { printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen); printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); } fclose(fp);} void pingjunfen(){ int i,j; for(j=0;j<5;j++) { float zongfen=0,pingjunfen=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; } } void biaozhuncha(){ int i,j; for(j=0;j<5;j++){ float zongfen=0,pingjunfen=0,x=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; for(i=0;i<27;i++) x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen); course[j].biaozhuncha=(float)sqrt((x/27)); } } void count(){ int i,j; for(i=0;i<5;i++) { course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0; for(j=0;j<27;j++) { if(st[j].score[i]<60) course[i].bujige++; else if(st[j].score[i]<=69) course[i].jige++; else if(st[j].score[i]<=79) course[i].zhongdeng++; else if(st[j].score[i]<=89) course[i].lianghao++; else course[i].youxiu++; } } } void chengjitiao(){ int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do { printf(“请输入你要查询的编号 退出请按零”); scanf(“%d”,&i); fprintf(fp,“ 编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);printf(“ 编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name); printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){ printf(“%9d”,st[i-1].score[j]); fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28); } void bujigexueshengmingdan(){ int i,j; printf(“不及格学生名单如下:n”);printf(“ 学号 姓名 不及格课程 分数 n”);for(i=0;i<27;i++){ for(j=0;j<5;j++) if(st[i].score[j]<60) {printf(“%3d%12s”,st[i].num,st[i].name); printf(“%15s%8dn”,course[j].kcname,st[i].score[j]); // printf(“ 平均分”); // printf(“%10.2f 名次%8dn”,st[i].jqave,st[i].rank); } } } void youdeng(){ int i,k;printf(“ 优等生名单如下n”);printf(“编号 姓名 数学分析 高等代数 C语言 大学物理 大学艺术 加权平均分 名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++) if(st[i].jqave>=90||st[i].rank<=3) { printf(“%2d%10s”,st[i].num,st[i].name); for(k=0;k<5;k++) printf(“%9d”,st[i].score[k]); printf(“%10.2f%8dn”,st[i].jqave,st[i].rank); } else; } } void caidan() { loop: printf(“ &&简易教学管理系统&&n”); printf(“press 1 for 排名后的成绩表 !n”); printf(“press 2 for 各科成绩情况!n”); printf(“press 3 for 成绩条!n”); printf(“press 4 for 不及格学生名单!n”); printf(“press 5 for 优等生名单!n”); printf(“press 0 for 退出n”); int t; scanf(“%d”,&t); switch(t) { case 1: paiminghoudechengji();break; case 2: xiechengji();break; case 3: chengjitiao();break; case 4: bujigexueshengmingdan();break; case 5: youdeng();break; case 0: exit(0); } goto loop; } void main(){ readdata1(); readdata2(); jqave(); ranking(); pingjunfen(); biaozhuncha();count(); 一、教材名称:< 二、课程总学时:108学时 [理论: 72 学时;实验与上机:36学时] 三、适用专业和开课学期:软件技术专业,第2学期。 四、实验的目的与任务: 《C程序设计》是一门实践性很强的课程。通过实验使学生加深对课堂讲授的概念、语法、算法、编程技术的理解;熟悉C程序设计的开发环境;掌握程序设计和调试的基本技能。并通过实践激发学生进一步学习的积极性,培养学生的学习兴趣和创新思维。通过8个实验,使学生经过一定数量的上机训练,了解和掌握C程序设计的环境、程序的数据表示、程序的执行流程控制、程序的整体结构等C程序设计的基本概念和应用技术。 五、主要仪器设备及台(套)数 安装Windowsxp,TC2.0等软件的计算机,每生一台。 六、主要实验教材(指导书)及参考用书: 谭浩强主编,《C程序设计题解与上机指导》,清华大学出版社。 七、成绩考核方式及评分标准 实验占课程总课时1/3,每项实验按该实验说明要求规定的评分标准积分,学期末合计的实验成绩占课程总成绩的18%。 八、实验开出率:100% 九、实验项目与要求 实验一:C程序的运行环境和运行一个C程序的方法(2学时) 实验性质:验证性实验 一、实验目的 1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。2.了解在该系统上如何编辑、编译、连接和运行一个C程序。3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.调用编辑程序,输入教材第一章例1.1程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.输入并运行教材第一章中例1.2。 3.输入并运行教材第一章中例1.3,了解如何在运行时向程序变量输入数据。 实验二 数据类型、运算符和表达式(2学时) 实验性质:验证性实验 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 3.进一步熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容 1.输入并运行教材第三章例3.6.即: #include printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); } 在此基础上 ①将第二行改为: int c1,c2;再使之运行,分析结果。②再将第三行、第四行改为: c1=300;c2=400;再使之运行,分析其运行结果。 2.输入并运行教材第三章习题3.6,在上机前先用人工分析程序写出应得结果,上机后将二者对照。 3.输入并运行习题3.10。即: #include printf(“%d,%d,%d,%d”,i,j, i++,j++);⑤程序改为: main(){int i,j,m=0,n=0;;i=8;j=10;m+=i++;n-=--j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);} 实验三 最简单的C程序设计(2学时) 实验性质:验证性实验 一、实验目的 1.掌握C语言中使用最多的一种语句—赋值语句的使用。2.掌握数据的输入输出的方法,能正确使用各种格式转换符。 二、实验内容 1.输入并运行以下程序: #include void main(){int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61;b=62; c1=’a’;c2=’b’; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf(“a=%d,b=%dn c1=%c,c2=%cnd=%6.2f,e=%6.2fn”,a,b,c1,c2,d,e); printf(“f=%15.6f,g=%15.12fnm=%ld,n=%ldnp=%u,q=%un”,f,g,m,m,p,q); } 在此基础上,做以下改动: ① 将程序第8-13行改为: a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。 ② 在①的基础上将printf语句改为: printf(“a=%d,b=%dn c1=%c,c2=%cnd=%15.6f,e=%15.12fn”,a,b,c1,c2,d,e); printf(“f=%f,g=%fn m=%ld,n=%ldn p=%d,q=%dn”,f,g,m,n,p,q); 运行程序。 2.编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。 上机运行程序,比较用printf和putchar函数输出字符的特点。 实验四 选择结构程序设计(2学时) 实验性质:设计性实验 一、实验目的 1.了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。 二、实验内容 先编程序,解决以下问题,然后上机调试运行程序。1.有一个函数 xy2x13x11x11x10 x10用scanf函数输入x的值(分别为x<1、1~ 10、≥10三种情况),求y值。2.给出一个百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。 实验五 循环控制(4学时) 实验性质:设计性实验 一、实验目的 1.熟悉用while语句,do-while语句和for语句实现循环的方法。2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 二、实验内容 编程序并上机调试运行。 1.输入两个正整数,求其中最大公约数和最小公倍数。2.用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。 实验六 数组(4学时) 实验性质:设计性实验 一、实验目的 1.掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2.掌握字符数组和字符串函数的使用。3.掌握与数组有关的算法(特别是排序算法)。 二、实验内容 编程序并上机调试运行。 1.用选择法对10个整数排序。10个整数用scanf函数输入。2.将两个字符串连接起来,不要用strcat函数。实验七 函数(4学时) 实验性质:设计性实验 一、实验目的 1.掌握定义函数的方法; 2.掌握函数实参与形参的对应关系,以及“值传递”的方式; 3.掌握函数的嵌套调用和递归调用的方法; 4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。 二、实验内容 编程序并上机调试运行。 1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。2.求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出的最大公约数求最小公倍数。 (1)用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。 (2)不用全局变量,两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。 实验八 预处理命令(2学时) 实验性质:设计性实验 一、实验目的 1.掌握宏定义的方法; 2.掌握文件包含处理方法; 3.掌握条件编译的方法。 二、实验内容 编程序并上机调试运行。 1.定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。 说明:在程序主函数使用宏时只能用两个实参,如SWAP(a,b),不能用三个参数。2.用条件编译方法实现以下功能: 输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下字母(如‘a’变成‘b’,„,‘z’变成‘a’。其它字符不变)。用#define命令来控制是否要译成密码。例如: #define CHANGE 1 则输出密码。若 #define CHANGE 0 则不译成密码,按原码输出。用条件编译方法来处理。 实验九 指针(4学时) 实验性质:设计性实验 一、实验目的 1.掌握指针的概念,会定义和使用指针变量; 2.学会使用数组的指针和指向数组的指针变量; 3.学会使用字符串的指针和指向字符串的指针变量; 4.学会使用指向函数的指针变量; 二、实验内容 编程序并上机调试运行程序(都要求用指针处理)。1.输入三个整数,按由小到大的顺序输出。 2.将一个3*3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素: 1 7133915511 19将数组名作为函数实参。函数调用后在主函数中输出已转置的矩阵。3.用一个函数实现两个字符串的比较,即自己写一个strcmp函数: strcmp(s1,s2)如果s1=s2,则函数返回值为0;如果s1≠s2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1 两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。 实验十 结构体和共用体(4学时) 实验性质:设计性实验 一、实验目的 1.掌握结构体类型变量的定义和使用; 2.掌握结构体类型数组的概念和应用; 3.掌握共用体的概念与使用。 二、实验内容 编程序,然后上机调试运行。 1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。 要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。 2.输入和运行以下程序: #include union data {int i[2]; float a; long b; char c[4]; }; void main(){union data u; scanf(“%d,%d”,&u.i[0],&u.i[1]); printf(“i[0]=%d,i[1]=%dna=%fnb=%ldnc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%cn”,u.i[0],u.i[1],u.a,u.b,u.c[0],u.c[1],u.c[2],u.c[3]);} 输入两个整数10000、20000给u.i[0]和u.i[1]。分析运行结果。 然后将scanf语句改为: scanf(“%ld”,&u.b); 输入60000给b。分析运行结果。 实验十一 位运算(1学时) 实验性质:设计性实验 一、实验目的 1.掌握位运算的概念和方法,学会使用位运算符; 2.学会通过位运算实现对某些位的操作。 二、实验内容 编写程序,上机调试并运行。 1.设计一个函数,使给出一个数的原码,能得到该数的补码,用八进制形式输入和输出。 实验十二 文件(1学时) 实验性质:设计性实验 一、实验目的 1.掌握文件以及缓冲文件系统、文件指针的概念; 2.学会使用文件打开、关闭、读、写等文件操作函数。3.学会用缓冲文件系统对文件进行简单的操作。 二、实验内容 1.从键盘输入一个字符,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符以“!”结束。实验十三 学生成绩管理(4学时) 实验性质:综合性设计性实验 一、实验目的 1.综合运用C程序设计知识,解决实际问题。 二、实验内容 1.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。 2.将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu-sort”中。 3.将上题已排序的学生成绩文件进行插入处理。插入一个学生的三门课成绩。程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。 学生的原有数据为: 91101 Wang 89,98,67.5 91103 Li 60,80,90 91106 Fun 75.5,91.5,99 91110 Ling 100,50,62.5 91113 Yuan 58,68,71 要插入的学生数据为: 91108 Xin 90,95,60 制 订:程世辉 教研室:软件教研室 执笔人:程世辉 审定人: 编写程序,实现单链表的插入、删除、输出、查找、统计以及销毁功能。 单链表的每个结点存储一名学生的信息,包括:学号、姓名、性别、年龄、三门课程(高数、英语、C语言)的成绩、三门功课的平均分。 结构体类型声明如下: typedef struct student { char sno[8]; char name[20]; char sex; int age;double score[3];double avg; struct student *next;} STUDENT, *PSTUDENT; 要求: ⑴一律使用 STUDENT 声明学生结构体的变量,一律使用 PSTUDENT 声明指向学生结构体的指针变量 ⑵程序运行过程中要有菜单提示,菜单如下: *************************************************************** * 1.Insert a student * * 2.Delete a student * * 3.Display the link list * * 4.Display excellent students * * 5.Search a student by the name * * 6.Display the average score of three courses * * 0.Exit the program * *************************************************************** 1 汇编语言与C语言的混合编程方法 1.1 C语言调用汇编语言子程序 在C语言程序中调用汇编指令较多的情况下可以采用直接调用汇编语言子程序的格式, 而且由于C语言编译系统要具有约定的段序以及规定的段组合。因此, 要实现C语言对汇编语言子程序的调用, 汇编语言必须严格遵守编译系统的约定或要求的组合和段顺序。C语言调用汇编子程序必须遵循以下规则。 一是程序内需要使用“EXTERN”关键对函数显示进行说明, 并将此作为建立C语言与汇编子程序的接口, 而且函数的名字必须在8个字符以内, 而且函数名设置为下划线格式。二是根据参数在参数标准的顺序, 依据反序作顺序, 依次将参数压入栈中。最后一个参数首先进栈, 最后一个参数在栈中的地址最高。三是依据参数的值进行传递;四是对代码段进加以说明, 并且使用—TEXT作为加代码段命名原则。过程名前加下划线, 并且是公共过程pulic-过程名。根据C程序模式大小确定汇编使用远过程或近过程, 小模式对应近过程, 大模式对应远过程。五是汇编程序的参数取C程序的参数。由于远过程在返回地址时需要占用4个字符, BP压入需要占用2个字符, 因此首个参数需要位于BP+6指向的远远。而近过程第一个参数则位于BP+4指向的单元。六是汇编程序需要兼顾保护寄存器。C语言调用编程语言子程序会导致寄存器变量超过2个, 而多余部分会自动转入栈中存储。因此, 汇编过程必须严格遵守以下开头和结尾格式: PUSH BP MOV BP, SP PUSH SI PUSH DI 语句 POP SI POP BP RET 1.2 汇编语言调用C语言子程序 由于汇编语言的巨大优势, 在汇编程序中可以实现调用C语言子程序。汇编语言调用C语言子程序不需要改变汇编语言主程序和子程序的格式, 只需确保主程序和子程序的格式相同, 并且在程序开始前加入“EXTREN函数名”即可。表明该函数是用来调用C语言子程序的外部函数。而对外部函数可通过主过程中CALL语句进行调用, 并将CALL语句格式设置为“CALL NEAR PTR函数名”。如果子程序为C语言子程序, 并且C语言子程序中只包含C函数, 则不需要使用EXTERN说明。 1.3 C语言程序嵌入汇编语言 C语言嵌入汇编语言中有C程序调用汇编子程序模块以及在C程序中嵌入汇编指令两种。两种嵌入方式分别应用在不同的情况。 第一, C程序条用汇编子程序模块的嵌入方式中的模块划分原则:为完成任务的需求, 每个模块的体现形式为函数或者过程, 再根据模块的特点选择编写语言进行编写。如果主程序的编写包含C语言, 而模块使用汇编语言进行编写, 则需要使用C程序调用汇编子模块。具体操作方法为分别编写汇编C主程序和汇编子程序, 并依据各自的特点形成符合自身编写语言的目标代码模块, 再将目标代码模块相互连接从而形成最终的可执行文件, 通过执行可执行文件即可实现C程序调用汇编子程序模块。 第二, 在C程序中嵌入汇编指令多用于C语言无法实现对硬件控制的情况。例如对寄存器的值、中断标志寄存器的修改、重复使用某种功能、对时间的要求等等, 可通过在C程序中嵌入汇编指令去实现。使用C程序中嵌入汇编指令时需要注意换行符、寄存器的命名、修改编译连接的命令以及拷贝MASM EXE程序, 存储在Turbo C目录下, 并命名为TASM.EXE进行编译。 2 C语言与汇编语言连接的关键问题 混合使用汇编语言和C语言进行编程还需要解决参数传递、调用关系的确定以及汇编程序与C程序的模块连接三个问题。 在参数传递上, 参数传递是混合编程过程中必须解决的问题, 通常情况下采用堆栈实现参数传递。首先, 将汇编语言中的BP作为基址寄存器, 调用程序将按照反序C语言中的参数压入堆栈中, BP加上不同的偏移量就可以实现对参数的使用。 在调用关系的确定上, 需要实现说明需要调用的函数或过程, 并建立相应的调用及被调用关系。其中被调用的函数或过程为外部类型, 可被外部模块引用。调用程序内也需要说明被引用外部模块的名称。 在汇编程序与C程序的模块连接上, 为确保正确连接, 不仅需要确保不同语言模块的存储模式具有一致性, 还需要汇编模块遵守C兼容的函数和变量命名约定。 3 结语 汇编语言和C语言具有不同的优点和缺陷, 混合汇编语言和C语言进行编程可取长补短, 同时发挥两种语言的优势, 并且弥补两种语言的不同, 实现参数传递、数据共享, 而且具有事半功倍的效果。 摘要:汇编语言和C语言是两种不同的编程语言, 软件开发过程中采用两种语言混合程序设计技术可以极大的提高工作效率以及程序的性能。文本首先简单介绍C语言调用汇编语言子程序、汇编语言调用C语言子程序、C语言程序嵌入汇编语言三种常见的混合编程方法, 在混合编程中还需要注意参数传递、调用关系的确定以及汇编程序与C程序的模块连接三个问题。 关键词:汇编语言,C语言,混合程序设计 参考文献 [1]杜钦生, 楚叶峰, 唐伎玲.基于ARM的汇编语言与C语言混合编程的方法研究[J].长春大学学报, 2011 (10) . [2]柴孝.C语言与汇编语言的混合程序设计技术[J].信息与电脑 (理论版) , 2011 (11) . [3]林法.基于汇编语言与C/C++语言混合编程的设计研究[J].电子技术与软件工程, 2014 (04) . 关键词 C语言 程序设计 教学方法 中图分类号:G648.2文献标识码:A文章编号:1002-7661(2011)09-0028-02 C语言是计算机专业和相关专业一门很重要的专业基础课,学好C语言为数据结构等后继课程有很大帮助。但是对于高职学生,数学、英语等基础知识较差,而C语言又作为他们面临的第一门语言类课程,因而学习C语言具有很大的难度。本文结合本人几年来的教学经验,对怎样提高C语言教学质量,如何让学生掌握好C语言基础知识点提出几点看法。 一、创设情境,激发学生学习兴趣 大多数学生对新课程都很感兴趣,都很想学好这门课,所以上好第一节C语言课是一个很好的开始。C语言有很多语法和知识点需要掌握,但是如果第一节课就开始介绍C语言的知识点,不但得不到好的收效,还会让学生因为知识枯燥,不易理解而失去学习本课程的兴趣。上第一节课,先讲授C语言这门课程的重要性以及在计算机课程中的地位,然后给学生演示几个简单的游戏,比如:小型运算器,俄罗斯方块,贪吃蛇等,告诉他们这些都可以用C语言来编写。通过这些实例的引入,可以让学生了解到C语言的实用性,激起学生学习的兴趣。 二、注重教学过程,采用多种教学手段 在教学过程中,把知识点融合在实例中,加强学生对知识点的理解,本人在教学过程中采用以下相应方法: 1.深入浅出 C语言主要包括C语言语法、结构化程序设计、数组、函数、指针、文件等。教材一般都会归纳,但是如果把每一块放在一起讲,难点就比较多。比如,C语言的数据类型很丰富,如果全部放一起讲,学生肯定很难记住,所以可以先讲3种基本数据类型、运算符及相关表达式,再通过一个简单程序,输入输出数据。这样子,学生就逐渐掌握了基本数据类型、定义变量,以及输入输出函数的基本使用。对于一些比较难以理解的概念,可以借用比喻来解释,比如在讲到变量的时候,包括变量的地址、变量名、变量值,在课堂上借用教室打个比方:10网构班(变量名)在实验楼302(变量地址)有45个学生(变量值)。这样学生在定义变量的时候就不会那么抽象了。 2.画出流程图 做任何事情都有一定的步骤,这些步骤是按一定的顺序进行的,缺一不可,如果你对一个问题没有任何思路的话,那肯定编不出程序。在解题的时候,可以先画出流程图,再编程序。如:将50名学生中成绩高于80分的成绩打印出来,可画出流程图如下: 3.先复习旧知识,再导入新课 新内容的导入方法很重要,新课前先回顾复习学过的知识点,从旧知识的某一个点出发,提出和新内容相关的问题,让学生思考,并可适当提问,这样可激发学生思考的积极性。在课堂气氛活跃的情况下,教师适当引导,导入新的知识,这样的讲法可以激发学生的兴趣,使学生更容易接受和理解新知识。 4.任务驱动 每节课开始的时候,可以根据需要布置一些问题,让学生带着相关的问题听课,也可让学生自己思考、归纳,或者互相讨论,这样学生会更有目的性和方向性地听讲。 如:在循环结构for语句中,可以设置三个驱动任务:(1)for语句的一般形式;(2)for语句的执行过程;(3)for语句三个表达式代表的含义,三个表达式能否省略? 5.讲解实例,举一反三 对于C语言程序设计这门课来说,精心设计一些实例,用实例来使概念形象化,深化理解 ,通过教师的分析讲解,使学生更容易入手。然后我们可以对这个简单实例提出新的问题、新的改善方案,引导学生参与对现有程序的修改中来。对于学生的改进方案,教师可引导全体学生来评价优劣,找出其优点,修改其错误,逐步完善,不断优化。这样可以调动学生自主学习积极性,用实例教学加强师生互动。 比如可以在平常写的实例中设置一些待解决的错误,如:故意将赋值符号“=”和等号“= =”互换,漏写分号“;”和大括号“{ }”,引导学生在编程和调试过程中逐一发现并解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。 6.总结知识点 在课堂讲解过程中,知识点是比较零散的,学生对每个知识点理解了,但对各个知识点之间的联系并不一定理解,缺少一种知识的连贯性,不利于理解和记忆。所以,在每次课结束之前,用几分钟的时间把本次课内容所涉及的知识点回顾一遍,这种回顾既以复习知识点为主,又要讲解其间的联系。当课堂教学内容以一个整体的形式被串联起来后,学生的理解就会加深。如:在讲运算符的时候,每类运算符都有自己的优先级和结合方向,一个一个比较零散,所以在讲完运算符后,可以归纳所有运算符间的优先级和结合方向。 三、引导学生自主学习,培养学生实践能力 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对于学生来说,一定要重视实践环节,包括编程和上机。对于教师来说,一定要引导学生自主学习,做好课程设计。 1.上机准备 教师要事先设计好实验内容,内容要尽量引用之前所讲的知识点,避免涉及后续章节的知识,难易适中,由浅入深。课前可先给学生演示一下实验的最终效果,概括本实验包括的知识点,提醒学生对每一个操作的结果仔细观察和详细记录。学生在操作中遇到问题,教师应启发学生独立思考,引导学生去发现问题、分析问题和解决问题,培养学生的动手能力,让学生亲自观察和体验程序设计的成功感受,加深对知识的理解。最后,学生要书写实验报告。上机结束后,教师要督促学生及时总结实践经验,将实验中碰到的问题及解决的方法记录在实验报告上。教师根据每一次上机的整体情况,对学生中出现的共性问题进行讲解。 2.课程设计 可以让学生分组实现一个具体课程设计,在本课程结束的前几周完成课程设计,加深学生对本课程的总体理解。本人认为,在学校中学习程序设计的目的是进行程序设计及基本训练,而不是要求学生立即编写大型程序,或今后一辈子只用这门语言。所以,布置课程设计时,要把精力放在本课程最基本、最常用的内容上,开始时,不要在每个细节上死背死抠,在有一定基础后,再通过实践熟练掌握。 教好C语言是一项艰巨的任务,在教学过程中,要深入浅出,以学生为主体,以教促学,学以致用,引导学生在学习过程中掌握编程技巧,调动学生学习的主动性和积极性。 参考文献: [1]唐淑玲.高职C语言程序设计教学效果探析[J].中国校园导刊,2011,(1). [2]由杨.高校计算机C语言实验教学方法初探[J].中国期刊,2009,(1). 【c语言程序设计第二章】推荐阅读: c语言设计程序11-11 c语言递归程序11-06 c语言程序设计实验11-19 c语言程序设计解析02-17 c语言源程序10-03 c语言程序设计实习报告程序02-22 c语言程序设计作业三06-24 C语言图形程序设计报告10-13 c语言程序设计基础题10-28 c语言程序设计补充题11-17c语言程序设计第二章 篇5
C语言程序设计--大作业 篇6
c语言程序设计第二章 篇7
C语言程序设计教学方法探讨 篇8