c语言实验课题目

2025-01-05 版权声明 我要投稿

c语言实验课题目(精选8篇)

c语言实验课题目 篇1

实验名称:学生管理系统的设计与实现

实验类型:综合性实验

一、实验目的强化学生对C语言的基本语法和基本编程技能的熟练掌握,并在此基础上,重点培养学生对实际应用问题进行抽象分析的能力和综合运用C语言知识进行具体实现的编程能力。

二、实验内容

综合应用C语言中讲授的流程控制语句、模块化程序设计方法(函数)和丰富的数据类型(指针、数组、结构体等)完成“学生管理系统”的设计与实现。

三、实验环境

Windows XP系统,C语言开发环境:Win-TC、Turbo C3.0、VC等。

四、实验要求

1、总体要求:系统功能齐全,运行结果正确,用户界面友好,使用简单方便。

2、系统数据要求:学生信息如下:学号、姓名、年龄、所在系、3门课程名称及成绩、总分、平均分。

3、系统功能要求:

⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。

⑵计算每个学生的总分、平均分,并输出每个学生的学号,姓名,总分,平均分。

⑶根据学生的总分进行排序输出。

⑷针对课程不同科目进行排序输出。

⑸统计输出每门课程的平均分。

⑹实现多种查询功能(例如:根据学号或姓名或所在系等,查询一个或多个学生信息)。

⑺对于已输入的学生信息进行储存。

⑻能实现学生信息的增、删、改操作。

五、实验结果

实验完成要求上交全部源程序代码(包括存盘数据)和完整的综合性实验报告(包括系统设计、实验过程中出现问题的分析与修改、代码打印、运行结果拷屏打印)。

六、考核形式

c语言实验课题目 篇2

一、C语言实验课的重要性

作为一个教学工作者, 深知学生要学到真正属于自己的知识、能力, 那么在C语言教学过程中, 实验教学就是一个相当重要的环节。C语言的数据类型较多、表达式丰富、语法结构较复杂, 使它成为一门教师难教、学生难学的课程。因此, 在重视理论教学的同时, 必须加强实验环节。只有在上机实践中学生才能正真学会如何编写程序和调试程序, 也只有通过上机实践才能更好地掌握程序设计的理论知识。

首先老师在上实验课时尽量要求学生多编写程序, 多上机调试程序, 上机实验的目的决不仅是为了验证所编程序的正确性, 其主要目的在于让学生熟练掌握上机操作要领和调试程序技术, 积累编程经验。其次上机实验可以加深学生对讲授内容的理解, 尤其是一些语法规定, 光靠课堂讲授比较枯燥又难以记住, 但它们又很重要, 通过多次上机就能自然地熟练掌握, 通过上机来掌握语法规则是行之有效的一种方法。最后, 学生在上机调试通过一个程序后, 可以自己改变程序中某些部分, 甚至故意设置一些障碍, 观察和分析在不同情况下的编译和运行结果。应当说, 上机实验的重要性绝不亚于课堂听课, 这是巩固和发展课堂知识的十分重要的环节。

二、C语言实验课存在的问题

第一, 学生没有明确的实验目标, 实验兴趣不大。上机时一些学生无所事事或玩游戏, 不但害了自己, 还影响其他同学。第二, 现有教材中上机实验都立足于C语言本身的一些语言规则, 而C语言的许多基础知识都是概念性强、理论性强, 内容丰富且抽象, 具有严密逻辑性的, 学习难度比较大。这时有的学生会产生畏难情绪, 而老师又没有及时引导, 因此许多学生学习兴趣开始降低, 不听教师讲授理论课, 甚至实验课也干脆不去。第三、学生的作业存在抄袭现象, 有的程序错误百出, 根本就没上机调试过。对批改过的作业, 有相当一部分学生也不认真去分析, 交作业仅仅是为了应付老师。对于C语言这样一门实践性很强的课程, 仅靠布置作业和书面批改作业的方法来督促学生学习和了解学习情况是很不全面和客观的, 很难提高教学质量。第四、学生每次上机时缺乏明确的量化指标, 虽然教师事先也向学生布置应准备的内容, 但没有督促和检查, 完成完不成无所谓。上机情况与期末总成绩没有直接关系, 这常常导致学生上机前不充分准备, 上机过程中时间抓得不紧, 思想上没压力, 故而上机调试程序的能力提高不快。

