c语言实践报告总结2篇.docx
- 文档编号:36440
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:8
- 大小:21.74KB
c语言实践报告总结2篇.docx
《c语言实践报告总结2篇.docx》由会员分享,可在线阅读,更多相关《c语言实践报告总结2篇.docx(8页珍藏版)》请在冰点文库上搜索。
c语言实践报告总结2篇
c语言实践报告总结2篇
一、实习时间:
20xx年x月x日—20xx年x月x日
二、实习地点:
第一微机室
三、实习目的:
1、熟悉我们自己所用的计算机的C语言开发环境,并且能够熟练掌握,达到错误能找到原因并且加以改正。
2、加深对课本理论知识的理解,进一步掌握书中重点、难点实例,锻炼自己的编写程序能力和实际应用能力。
3、上机调试程序的过程中,发现错误,解决错误,保证程序的正确运行,运行结果与给定结果完全相同。
4、学会用书中基本知识解决实际中的一些问题,将书本所学的内容与实际操作相结合,掌握把实际问题转变为C语言描述的算法的方法,明确思路。
将自身的不足与缺陷改掉,养成良好编辑风格
5、培养我们的主观能动性、沟通、表达能力和团队合作意识,为我们以后的发展打下基础。
四、实习内容及方法:
在本次实习中,我们采用了由浅及深、由易到难的实习方法,而且也是按照书本的教学进程内容进行的,同时采取了实际应用与理论相结合的方法,在机房里面实习,一边理解,思考做题的思路与解法,另一边就可以马上进行上机实际操作。
这对于我们加深对C语言的理解、操作以及动手能力都有了很大的帮助与提高。
实训的内容主要分为了七个版块:
第一版块:
1、TurboC运行环境。
了解TC的基本环境,熟悉常用菜单项和快捷键:
在这一小节中,需要熟练的掌握并应用TurboC的运行环境,和基本配置。
TurboC是在计算机上广泛使用的一个C语言开发环境,它具有方便、直观、易用的界面和丰富的函数库。
它把程序的编辑、编译、连接和运行等操作去不都集中在一个界面上进行,使用非常方便。
并且TurboC不需要特别安装,只需要将其拷贝到硬盘上就可以使用了。
为了方便管理用户的程序文件和维Turbo的运行环境,客户应在机子
上建立自己的工作目录,一边用来存放自己所需要开发的源程序文件。
下面就是建立怎样自己文件夹,在空白区域内输入自己所建立的文件夹路径即可。
2、C程序的编辑、编译、连接和运行过程。
掌握C程序的运行步骤,初步了解C程序的特点。
在TurboC的运行中,快捷键使用非常方便,只需Ctrl+菜单栏中菜单名的首字母即可。
上面是一个程序编译与链接的截屏。
第一个CompiletoOBJ将源程序编译为OBJ文件,MakeEXEfile编译连接一次进行,LinkEXEfile将OBJ文件连接为EXE文件。
3、环境的熟悉,自己按照软件并在软件中能够调试简单的C语言程序。
第二版块:
1、C语言数据类型:
整型、实型、字符型。
C语言的函数类型非常丰富,除了这几类以外,还有实型、数组、指针、结构体等,在这一小节中,主要了解关于数据类型的定义、用法以及他们的存储类型,一边与以后灵活运用。
C语言中还有常量与变量之分,常量是在程序执行过程中其值不变的量。
二且在C语言中常量不需要类型说明就可以直接使用,常量的类型是由常量的本身隐含决定的。
2、运算符及表达式。
在C语言中,预算符非常丰富运算灵活,常用的有以下几个:
(1)算术运算符:
+、-、*、/、%(取余)及++(自增)、--(自减)。
(在这里需要注意的是:
“/”运算符,在C语言中两边都是整数的话,运算结果只取整数部分;“%”他的两边都必须是整数才可以运行;“**、--”运用这个运算符时要注意“先用后加(减)、先加(减)后用”的问题)
(2)赋值运算符:
=及复合赋值运算符(+=、-=、*=、/=、%=等)。
(在这里需要注意的是“=、==”的区别,要明确用法及所用的地方,“=”它的作用是赋值,“==”它的作用是判断相等)
(3)逗号运算符:
(对于逗号表达式索要注意的是要明确它所用的地方以及在使用时所要注意的细节)。
了解三种运算符的优先级,掌握三种运算符及相应表达式的应用(详见附录)。
第三版块:
在这一节里,我们实习了C语言的三大结构:
1、顺序结构:
2、选择结构:
if„„else,switch语句。
在这里许啊哟我们学习的很多,因为只要是程序,就脱离不了这个三大结构的范畴。
在这个学习里我编写了
(1)、输入某年某月某日,判断这一天是这一年的第几天?
。
(2)、给一个不多于5位的正整数,要求:
一、求它是几位数,二、逆序打印出各位数字。
(3)、某市不同车牌的出租车3公里的起步价和计费分别为:
夏利7元,3公里以外,元/公里;富康8元,3公里以外,元/公里;桑塔纳9元,3公里以外,元/公里。
编程:
从键盘输入乘车的车型及行车公里数,输出应付工资。
源程序减附录;
经过这几个程序的练习,让我聊股的掌握了选择语句的用法以及精髓,同是这个用法和技巧已经深深的可在了我的脑海里,还有同过这些个程序的编写,让我对以前有的丝丝而非的地放完全通透理解,获益匪浅。
循环结构:
while、do-while、for
在循环这一节里,我们主要做了以下程序:
(1)、求200-300之间所有素数,每5个换行。
(2)、猜数字游戏。
规则为:
输入一个0-10之间的数字,有5次猜测机会。
如果输入0-4之间的数字,提示“太小了”;如果输入5-7之间的数字,提示“接近了”;如果输入9-15之间的数字,提示“太大了”;如果输入8,提示“correct!
”;如果次数超过5次,提示“没有机会了,退出!
”。
(3)、打印输出如下图形:
(“◇”菱形)
(4)、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
提示:
可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
(5)、打印输出九九乘法表。
我以前就对循环这一节里的内容就理解的比较好,现在做这些题很顺利的就做下去了,但在做的同是也会出现以写小的问题,但这个让我也更深一步的理解了循环语句的用法、思路以及其中的精华。
总的对这一节来说,使自己更神一步的理解了选择、过程中需要注意的一些细节问题。
第四版块:
1、一、二维数组的定义、引用及初始化。
初始化:
一维数组:
初始化赋值的一般形式为:
static式]={值,值„„值};其中static表示是静态存储类型,态存储数组和外部存储数组才可作初始化赋值二维数组:
a.可以只对部分元素赋初值,未赋初值的元素自动取b.如对全部元素赋初值,则第一维的长度可以不给出。
2、一、二维数组的应用。
在一维数组的应用中,要与循环嵌套使用,用,但是在这里,嵌套还要是循环的嵌套,因为只有这样使用才可以使程序更加简洁、简便。
就像第五题:
有一个班4个学生,
(1)求每一门课程的平均分;
(2)求每一个学生的平均分;
思路:
定义一个二维数组,用二重循环输入这个数组,然后进行相加,在求平均直,最后在用二重循环进行输出。
循环的用法以及在使用类型说明符数组名={"CLanguage"}charst;st={"CLanguage"};而只能对字符数组的各元素逐个赋值。
3、指针数组及指向指针的指针
指针数组的说明与使用一个数组的元素值为指针则是指针数组。
是一组有序的指针的集合。
指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。
指针数组说明的一般形式为:
类型说明符在指针这一小节,主要是用指针实现:
输入数对换,把最大的数与最后一个数对换。
写3个函数:
输入个数。
在这里进行函数的调用,一个输入函数,一个操作函数,一个输出函数。
i赋予它。
而字符’作为串的
而对字符可以写为:
char*ps;不能写为:
指针数组*数组名
10个整数,将其中最小的数与第一个
10个数;进行处理;输出10
用于存放字符串的首地址。
在这里用数组实现了输入。
在这里用指针实现了将最小的数与第一个数对换,
把最大的数与最后一个数对换。
在最后进行输出。
第七版块:
实训七属于一个综合类型的题目,他要求的比较高,必须在自己王权理解通透了课本知识以后才有可能理解这道题,并且进行修改完善。
主要这道题本身是在VC环境下运行的,将其移植到TurboC环境下运行,这其中牵扯到一些语法不同,在TurboC中不可以运行,要进行慢慢调试。
经过不懈的努力、修改,终于将其成功的在TurboC环境下可以正常运行了。
(详见附录)
五、结论收获
我的收获:
在本次实习中,我学到了很多实际有用的东西,而且基本上都是在课本上学不到的,并且也在实习中梳理了自己对C语言这门课程所学的所有内容,让自己对C这门课程有了更进一步的认识,有了一个良好的基础,为自己的以后打下了坚实基础。
从开头到现在,所有的内容实习完了,上机实验是学习程序设计语言必不可少的实践环节,在C语言灵活、简洁中,更需要通过编程的实践来真正掌握它。
历时4天的《C语言程序设计》已经结束了,在这几天编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。
首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这几天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点,以及每个可能出错的地方,更会特别仔细,生怕自己一不小心搞错了,而导致整个程序都无法运行。
其次,在编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺,为自己以后的人生道路打下了良好基础,同时也让我对每一件事都有了一个好的心态去对待它,更让自己在编写程序的过程中每时每刻都处于充足的状态。
再次,通过几天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便,更加灵活,以前有好多题目要写十行八行的,还有些地方弄得不是太懂,现在只需要五六行就可以搞定,而且还对于思路特别清晰、明确。
第四,在实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查,和以前相比明显改善了好多,以前自己对于检查程序总是没有耐心,不好好检查,有问题总是找老师,相对于实习之后来说,有了很大的改善,自己不但可以坐下来耐心检查,还能够自己将程序调试成功,这对于现在的我来说是一个明显的进步。
第五,通过实习改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。
第六,通过实习我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。
第七,在学习过程中,由于天气炎热,心里烦躁,同时也是每天都盯着频幕看,脑袋都看大了,但是我却一直坚持了下来,这对于我来说,也是一个非常好的习惯。
这同时也是我的一个收获。
第八,实训过程中,充分发挥团队协作精神,共同进步,帮助同学顺利完成实训课程,有困难一起解决,同时也使我在他们身上学到了很多东西。
总之,通过实习使我自身的知识体系得到巩固、提高以及使团队工作的能力得到锻炼。
不足
我的不足:
首先,我的第一个,同时也是一个最大的缺点,自己对于理论知识掌握的还不是很通透,理解的不够彻底,对于一些问题似似而非,给自己编写程序的过程中带来了很大的麻烦。
其次,我不能够精心的去完成每一个程序,对于每个程序而言,都是马马虎虎,只要运行结果是对的,那就可以了。
虽然我自己也知道这样是不好的,但是自己就是不愿意去改,在经过实习之后虽然有所改善,但在我看来,改进的不是很大。
第三,自己做题时还有些马虎,一些小的细节在编写程序过程中不注意,只有在编译连接是才可以发现、对其进行修改,对于一些小程序还不能实现一次就可以完成编译连接。
第四,做题时自己不能心平气和的去做。
第五,自己的子宅里不够强,不能持之以恒的坐在自己的座位上编写程序,
歇一会就要起来转转。
六、致谢
在此,我仅代表我自己,对老师您致以崇高的敬意和深深的感谢,没有您,就没有我那么多的收获,您不辞辛苦,在这炎热天气里,放弃您的休息时间来为我们辅导,在辅导过程中,您更是尽心尽力,从来没有少过一节课,更没有过迟到早退,对我们是全程陪同,在我们实习中随时出现问题,随时解决。
只要发现问题,您从来没有说是不管过,从来没有烦躁过,对我们提出的问题,也是耐心解决,一边不懂,接着再讲一边,脸庞流下的汗水,您却从来没有在意过。
对我们泥更是不计报酬的为我们服务,让我们有一个好的学习环境,不用为自己遇到问题而烦恼,在这里我想对您说一声:
老师,您辛苦了!
请接受您的学子的深深谢意与感激。
在这里,也对学校表示由衷的谢意,感谢学校为我们提供了良好的实习环境,让我们在这炎热的天气里,能够舒爽的坐在教室里实习,而不用操心任何问题,在这里,对我们学校表示谢意。
1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。
2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。
3、常量放到code区,如字库、修正系数。
4、逻辑标志变量可以定义到bdata中。
在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。
这样可以大大降低内存占用空间。
定义方法是:
bdatabitLedState;但位类型不能用在数组和结构体中。
5、data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。
当然静态局部变量除外,其内存使用方式与全局变量相同;
6、确保程序中没有未调用的函数。
在KeilC里遇到未调用函数,编译器就将其认为可能是中断函数。
函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。
这一点Keil做得很愚蠢,但也没办法。
7、如果想节省data空间就必须用large模式。
将未定义内存位置的变量全放到xdata区。
当然最好对所有变量都要指定内存类型。
8、使用指针时,要指定指针指向的内存类型。
在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。
如指针p是指向data区,则应定义为:
chardata*p;。
还可指定指针本身的存放内存类型,如:
chardata*xdatap;。
其含义是指针p指向data区变量,而其本身存放在xdata区。
以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。
与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。
9、在51系列中data,idata,xdata,pdata的区别
data:
固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
idata:
固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。
idata是用类似C中的指针方式访问的。
汇编中的语句为:
moxACC,@Rx.(不重要的补充:
c中idata做指针式的访问效果很好)
xdata:
外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
pdata:
外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movxACC,@Rx读写。
这个比较特殊,而且C51好象有对此BUG,建议少用。
但也有他的优点,具体用法属于中级问题,这里不提。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实践 报告 总结