⑴ 在哪能下载到WORD格式或PDF格式的c语言教学用的教案要全的,帮帮忙!!谢谢!!!
推荐一个不错的网站,这是一个国家级精品课程网站,在这个网站里不仅有电子教案,还有演示课件,另外还配有各章的练习。http://jpkc.szpt.e.cn/cyy/
如果你是教师的话,也给你推荐一些教学论文,这些论文可以在线阅读,可以提高教师的教学水平和科研能力。希望我的回答能帮助你,也希望不要被封ID。我真的是诚心诚意的。
软件开发方法与C语言课程教学的融合:(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39113
摘 要:
C语言课程教学中不仅是教会学生课程的基本知识,也是培养学生建立运用软件开发方法的思想;可以加强学生的团队合作意识,提高学生之间的沟通协调能力,为学生成为企业所需求的程序员或软件测试员应具备的职业技能奠定基础。 (共2页)
《C语言程序设计》教学模式创新探析: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39114
摘 要:
针对《C语言程序设计》教学过程中,学生学习积极性不高,编程思维欠缺,上机实践盲目等问题,采用从总体到细节的教学模式.以一个大型程学贯穿整个教学过程,以兴趣引导来提高学生的求知欲望,以任务驱动来培养学生动机和自学能力.通过上机实验和课程设计来培养学生综合应用语言能力。 (共2页)
C语言中的指针和指针教学: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39115
摘 要:
指针是C语言中的重要概念和重要特色。指针教学中,教师可以通过抓住数据在内存中的存储和变化这条教学主线。进行合理的教学设计、选用合适的教学方法,从而帮助学生理解指针的概念,掌握指针的应用。 (共2页)
C语言中随机函数的分析与使用: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39116
摘 要:
文章分析了C语言中产生随机数的随机函数rand(),指出了其使用中的缺陷,并提出了一种解决办法。 (共2页)
《C语言程序设计》教学中存在问题及解决方法: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39118
摘 要:
《C语言程序设计》是高校计算机专业基础必修课程。该文根据C语言程序设计课程教学中出现的问题,提出几个解决方案和建议。 (共2页)
C语言在嵌入式系统开发中的代码优化: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39119
摘 要:
C语言是嵌入式系统开发中常用的一种程序设计语言.本文结合嵌入式系统的特点,从变量定义、算法优化和存储器分配三个方面.阐述了C语言在嵌入式软件开发中的代码优化方法。 (共2页)
小组教学模式在高职院校C语言教学中的实践与成果: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39120
摘 要:
“C语言程序设计”是计算机相关专业和其他有志从事计算机技术的人员的一门重要的专业基础课程。对于培养目标是实用型技术人才的高职院校的学生来说,学好C语言课程非常重要,但学习该课程有相当的难度。本文抓住高职院校学生的特点,并以实际教改过程为依据,详细阐述了小组教学模式在课堂教学中的意义及实施过程,在实际运用中,取得了明显的效果。 (共2页)
《程序逻辑和C语言实现》教学方法探讨: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39121
摘 要:
针对“软件技术”专业本身特点,总结了《程序逻辑和C语言实现》课程教学中的一些经验,重点结合实例探讨了C语言教学中的基础知识和某些重难点问题教学的方法和技巧。 (共3页)
C语言中循环的应用: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39122
摘 要:
一、引言 C语言是近年来在国内外得到迅速推广应用的一种计算机语言,它功能丰富,数据结构丰富,表达能力强,使用灵活方便。目标程序效率高,可移植性好应用面广,集高级语言和低级语言的优点于一身,因此特别适合于编写系统软件。但由于C语言牵涉到的概念比较复杂,规则繁多。所以很多初学者感到困难,尤其在循环结构、函数递归调用、数组的理解与使用、指针的定义和使用上更是一头雾水。下面我就结合在教学和实践中切身体会和经验,主要谈谈循环在C语言中的应用。 (共2页)
浅析C语言程序设计的教学方法: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39123
摘 要:
作者通过三个教学法浅析了C语言程序设计的教学过程中的一些具体运用,使学生掌握结构化设计语言的基本思想,自顶向下,逐步细化地将复杂问题用语句编写出程序。 (共2页)
构建培养应用型程序设计人才的教学机制——C语言程序设计的教学改革与实践: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39124
摘 要:
C语言程序设计是一门传统的课程,从开设这门课以来就进行教学改革,改革围绕“以课程知识点为核心,以提高学生程序设计能力为主线,培养解决实际问题的应用型人才为目标”的思想,抓好课程理论、实践、考核、评测、监督和反馈的每一个环节,重点突出理论与实践相结合,技术与应用相结合,探索出程序设计型人才培养及提高教学质量的新机制. (共4页)
《C语言程序设计》教学探讨: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39125
摘 要:
C语言功能强大,几乎所有高校都开设了《C语言程序设计》这门课程。本文就C语言的教学方法进行了探讨,并提出了几种可供借鉴的方法。 (共2页)
浅谈C语言实践教学改革: :(在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39126
摘 要:
“C语言程序设计”是计算机专业一门重要的专业基础课,同时也是“数据结构”、“面向对象程序设计语言C++”等课程的先修课。学生通过学习C语言,主要是掌握程序设计的一些基本方法和技巧。因此,在重视理论教学的同时,必须加强实验环节。本文在分析C语言实验中普遍存在问题后,探讨了C语言实验教学改进,并提出了具体的改进方法。 (共2页)
浅谈高职院校C语言课程的教学改革: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39127
摘 要:
分析了目前高职院校C语言程序设计教学中存在的问题,文章从教学内容、教学方法和教学手段三个方面探讨了C语言课程的教学改革方法与措施。 (共3页)
《C语言程序设计》实验教学的探讨: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39129
C语言教学方法初探: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39131
摘 要:
C语言是计算机程序设计的入门课程,是学习计算机后续课程的基础。从如何提高C语言课程教学质量,增强教学效果,培养和提高学生分析问题和解决问题能力等方面进行了探讨。 (共2页)
C语言教学之我见: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39132
摘 要:
C语言作为计算机语言中最基本的一种语言,在各种程序设计中有着广泛的应用,也是学习其他语言的基础。它独特的结构化程序设计方式能带给学生一种崭新的思维方法,学好这门课程,必将提高学生分析问题、解决问题的能力,为将来学习更高级的语言作好铺垫。 (共2页)
C语言实验教学探讨——实例教学: (免费下载、在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39133
C语言教学谈: (免费下载、在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39135
基于C语言编程思路的实践与探索: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39136
摘 要:
本文从编程的角度梳理了C语言为程序员所提供的语法元素,从变量、数组、结构体到指针所提供的编程功能.让学生理解C语言为程序员提供的操作功能及控制功能,然后通过对现实生活的分析、类比,一步一步地理清编程的思路。使编程不再枯燥无味。 (共2页)
高校C语言课程教学的创新和研究: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39138
摘 要:
针对C语言课程教学中存在的主要问题,在增加实践的环节、提供生动有趣的素材、充分运用类比的教学手段、设计良好的教学案例、提高多媒体交互性、对考试和成绩评定等方面进行相应的探索和研究。 (共1页)
高职《C语言程序设计》课程教学: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39140
摘 要:
本文从专科院校开设C语言程序设计课程的目标着手,结合程序设计和语言之间的关系,分析了C语言程序设计教学中存在的问题,并从目标定位、教材整合、逻辑能力培养等方面提出了改进C语言程序设计教学的几点建议。 (共2页)
关于高职院校C语言教学改革的探讨: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39141
关于C语言教学方法的探索和研究: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39142
摘 要:
本文以《C语言程序设计》课程教学中存在的问题为出发点,结合本校学生的实际情况在优化组织教学内容,改进课堂教学方法,加强实践教学,合理利用多媒体教学等方面进行了一些尝试性研究工作,以促进C语言教学。实践证明,改进了教学方法后,在培养学生的动手能力,思维能力以及创新能力方面取得了较好的效果。 (共4页)
项目驱动教学法在《C语言程序设计》中的应用: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39144
摘 要:
《C语言程序设计》作为计算机专业以及相关专业的重要专业基础课,旨在提高学生的逻辑思维能力教学媒体和编程技能,但学生普遍对这门课感到难学、枯燥、兴趣不大。因此,应从项目递进驱动教学法的理论依据出发,在《C语言程序设计》中进行实践与应用,激发学生的学习兴趣,增强学生的自信心。 (共3页)
C语言中递归调用的教学设计: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39145
摘 要:
递归是C语言教学中的重点和难点,其教学方法对学生正确理解和应用递归解决实际问题是一个关键。借助做游戏的方式展开递归的教学,可使教学难点变得有趣和易于被学生接受。 (共3页)
谈高职高专C语言教学改革: (在线阅读)
http://www.cqvip.com/asp/userlink.asp?re=39146
摘 要:
本文揭示了现阶段C语言课程教学中遇到的一些问题,并在分析的基础上,提出了如下教学方法:分模块的理论教学法,在实践教学中引入“大作业”环节,改革考试方法。实践证明,这些教学改革效果良好,不仅有利于培养学生学习兴趣,而且有利于培养学生分析问题与解决问题的能力。 (共2页)
⑵ 求冒泡排序C语言的教案,完整版!高分
#include<stdio.h>
void main()
{
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}
______
本例程序中用了两个并列的for循环语句,在第二个for 语句中又嵌套了一个循环语句。第一个for语句用于输入10个元素的初值。第二个for语句用于排序。本程序的排序采用逐个比较的方法进行。在i次循环时,把第一个元素的下标i赋于p,而把该下标变量值a[i]赋于q。然后进入小循环,从a[i+1]起到最后一个元素止逐个与a[i]作比较,有比a[i]大者则将其下标送p,元素值送q。一次循环结束后,p即为最大元素的下标,q则为该元素值。若此时i≠p,说明p,q值均已不是进入小循环之前所赋之值,则交换a[i]和a[p]之值。 此时a[i]为已排序完毕的元素。输出该值之后转入下一次循环。对i+1以后各个元素排序。
⑶ c语言入门教学
楼主,你可以去编程入门网,那里有挺多知识点的,很多语言都有,很适合初学者,你也可以去CSDN,那里有很多源代码提供下载,也有论坛,呵呵,你也不要忽视网络贴吧,知道,贴吧是学习很多课本没有东西的地方,知道,你需要看解决答案,这样很有收获,你也可以去中国编程网,不过,我觉得一楼也是有道理的,看看书掌握知识点,网上我觉得主要还是提高的地方哦……呵呵……关于怎么学,我是这么过来的,每看一节书,做一节课后习题,其实初学主要还是学习语法和算法(解决问题的方法),多上机自己写程序,写不出来看答案的算法,自己再写一边,关键这个阶段还是积累为主,基本知识学好了,可以学深入编程,不过你需要有熟悉的语法,可以写一些小程序:学生成绩管理系统等等,就过关了,然后可以学习链表,图像编程,等等高级编程……呵呵……努力一定有回报的……加油吧…
⑷ C语言网上教学
学习C++ 之前不知有C. 且当时辛苦忙碌于砍怪练级.
突然有一天, 脑门像被人敲打了一下便决定: 我要编程 我要编写游戏.于是我的C++之路就开始了.
学C++买的第一本书<<标准C++宝典>>.难啃.超难啃...硬着头皮啃了两周, 还是没啃完.
于是开始上网找一些相关的资料, 才知: 原来还有C这种东西!
找了几本同学的课本, 讲C语言入门之类的. 看了看没什么感觉. 心里还是想, C++是不是比C更好呢?
于是又找C++的书. 幸好 找到了钱能 的<<C++程序设计>>(注:是红皮的.). 一章一章地看.
练习的代码 写了一本又一本. 每个例子几乎都是先背下来, 才学会理解.
在学习当中慢慢的认识了一些热心的网友, 在他们的帮助下, 我慢慢地知道了. 有VC6.0这东西.
于是结束了纸上写码的历史.(有时遇到有意思的代码我仍然会抄到纸上. 我觉得这是一种很好的习惯.)
涉及到类之后 又捉狂了一阵子. 类?面向对像?
不懂, 真的不懂...
于是看别人的代码, 看别人的所谓的面向对像的代码. 看了也没觉得什么.
可是看得多了之后 发现,代码和代码还是有很大差别的. 面向对像这东西 还是抽像的不得了. 感觉比形而上学还难理解.
这样时间大约过了一个多月.离毕业还有一年. 突然萌发出了找工作的想法.觉得自己会写程序了.
至少 来个 "Hello, World!"甚至几个都没有问题.
第一次面试的时候人家问我: 什么时面向对像?
我想了想 竟然说: 面向对像... 其实就是面向对像.
....
结果可想而知了.
有了这次近于流汗的求职经历.让自己更能静下心来去学习.
学习了windows 知道了消息 MFC 多线程...期间仍是不断地面试, 不断地失败 不断地鞭策自己.
终于在我毕业前 7个月得到了我的第一份软件工作的合同.
在那里 有很多的牛人, 嘿嘿, 也有像我一样的菜鸟. 大家都是为着一个目标工作...
回想起来. 学习编程 真的没有什么太多的学习捷径.只要能静下心来.没有搞不定的事.
其实有一件事是非常明确的 砍怪练级可以长经验. 但不会提高 你的编程水平.
学得越多越觉得, 我还是一个初学者.
⑸ 求C语言说课稿
《C语言程序设计》说课教案
授课班级:07应用电子
授课课时:2课时
授课地点:计算机实验室
课题 制作数字电子时钟―――循环嵌套
一、教学目标
1、通过本次课教学,学生能进一步理解顺序、分支和循环三种基本结构,特别是While、Do-While、for三种循环循环语句的使用;
2、掌握循环嵌套概念;
3、掌握多种循环程序设计方法并根据任务要求 “制作数字电子时钟”;
4、通过本次任务,了解gotoxy()和Clrscr()函数的作用,并掌握这两个函数在实际应用程序中的使用方法。
5、技能目标:培养学生逻辑思维能力、综合运用知识的能力和自主学习能力;
二、教材分析
选用教材为李志球、刘昊编着的《C语言程序设计教程》(第二版),该教材由电子工业出版社出版,教材特点如下:
1、在内容上体现科学性、时代性、实用性,编排上面向应用,理论与实践有机结合;
2、采用任务驱动、项目教学等教学手段,全书围绕项目“学生成绩管理系统”作为案例,贯穿整个课程进行难点讲解,以实际应用作为突破口,使学生能够真实体验到知识的实际应用,提高兴趣,促进理解;教学与项目开发融为一体,浅显易懂,符合高职学生认知规律。
3、实验实训环节结合教学内容,实验项目丰富。课程设计中案例学生熟悉。
本节课教学内容参考教材第4章的4.4节:循环嵌套。
三、学生分析
07应用电子是普招类(高中毕业生)学生,它们高中期间文化基础较扎实,但计算机专业知识薄弱,C语言程序设计是他们学习的第一门计算机语言类课程,开始学习时较困难,但入门提高较快。本次课的教学内容中循环嵌套概念他们很容易理解,简单的多重循环编程对他们不难,但循环嵌套在实际应用中的编程较为困难,如本次课的任务“制作数字电子时钟”牵涉许多知识,如屏幕定位、输入初始时间等。
另外,高职学生对于上机实际操作要比学习理论知识更为有兴趣;简单的实验项目都能完成,但解决实际应用问题的能力也较差。因此,在教学中通过演示让学生有感性认识,提高学习兴趣;通过提出问题让学生讨论议一议,主动思考如何解决;通过一个教学任务让学生动手做一做。
四、教学重点、难点及解决办法
1、本次课教学重点
1)循环嵌套概念;
2)gotoxy()和Clrscr()函数使用方法;
3)循环嵌套结构程序设计方法及实际应用。
在教学过程的叙述中,要抓住教学的重点、最能体现教学理念的内容和最能展示教学艺术的环节,作较为详细的叙述。
2、本次课教学难点
1)循环嵌套编程
2)算法分析及程序结构
3)编程完成“制作数字电子时钟”
3、难点解决办法
1)通过演示让学生有感性认识,并从for语句基本语法入手,逐步引入循环嵌套概念,弱化实用性不强的细节;
2)围绕任务“制作数字电子时钟”程进行难点讲解,以实际应用作为突破口,使学生能理解循环嵌套在实际中的应用,提高学习兴趣;
3)针对难点设置上机实际操作内容,进一步掌握循环嵌套程序设计方法。
4)在实验实训过程中布置任务项目,通过实践环节进一步理解和掌握重点难点,达到学习目的。
五、教学理念、方法及手段
本次课采用理(论)实(践)一体化教学理念通过任务驱动(项目教学)、讲练结合等教学手段。
1、任务驱动:通过“制作数字电子时钟”这一任务,掌握循环嵌套程序设计认方法。并掌握相应知识点,突出重点,分解难点。
2、讲练结合:授课地点为计算机实验室,采用边讲边练的教学互动形式。教学过程中,适当安排学生在计算机上进行进行实际程序设计,通过运行调试自己设计的程序,让学生亲自观察和体验程序设计的成功感受,加深知识的理解。
六、教学设计(时间分配)
1、任务提出,演示成果程序,明确目标,提出要求。(2分钟)
(1)演示成果程序,在屏幕固定位置显示“制作数字电子时钟”。
(2)任务分析:完成本次课的任务所需知识―――三种基本程序设计结构。
2、知识回顾(2分钟)
循环结构概念、三种循环语句(while、do-while、for)、当型和直到型循环、重点语句for语句应用、注意事项。
3、上机实训1(2分钟)
简单程序:用for语句编程,实现在屏幕上显示0、1、2……59。
(上机技能训练的操作、指导、辅导过程,以学生实际操作动手为主,教师进行辅导指导、师生共同探讨完成,应充分体现学生的主体地位)
思考提问:如何让0-59重复变化,以接近实际生活中秒的变化情况。
4、导入新课(6分钟)
(1)通过练习1,分析在屏幕上显示秒的变化程序中存在的问题。一是数字“0-59”以滚动卷屏方式显示;二是每个数字显示速度太快,如何实现以实际一秒时间显示一个数。
第一个问题使用gotoxy()函数或clrscr()函数解决;第二个问题在程序中每显示一秒后都设置一个时间延迟,时间延迟用方法空循环结构实现,它的位置在循环内屏幕每显示一个数值后。通过讲解解决第二个问题的程序结构,引入本次课新知识―――循环嵌套概念。
for(s=0;s<=59;s++)
{printf("\%2d",s);
for (i=1;i<=200000000;i++); }
(2)循环嵌套概念、结构和程序设计时注意事项。
5、上机实训2(5分钟)
使用循环嵌套结构编程,在屏幕固定位置能以分秒变化的时钟:
10:11
编程和上机操作时要理解两点:一是gotoxy()函数的使用,二是空循环实现延时循环终值的调试,以接近实际生活中时间变化。
本部分内容所用到知识是本次课的核心,是基本的能力目标,所以教学时要以重点内容处理。
6、程序设计讲解(4分钟)
编程完成本次课任务,制作一个带有时、分、秒变化的数字电子时钟。(四重循环)。
(1)算法分析
(2)定义变量及类型
(3)程序结构设计
(3)源程序核心结构编程
7、上机实训3(5分钟)
(1)调试程序时要注意观察程序运行情况,调整空循环变量i的终值,尽量与实际运转时间一致。计算机运行速度越快,则这个数值越大。
(2)本程序需运行24小时才能结束,如果要停止程序运行,可以按Ctrl-C或连续按两次Ctrl-Break强制中断程序运行。
(3)修改变量i类型,将它定义为整形后再次运行程序,观察运行结果,分析程序出错原因,提醒以后编程时注意。
8、提出问题,任务完善―――源程序提高与扩展 之一(4分钟)
前面的程序每次运行都从0点0分0秒开始,不能从当前实际时间开始运行。解决问题的办法可以在程序第一次循环开始时输入一次当前实际时间。为了只在开始运行时设置一次初始时间,可以引入一个逻辑变量first,其初始值为0 ,输入初始时间后,将其值置为非0。在后面程序运行中,通过if语句控制不再需要输入初始时间。
9、上机实训4(5分钟)
上机修改程序,使数字电子钟能从指定时间(输入初始时间)开始运转。
10、思考和作业(5分钟)
(1)源程序提高与扩展 之二:本程序只能运行24小时,请同学们将程序进一步改进,使它能显示年、月、日、星期、时、分、秒等数据的电子钟。
(2)“九九乘法表”。
10、课堂小结及作业(5分钟)
11、Question & Answer(1-2分钟)
七、学法指导
1、鼓励学生自主探索和合作交流。引导学生自主地从事观察、分析、交流等活动,使学生形成对计算机语言知识有效的学习策略。
2、鼓励与提倡解决问题的多样性,引导学生在与他人的交流中去选择合适的策略,丰富自己的思维方式,获得成功的体验和不同的发展。
3、引导学生将所学计算机知识应用到其他学科中去,使学生觉得计算机有很用,同时也培养了学生逻辑思维能力。
⑹ C语言标准教案
现在是 第三版了
我有,南京邮电大学计算机学院的老谭第三版的教案,但是指针后面有点问题,需要你自己搞一下,你要是要的话发邮件到我邮箱[email protected]
⑺ C语言编程基本教学的书!初学者专用的书!
C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
那么,我们如何学好《C程序设计》呢?
一.学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:
(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径 r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2) 分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
{
分支体
}
这种分支结构中的分支体可以是一条语句,此时“”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;
②if(条件)
else
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\n”r, i);
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分支语句:其语句格式为:
if(条件1) ;
else if(条件2)
else if(条件3)
……
else if(条件n)
else
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同 if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与 if构成的循环,是不能用break和 continue语句进行控制的。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a [10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a[i]>a[j]
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。
⑻ C语言求编程教学
先贴代码,有兴趣的话可以看看下面的原理。
#include<reg52.h>
#defineCO_12_MHZ
/*
*Timing50milliseconds
*/
#defineTH_VALUE(0x3c)
#defineTL_VALUE(0xb0)
#if(definedCO_12_MHZ)
#defineTIME_3_SECOND(60)
#elif(definedCO_6_MHZ)
#defineTIME_3_SECOND(30)
#endif
sbitled=P0^0;
intflag=0;
voidtime_3_second(void)interrupt1{
TH0=TH_VALUE;/**/
TL0=TL_VALUE;/**/
if(++flag==TIME_3_SECOND){
led=~led;
flag=0;
}
}
intmain(void){
led=1;
TMOD=0x01;/*Selectionmode1*/
TH0=TH_VALUE;/*Settimeconstantforhigh8bit*/
TL0=TL_VALUE;/*Settimeconstantforlow8bit*/
TR0=1;/*StartupT0*/
ET0=1;/*EnableT0interrupt*/
EA=1;/*EnableCPUinterrupt*/
while(1);
return0;
}
根据公式 t = Tc * (2^L - TC), t为需要定时的时间,L是计数长度,根据选择定时的模式而定,Tc为机器周期,所以Tc=12/Fosc, Fosc为晶振频率,TC是需要求的值;那么就有:
TC = 2^L - (Fosc * t)/12;
我的板子晶振为12Mhz,所以选择模式1定时方式,最长定时时间为65.536ms,那么一次定时显然不够,所以每次定时到了之后flag加1,直到flag等于60(s = 60 * 50ms)。如果晶振是6Mhz,也是一样的方法计算,但是6Mhz的晶振在模式1下的最长定时时间为131.072ms。这里为了方便,如果晶振为6Mhz,那么选择定时100ms,这样刚好TC都为0x3cb0。如果你的板子为6Mhz,那么只需要把 #define CO_12_MHZ 改成 #define CO_6_MHZ 即可。有用请点一下采纳,为了回答这个问题我又重新去翻以前的书来看。