三、实验教学探讨

作为高职院校的教师, 我们在教学过程中更注重职业岗位能力与职业技能的训练, 注重解决问题、分析问题和自学等能力的培养。在C语言实验课教学中, 主要是引导学生突破传统的思维方式, 培养学生读、写程序和调试程序的能力以及提高上机的学习兴趣和自主实验的方法技巧等。具体到实验课教学时, 重点注意好以下几点:

第一、加强机房管理, 端正学生的上机目的。在实验课上做好上机考勤、纪律情况记载, 记入期末成绩。

第二、要求学生在规定时间内独立完成一定数量的练习题、填写实验报告。老师根据每人完成练习题的数量、质量与时间, 现场打分并做为平时成绩, 影响该课程的总成绩。练习题可在上机之前提前告诉学生, 方便他们事先做好准备。这样一来即可有效地避免学生互相抄袭作业、不求甚解的弊端。

为此我们学校制定了统一的实验报告表, 便于实验报告的管理工作。

第三、教师在实验课的过程中加强对学生的辅导工作。在实验课的过程中, 教师可以首先分析该实验题目, 比如:表1中的题目, 就分别针对分支结构中的两分支结构和多分支结构进行了练习。然后再引导学生完成该实验报告。同时在布置实验报告题目时, 应注意题目的难度、题量等问题。

在实验课时, 教师还可以适当的改变教学方法, 比如:给出一程序段, 让学生找出程序段中的错误;还可以给出一程序段, 让学生完整填写程序。

例如:输入三个数a, b, c, 按照由小到大的顺序输出。

第四、实验课教师要当场检查程序。在实验课上, 任课教师一定要对学生的作业进行当场检查、提问, 只有这样才能杜绝学生去抄袭别人的, 就算抄来弄不明白也是白费心机。要想上机时顺利通过, 课堂上必须认真听讲, 记笔记。因此课堂教学时学生基本上没有迟到和无故缺的, 并且课堂上都能专心听讲, 记笔记, 课间10分钟还问个不停, 因为上机时就没有这么多时间详细问老师了。同时在实验课上, 老师还可以有针对性地个别辅导, 对比过去单纯的批改书面作业老师对学生成绩的评定也更客观, 同时也有效地避免学生互相抄袭作业、不求甚解的弊端。同时大家提问的积极性也充分调动起来了。

总之, 在实验课教学的过程中, 教师要尽心、尽责, 同时加强对学生的管理工作, 对每个同学严格要求, 同时在自己的教学方法和教学手段上下更多的功夫。

实践证明, 通过以上措施, 在C语言实验课上增加了学生的学习热情, 在一定程度上提高了学生程序的编写、调试能力, 对今后学习其他计算机课程打下了良好的基础。这些改革措施不但对学生提出了更严格的要求, 而且对任课教师的要求也提高了, 工作量也势必增加, 这就要求我们老师要比平常付出更多。当然, 这只是我对于C语言实验课教学的一点经验, 还希望得到进一度的完善和提高。

摘要:本文首先介绍了C语言实验课教学的重要性, 然后探讨了一些在C语言实验课教学中的方法, 最后总结了实验课教学的效果和体会。

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

关键词: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/.

c语言实验课题目 篇4

1,函数是从主函数(main())开始执行,回到主函数(main())结束;

2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束; 第二章

1,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性

2,算法(程序)的几个结构:选择结构,顺序结构,循环结构 第三章

1,int类型是2个字节,float是4个字节,dooble是8个字节 2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型(空类型合法哦,不要忘记了这个特殊哦)

3,变量的地址是确定的,变量变的地方只是地址里面的值。4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。

5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768 6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x(8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L 例:int a=075,b=ox14;long int c=5L;

printf(‚%o,%x,%ld‛,a b c);结果为(75,14,5)

7,当出现’’的什么时候为结束,什么时候为八进制的转义字符: 当’’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书p8)

这样一个例题 若 strlen(‛abc89‛)=3 strlen(‚abc12‛)=4 8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。

9,++,――,当++,——,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j; 10,复合运算符要注意当等号后面接的是表达式的时候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体 第四章

1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!)2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考书p13 第五章

1,关系运算符,>,<,<=,>=,= =,!=,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1.2,逻辑运算符,&&,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如

a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1

1有else的情况是:if(表达式)语句; 3,if语句基本格式:○

2没有else的情况是:if(表达式)else语句;(注意有分号哦),○语句;当有多个if和else的时候if是与其后最近的没有配对的else结合;注意,当函数作为if里面的表达式的时候即if(printf(‚*‛))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的;

4条件表达式,? : ;右结合性,是从右往左结合,即是以最后一个?开始结合,但是计算顺序仍然是从左到右(这个牵涉到++,--问题)(参考书p16)

5,switch语句,switch语句只有碰到break或者做到最后一个语句才结束,case和default语句都只是入口。(参考书p17页例子)第六章

1,while语句基本格式是while(表达式)语句;注意在while()后面没有;号,当函数或者赋值表达式放在while的()中时与if的判断方法一样,时候函数的返回值或表达式值的逻辑值; 2,do{ }while();语句和while语句的区别在于前者先做后判断后者是先判断后做,这个知识点多参考书上(p18例题)和卷子上的题

3,for语句,例如:for(i=1;i<100;i++)s=s+i;注意for括号的后面没有;号,当有两个for语句即嵌套的for循环的时候 例如:

for(i=1;i<4;i++)for(j=0;j<5;j++)

s=s+i;这个时候是先做i=0;然后判断i;然后做加粗的部分,即是把加粗部分看成一个整体做完之后才会回到i++;所以s=s+i;这个语句做了20次,(参考书p19例题)

4,总结if,for,whlie,后面如果没有{}的时候,即是只有一个简单的语句的时候,if,for,whlie的作用效力范围是到与之最近的分号结束;当有{ }的时候即是把{ }看成一个整体,控制范围是整个{ }里面的所有语句。5,break是结束整个循环;contine结束本层循环;具体参考书(p19页例子这个很重要哦,一定要掌握)第七章和第十章(重点哦!!!)

1,维数的判断,当*,[]前面有int,char,float等常见的类型名的时候表示是在定义,一个 * 或者[]表示升一维,当表达式前面没有int,char,float的时候则是在引用(或称为使用)一个*或者[ ]表示降一维;

2,注意这样一些东西:int a[3][3],**p=a则,a[0]等价于*p表示的是这个2维数组的第一行或者说是这个2维数组的首元素的地址;a[i]等价与*(p+i)都表示是数组的第i行或者是第i行的首元素的地址;所以要引用这个a数组的元素应该用a[i][j]或者**p 3,对一个数组的输入输出总结

当数组是int(整形的时候)

一个有n个元素的1维数组:输入 for(i=0;i

输出 for(i=0;i

printf(‚%d‛,a[i]);注意int类型要以%d的格式

一个有n行m列的2维数组:输入:for(i=0;i

for(j=0;j

输入:for(i=0;i

一个字符串数组即 char a[10];对这个的输入有两种方式

(1)for(i=0;i

(2)gets(a); scanf(‚%s‛,a)(注意这两种方式的括号里面的只能是一个数组名)

输出也对应有两种方式:(1),for(i=0;i

4,对一个有n个元素的数组的遍历(既是说从第一个成员访问到最后一个成员)有以下两种方式:

1,for(i=0;i

a[i];

(都是指从a[0]访问到a[n-1])a[i]; 参考书p31 5,对字符串的操作注意:sizeof是一个系统关键字,不是函数,求其后边的参数占用的内存空间,strlen 求字符串中有多少有效字符。

注意这个例题:char a[30]=‚abcb‛; sizeof(a)=30 ; sizeof(‚abcb‛)=6;

strlen(a)=3 strlen(‚abcb‛)=3 ;

6,*p++ 表达式中p与++先结合,取完值之后地址指向下一个元素的地址;*++p则是直接输出第二个元素,指针输出完之后,也指向了下一个元素的地址

7,char a[10]; while(a[i])和while(a[i]!=‘’)都是表示当a数组不结束的情况下继续循环,一般就是指访问整个数组 8,自编函数实现求字符串的长度:

int fun(char *a)int fun(char *s){ int k; { char *p;

p=s whlie(a[k])whlie(*p)k++;p++; retrun(k-1);} retrun(p-s);} 第八章

1,分清形参和实参的区别:(1)形参是在定义或声明中,实参是在引用当中;当函数名前有int,float,char等类型名时是定义或者声明,但是要排除省略类型名的情况;一般引用出现在主函数中,(2)形参是不确定的值,因此不能为常量,实参是确定的值所以可以为常量。

2,当实际参数是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;当是实参是地址传递的时候就要改变

例:(1),int sub(int x,int y)

{ int c=x;x=y;y=c;} void main()

{ int a=3,b=2;sub(a,b);

printf(‚%d,%d‛,a,b);} 结果是 3,2

(2),int sub(int* x,int *y)

{int c=*x;*x=*y;*y=c;} void main()

{int a=3,b=2;sub(&a,&b);

printf(‚%d,%d‛,a,b);} 结果是 2,3 3,局部变量和全局变量;注意分清各自的作用范围;参考书p64 第4题

局部变量:在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。

全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。

局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

4,注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;注意区别viod和return;当主函数里面带参数的形式,main(int argc,char *argv[])中argc是表示参数的个数,argv这个数组储存的是具体的参数个数。例,void main(int argc,char *argv[]){ char **p;while(――argc)

{ *p=argv[argc]; puts(*p); } } 若输入为 china Beijing flie 则结果为:flie Beijing ;

5,注意函数的调用以及静态变量;参考各次卷子中关于这个方面的题

第九和十一章

1,宏替换的时候只是简单的字符替换,不要加任何东西,宏名中不能包含空格; 例:#define xx(m)m*m …… int i=5;

i=i+xx(4+5);

结果为 i=5+4+5*4+5=34;

2,宏替换是在预编译的时候进行,所以不占用程序运行时间;宏名是无类型的;

3,结构体变量的长度是各个成员长度的和;当结构体指针和数组的时候注意分清.和->的区别;参考书中p59第3题 4,共用体变量的长度是由成员中的最长的成员决定;

5,链表的题就掌握模拟考试题中的一道选择题就可以了;第十一章的其他内容,还是要去看书了解 第十二章和第十三章

1,位运算符有 |(或)即只要有一个1就是1,&(与)要全部为1才为1 ^(异或)要不相同才为1 ;注意的是当向左移动n位就是乘以2的n次方;向右移动n位就是除以2的n次方。2,文件,c语言中可以认识两种文件存储类型(1),文本文件(2),二进制文件;

3,打开文件操作注意语句 if((fp=fopen(‚文件名‛,‚r‛))==NULL);当等于NULL的时候就不能打开;注意文件打开之后必须关闭,即是fclose(fp);这两个必然是成对出现;

4,文件在什么情况下结束(1),fp==EOF的时候结束fp!=EOF的时候不结束。

(2),当feof(fp)返回值为0时不结束,返回非零时就是结束;

5,注意背下书p139第2题,万一考到文件的编程一般就是这种题。一般填空就是上面的加粗部分。

6,w,r,a分别表示对文本文件的读,写,追加;fputs(ch,fp)指将ch变量输出到文件fp中;ch=fgets(fp)指的是从文件中得到一个字符赋给变量ch;fread或fwrite(buffer,size,num,fp)中,buffer指的是文件读出/写入的数据的地址,是一个数组名或者指针;size,指读出或者写入每个数的字节数;num指读出和写入多少个数;fp指文件指针。编者的话:

这些只是基础知识的重点,目的是帮助大家复习基础知识(记住这个只是基础的一部分,仅仅是基础,各个基础知识的运用请大家多参考发的卷子和书后面的习题),大家还是争取要把书细细的看上2遍以上,最后祝大家都能顺利的过二级。

作者:好老师工作

C语言实验报告 篇5

第1次实验: 时间 2010-9-15

项目名称:创建第一个C语言程序

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、单击“开始”“程序”“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,打开VC++。

2、在菜单中选择“文件”“新建”,在“工程”选项卡中选择“Win32 Console Application”,输入一个名称,点“确定”,新建一个新的工程。

3、再选择“文件”“新建”命令,在“文件”选项卡中选择“C++ Source File”,输入一个

名称,点“确定”,新建一个C++源文件。由于C++全面支持C,因此可以在此输入C语言的源代码,进行实验。

4、在代码框中输入如下代码:

#include

void main()

{

int a,b,sum;

a=123;b=456;

sum=a+b;

printf(“sum is %dn”, sum);

}

5、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中

选择“构建”最后在“编译”中选择“执行”。

实验结果:

sum is 579

讨论:本实验让我们了解了如何创建一个C语言的控制台应用程序,并学会了C语言程序的基本构架和个别特殊语句如“main”“printf”等。

实验地点:3B-20

3第2次实验:时间:2010-10-6

项目名称:顺序结构程序设计实验

(书89页4.9题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。

实验结果:„„

讨论:„„

实验地点:3B-20

3第3次实验:时间:2010-10-27

项目名称: 选择语句switch的使用

(书111页5.6题,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„ 实验地点:3B-20

3第4次实验:时间:2010-11-17 项目名称:循环语句for的使用(书129页6.1,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第5次实验:时间: 2010-12-8 项目名称: 数组的应用(书134页例题7.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第二学期实验:

第1次实验: 时间 2011-2-25 项目名称:编写函数

(在主函数中输入两个数,分别调用四个自定义函数,实现两个数的加、减、乘、除并输出结果。)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

6、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下: #include void main(){

int add(int x,int y);int sub(int x,int y);int mul(int x,int y);float div(int x,int y);int c,a,b;float d;

scanf(“%d,%d”,&a,&b);c=add(a,b);

printf(“%d+%d=%dn”,a,b,c);c=sub(a,b);

printf(“%d-%d=%dn”,a,b,c);c=mul(a,b);

printf(“%d*%d=%dn”,a,b,c);

d=div(a,b);printf(“%d/%d=%fn”,a,b,d);}

int add(int x,int y){

return x+y;

}

int sub(int x,int y){}

return x-y;

int mul(int x,int y){} {

return x*y;

float div(int x,int y)

return(float)x/(float)y;

}

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„。

实验地点:3B-20

1第2次实验:时间:2011-3-11 项目名称:指针的应用(书278页10.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-20

3第3次实验:时间:2011-4-8

项目名称:顺序结构程序设计实验(书318页11.3题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-203

9.1

#include

#define S(A,B,T)T=A;A=B;B=T void main(){} 9.6

#include #define PR printf #define NL “n”

int a,b,t;

scanf(“%d,%d”,&a,&b);S(a,b,t);

printf(“%d,%dn”,a,b);

#define F “%6.2f”

#define F1 F NL #define F2 F F NL #define F3 F F F NL void main(){

float a,b,c;a=1;b=2;c=3;PR(F1,a);

PR(F2,a,b);PR(F3,a,b,c);}

作业:

#include

#include

void main(){

void fun1(float a,float b, float c);void fun2(float a,float b ,float c);void fun3(float a,float b, float c);float a,b,c,disc;

scanf(“%f%f%f”,&a,&b,&c);disc=b*b-4*a*c;if(disc>0)fun1(a,b,c);else if(disc==0)fun2(a,b,c);else

fun3(a,b,c);}

void fun1(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“%f,%fn”,x1,x2);}

void fun2(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=x2=(-b)/(2*a);

printf(“%f,%fn”,x1,x2);}

void fun3(float a,float b,float c){

printf(“此函数无解”);} P278

#include void main(){void aa(int x[],int n);int i,a[10];

for(i=0;i<10;i++)scanf(“%d”,&a[i]);

printf(“交换前:n”);

for(i=0;i<10;i++)printf(“%d,”,a[i]);printf(“n”);aa(a,10);

printf(“交换后:n”);for(i=0;i<10;i++)

printf(“%d,”,a[i]);printf(“n”);

}

void aa(int x[],int n){

int

temp,max=x[0],min=x[0],max_n=0,min_n=0,i;//假设第一个数是最大和最小的数,那么max,min的下标就=0for(i=1;i

max=x[i];max_n=i;}

if(min>x[i]){min=x[i];

min_n=i;

}}

if(min_n!=0){temp=x[0];x[0]=x[min_n];

x[min_n]=temp;

}

if(max_n!=n-1){temp=x[n-1];x[n-1]=x[max_n];x[max_n]=temp;

}

} eee:

#include

void main(){void jiaohuan(int *pt1,int *pt2);int a,b;

scanf(“%d,%d”,&a,&b);printf(“n交换前:n”);printf(“a=%d,b=%dn”,a,b);jiaohuan(&a,&b);printf(“n交换后:n”);printf(“a=%d,b=%dn”,a,b);

}

void jiaohuan(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;

}

习题11.3 方法一: #include void main(){int i;

struct student{int num;

char name[10];int score[3];

}stu[5]={{101,“A”,50,60,80},{102,“B”,9

0,67,45},{103,“C”,30,40,50},{104,“D”,90,80,70},{105,“E”,60,70,80}};

printf(“NUM

NAME SCOREn”);for(i=0;i<5;i++)

printf(“%4d%8s%8d,%2d,%2dn”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}

方法二 : #include void main(){int i;

struct student{int num;

char name[10];

int score[3];}stu[5];for(i=0;i<5;i++){

printf(“

学号:”);scanf(“%d”,&stu[i].num);printf(“姓名:”);scanf(“%s”,&stu[i].name);printf(“成绩

”);scanf(“%d,%d,%d”,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}printf(“NUMNAME SCOREn”);for(i=0;i<5;i++)

c语言实验课题目 篇6

实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。

二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。

s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

完整程序如下:

#include void fun(float *sn,int n){ float s=0.0,w,f=-1.0;int i=0;for(i=0;i<=n;i++);{ f=(-1)*f;w=f/(2*i+1);s+=w;} *sn =s;} main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a

上机调试此程序。如果不能实现题目要求,指出原因并修改之。

子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include void tranf(int(*p)[3]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j

程序修改如下: #include void tranf(int(*p)[N]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j char *strc(char *s1,char *s2){ char *p=s1;while(*s2!=')*p++=*s2++;return s1;} main(){ char s1[30]=“computer ok!”,s2[]=“language”,*pt;pt=strc(s1,s2);printf(“%sn”,pt);/* 第10行 */ } 将程序第10行中的%s改成%c,应该怎样修改?(只允许修改第10行)

应改为: printf(“%cn”,*pt++);

c语言实验课题目 篇7

《C语言程序设计》是计算机专业中一门重要的基础课程。该课程不仅要求学生掌握一门高级程序设计语言, 更重更的是学习程序设计的思想, 培养学生良好的程序设计风格和思维方式[2], 它又是一门实用性很强的语言, 切实加强实践教学环节, 重视对学生自主学习、研究能力和创新能力的培养, 对于提高C语言程序设计课程的教学质量具有重要的意义。基于此实验教学是该课程不可缺少的重要组成部分。探索对实验教学的改革, 对提高该课程的教学质量有着重要的作用。但笔者在多年的教学中却发现一些学生对实验兴趣不大。上机时无所事事或玩游戏, 不但浪费了自己的时间, 还影响其他同学。因此现有的教学模式改革事在必行。

2、存在的问题

2.1 实验课程与理论课程时间配置不合理[1]。

在C语言的教学中, 实验时间约占三分之一左右。首先, 较少的实验时间, 让学生无法熟练掌握当前练习内容, 影响后面实验的进行。其次, 实验课时少导致了理论教学与实践教学内容安排的不同步。比如理论教学在讲数组, 却在做循环结构的实验。知识的不同步, 对于学生的学习, 势必会造成一定的影响, 不利于学生及时掌握所学的知识, 甚至会造成知识混淆的现象。

2.2 实验教材与教学资料有待完善[4]。

课程采用的实验教材与习题集合二为一的, 每一个实验题目都能在本书中找到答案, 学生只要把源程序输入计算机, 进行简单的调试就可以得到实验结果, 用不着去查找资料、思考和创新, 编译出错时不是根据错误提示查找原因, 而是与书上的程序进行比对, 改正录入错误。这样不利于培养学生发现问题、分析问题、解决问题的研究能力和创新能力。

2.3 实验教学条件落后, 学生的问题不能及时得到解决[1]。

由于扩招。为了充分利用有限的教学资源, 理论课实验课都是采用合班教学这种形式。一个实验室只有一个教师, 程序调试出现错误的学生同时有多个, 教师不可能及时解答每个学生提出的问题, 就会导致部分学生不能继续往下调试而出现厌学、害怕的情绪, 进而不调试程序而去玩游戏或做一些与程序调试无关的事情。

2.4 考试形式单一, 实践考核缺乏。

传统的语言程序设计的考试考核要求简单, 考试形式单一, 以期末笔试为主;平时成绩主要侧重于考勤、作业、实验报告。在课程成绩中比例远小于期末理论考。不重视上机实践能力的现场考核, 只偏重于理论考试, 这也导致了学生本身对于上机实践的不重视。

3、试验教学改革

C语言程序设计实验教学方法的改革措施实验性教学是C语言程序设计教学的重要环节, 是学好C语言程序设计关键。目的是通过上机实验, 让学生多动手、多动脑, 使学生在实验中提高分析问题、思考问题和解决问题的能力, 进而达到掌握理论知识, 提高操作和编程的能力。具体措施总结如下:

3.1 制定实验计划, 编写实验指导材料

根据C语言程序设计教学大纲和实验大纲的要求, 制定详细的、规范的实验计划, 编写实验指导材料, 提出实验要求, 以及要达到的目的。在制定实验项目时, 明确规定哪些实验是学生必须做的, 哪些实验是学生可以选做的, 甚至可以留有余地, 让学生在某些指定的框架下自己制定实验。同时, 在实验的编排上, 注意验证性、设计性和综合性实验的比例, 一般是在保证验证原理, 加深对理论知识的理解和进行基本技能、方法、能力等训练的基础上, 对验证性实验进行精选、合并, 减少验证性实验项目, 增加设计性和综合性实验项目。

3.2 精心选择试验项目, 激发学生的学习兴趣[3]

托尔斯泰曾经说过:"成功的教学, 所需的不是强制, 而是激发学生的学习兴趣"。同学们有了学习的兴趣, 才有学习的动力.而C语言程序设计是一门理论性较强的课程, 知识点较多、涉及面较广, 对于刚开始学习的学生来说, 常会感到内容枯燥难学, 产生畏难情绪, 导致理论知识掌握不好, 而影响了上机实验。因此, 为了激发学生的学习兴趣, 寓学于"乐", 在C语言程序设计实验教学过程中选择实验例子时, 不妨多选择一些具有趣味性的例子, 如:"水仙花数"、"百钱买百鸡", "三角形的面积"、"爱因斯坦阶梯"等有趣或经典的问题, 这些充满乐趣的问题, 有利于学生轻松愉快地学习, 积极主动地思考, 而且学过以后也不易忘记。

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

在实验教学中充分利用网络资源, 这也是与以往教学相区别的重要地方。首先, 机房实验室里安装了网络教室软件, 配置了教师机, 上课时老师布置本次试验内容, 让同学自己练习10分钟, 然后所有的学生通过网络将抽出的作业拷贝到自己的计算机上, 随机抽出一个学生的作业作为示例, 由教师在自己的计算机上边调试边讲解, 学生边看投影屏幕及教师的讲解边操作计算机;每次实验课结束, 通过网络教室把实验中出现比较普遍的问题集中讲解, 因为每一个学生都已亲自动手调试过程序, 那么教师对该问题给出的提示讲解就会使学生能关注且记忆深刻。这样让学生及时了解自己学习中的问题以便避免或是改正。其次, 实验室提供了专为学生使用的FTP服务器, 每个班级具有合理的空间上课, 每次学生登录到自己班级里查看该次实验要求, 按时完成实验, 并把实验结果以文件的形式上传到自己班级文件夹下, 以供课后教师检查。

3.4 设计综合性的实验, 提高学生编程能力

"纸上得来终觉浅, 绝知此事要躬行"。只有亲自动手、亲自实践, 才能真正体会到语言编程的乐趣。这里的实验, 并不仅仅是每节课结束后的上机练习, 而是要通过课程设计, 来进一步加深对语言编程的理解, 这将有利于培养学生的创造思维、独立分析问题和解决问题的能力以及培养学生实际编程的能力。为此, 每学期末, 安排这门课程的课程设计, 以学生最为熟悉的"学生成绩管理系统"为例, 要求建立班级课程的成绩输入输出函数;使用结构体数组来存储和处理学生的信息;利用单链表动态管理学生的成绩;利用文件操作完成学生成绩管理。这样通过课程设计, 把我们C语言中的函数, 数组、结构体、指针, 文件一个个的知识电形成一个有机的整体。让学生并通过上机进行综合调试, 达到提高编程能力的目的。

3.5 改进试验考核方法

一是提高课程成绩中实验成绩所占比例, 让其成为课程成绩评定的重要组成部分.二是改变实验成绩的评定方式。为了全面反映学生各种能力, 我们要制定合理的实验成绩综合评估办法, 既要考虑学生实验出勤率和实验操作能力, 以及实验完成情况和结果的正确性, 还要考核学生综合知识运用能力、实际编程能力和实际操作能力。因此试验成绩的制定采用各实验项目的考核成绩加权平均, 其中实验预习和考勤占10%, 实验报告占30%, 实验现场考试占40%, 期末课程设计占20%。使用这样的考核方法后, 既调动了学生学习的积极性、提高了他们对实验的重视程度, 又保证了成绩评定的客观和公正性。

4. 结束语

以上所述, 只是笔者多年在《C语言程序设计》实验教学方法改革过程中的一点体会, 实际上在《C语言程序设计》实验教学方法改革与创新过程中要注意的问题还有很多, 但只要勇于探索, 善于总结, 就一定可以不断完善实验教学模式, 使学生通过本门实验课程的学习很好地培养编程能力和程序设计思维能力, 真正实现在实验教学中培养学生分析问题与解决问题的能力、独立自主的能力、合作与交流的能力、改革与创新的能力.

摘要:本文分析了C语言程序设计实验教学存在的问题, 探讨C语言实验教学方式方法的改进, 并从实验教学内容、教学方法、教材建设和实验考核等方面提出了相应的改革措施。

关键词:C程序设计,实验教学,改革

参考文献

[1]曹红.C程序设计试验教学改革探讨[J].科技广场, 2007, (04) :152-153

[2]邓维斌, 周玉敏.提高C语言实验教学效果的探索[J].实验室研究与探索, 2006, 25 (3) :359-361.

[3]陈世基.C语言程序设计实验教学方法的改革与创新[J].福建电脑, 2007, (06) :207.

c语言实验课题目 篇8

关键词 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语言和汇编语言混合的编程方法,能够实现应用程序局部满足高运行速度的要求,但是在具体的运用之中,程序设计者仍需要注意寄存器分配以及内存模式等因素对于程序的影响;且在运行时,因为程序设计语言之间存在相互调用的外部接口,故可以实现外部调用。

参考文献

上一篇:公共权力下一篇:三年级下册的统计求平均数教案