第一篇:作文语言教学教案
让作文的语言美起来
教学目标
知识与能力:正确理解和运用祖国语言,让语言富有魅力,美化作文语言。方法与过程:仔细推敲,引导与品味,比较与鉴别 价值与情感:热爱祖国语言,喜爱亮丽语 教学重点:片段练习
教学难点:通过片段练习,掌握如何使作文语言美化的技巧方法 教学设想:演示实验—分析—方法总结—片段练习教学过程:
一、看一看
教师演示:教师手拿一枚硬币,硬币从手中滑落,掉到讲桌上后又掉到地上。要求:每一个同学仔细观察这种现象,然后用一句话描写这副场景。
二、说一说
例句:(1)、有一枚硬币从老师手中滑落,掉到了地上。
(2)、一枚满脸皱纹、饱经风霜的硬币,用尽最后一口力气,从老师手里纵身一跳,在空中翻了几个跟头,落在讲桌上,寻了短见。
在同学们写的句子中你认为哪一句写的最好?原因是?第二句比第一句增加了一些内容,说说增加了哪些内容?
通过讨论分析得出结论:都认为第二句好。第二句不仅写出了硬币从哪儿掉下来,更运用拟人的手法,写出了硬币情感。第二句的语言更生动更美,引出题目。
三、比一比
分成男女两组打擂台,看谁读得好,品得好。第一组:
1、前几天,我脸上长出了十几个青春痘,我并不在意,哪想到越长越多了。
前几天,我这只有零星几粒痘痘的脸上蹭地又冒出十几粒,我并不在意,认为这些小丘很快就会消失的,哪想到,这些小家伙顽强不屈,前赴后继,潜滋暗长,只几天工夫就星罗棋布地在我脸上泛滥成灾了。
2、天啊!快迟到啦。我急忙下床,穿上衣服和鞋子,刷了牙,洗了脸,上学去了。
天哪!要迟到了。我蹬开被子,翻下床来,慌慌张张地拽过衣服,套上鞋子,几步冲进卫生间,抽出牙刷,涂上牙膏,在嘴里胡乱地刷几下,扯下毛巾,在脸上抹了两把,火烧火燎地跑出屋子去。小 结:善于使用一些富有表现力的词语如:具有视角冲击力的动词、形容词和其它具有修饰性作用的词及四字格词语。
第二组:
一张小小的红叶儿,听了狡猾的西风劝告,私下离开母枝出来玩耍,走到半路上,风偷偷儿的溜走了,他便一跤跌在溪水里。
溪水是怎样的开心呵,她将那可怜的迷路的小红叶,推推挤挤的推到一个旋涡里,使他滴滴溜溜的打圆转儿;那叶向前不得,向后不能,急得几乎哭出来;水笑嘻嘻的将手一松,他才一溜烟的逃走了。
一捶起来就发狠了,忘情了,没命了!百十个斜背腰鼓的后生,如百十块被强震不断击起的石头,狂舞在你的面前。骤雨一样,是急促的鼓点;旋风一样,是飞扬的流苏;乱蛙一样,是蹦跳的脚步;火花一样,是闪射的瞳仁;斗虎一样,是强健的风姿。
小 结:使用比喻、排比、引用、对偶、拟人等修辞使语言富有表现力和感染力 第三组:
张琼是一个货真价实,如假包换的大眼妹。小学时由于她常用大得不合比例的眼睛对我暗送“秋天的菠菜”,外加我又十分喜欢跟漂亮女孩“套磁”,于是我们就“如胶似漆”起来,以至于同学们都说我们是“同志”。真是百口莫辩,悔之晚矣!想当初她那样“勾引”我,绝对不会是处于什么纯洁的动机,很有可能是因为她和我走在一起时,她的黑发更加亮泽而已。
有次她家搬新居,让我去帮她收拾屋子,真是岂有此理!我自己的屋子都乱得要命,怎么可能去帮她?不过她一向都懂得运用自己的“天然资源 ”。几个媚眼抛过来,我就不行了,再加上她说会请我吃一个星期的早餐,我就彻底“缴械投降”了。可恶的是在我辛辛苦苦帮她收拾完后,她居然厚颜无耻矢口否认,说她根本没有答应我任何事!这空口说的话谁能证明?我气得吐血也没用,只好长叹:“既生婕,何生琼!”
小 结:通过改用活用成语、俗语形成诙谐幽默的语言使行文生动活泼、新颖别致,读起来妙趣横生,让人忍俊不禁,捧腹大笑。
四、理一理
试着总结使作文语言美起来的方法:
1、合理选用生动形象的文字(有视觉冲击力的动词、形容词及四字格词语)
2、巧妙运用多种修辞手法(使用比喻、排比、引用、对偶、拟人等修辞)
3、幽默诙谐中显现才情(活用成语、俗语)
五、写一写
进行写作训练:请你描述一下刚才男女生打擂台的情景或者描写一下星期五下午放学时的场面景。
提示:①写三五句话;②选好一个角度,仔细观察;③采用一种或几种方法,尽量使自己的语言生动。
摘录片段一:打擂台正进行的热火朝天,男女两方都气势高涨。可坐在我身旁的小龙却激动过了头,每当我们女生加分时,他便在下面鬼哭狼嚎、捶胸顿足,嚎完后脸红脖子粗,活脱脱一只要爆炸的起球。而男生加分时,他的手拍得“刹不了车”,还不忘用眼睛对我挑衅示威,嘴里还发出七八十岁老太婆的恐怖笑声。
摘录片段二:学生们早已按捺不住了,真可谓“万事俱备,只欠放学”,老班却仍旧不慌不忙的讲着课。只听见,后门“吱”的一响,旁边伸手开门的少年窃喜,门缝越来越大,笑容越来越美,突然,他呆了,一个黑影被灯光投了过来,带着一丝侥幸缓缓回头,顿时冷汗直流,老班带着一脸愤怒站在身后!
小 结:那些语言平淡、索然寡味、千人一面的文章,让阅卷老师恹恹欲睡;而那些语言亮丽、个性飞扬、摇曳多姿的文章,定会使老师一见钟情。但我还要提醒大家一句,有文采并不是一定要词藻华丽,朴实的语言运用恰当,同样可以生动形象。相信下次的作文批改,我一定可以读到文质兼美的佳作。最后咱也来句口号:只要恒心在,语言美起来。
第二篇:幼儿园语言教学教案
大班语言教案《青蛙给星星打电话》
课例分析:传统的语言教学方式都是教师教一句,幼儿学一句,缺乏互动,幼儿也不感兴趣。这首诗歌寓于优美的意境之中,天空中的美景激发了幼儿的想象力,此课程除了让幼儿反复欣赏诗歌外,还以“打电话”做游戏的形式巩固诗歌内容,较好地调动了幼儿学习诗歌的积极性、主动性,从而更好地体验了与同伴交往的快乐。
教学重难点分析:在诗歌学习的过程中,对形容词:金灿灿、红彤彤、亮晶晶的理解作为此活动的重难点,我打算以图片、挂图直观的教具展示给幼儿,引导他们初步理解这些形容词。【活动目标】
1.愿意倾听儿歌并和同伴一起感受儿歌的意境美。
2.学习儿歌内容,有感情的朗读儿歌,并能恰当的运用好听的形容词,例如:金灿灿的XX,红彤彤的XX。
3.根据已有经验大胆创编,并能运用绘画的形式表达自己的想法。【活动准备】
1、幼儿已有观察星空的经验。
2、星空、青蛙、星星、太阳、晚霞、风、白云、月亮图片;纸、记号笔、油画棒绘画材料。【活动过程】
一、激发兴趣
1、谁知道夜晚的星空是怎么样的?
2、鼓励幼儿运用自己已有的经验进行回答。
3、那么美丽的星空,有一只青蛙也想看一看,他决定先给天上的星星打个电话,你猜猜青蛙会怎么回答?我们一起来听听会发生一些什么有趣的事情?
二、学会诗歌
1、教师朗诵诗歌第一部分。
(1)、青蛙给星星打电话是怎么问的?(喂喂,小星星,天上有些啥)那你觉得星星是怎么回答的?我们一起来听听(教师朗诵诗歌第二部分)
(2)、星星是怎么告诉青蛙的?(天上美着呢,金灿灿的太阳,红彤彤的晚霞。风妈妈的摇篮里,躺着白云娃娃。亮晶晶的月亮宫殿,就是我的家,喂喂,小青蛙,到天上来玩玩吧。)
(3)青蛙听了星星的话又会怎么说呢?(教师朗诵第三段诗歌
(不用啦,不用啦,水里和天上是一样的啊!)
(4)你觉得为什么会青蛙说:“水里和天上是一样的?”
2、教师小结幼儿的回答,并引导幼儿表达。
(1)原来青蛙打电话给星星问了这么多事情,你能不能学一学青蛙 也给星星打个电话?引导幼儿集体朗诵一遍。
(2)你们还知道天上有些什么吗?鼓励幼儿大胆想象进行创编,并运用连贯的语句进行讲述。
三、仿编
(一)画一画
1.天上的星星告诉青蛙天上很美,青蛙有了一个很不错的想法,它想请星星到水里来玩,可是它不知道该怎么告诉星星,让我们一起来帮助青蛙吧!小朋友想想看,水里面有些什么?
2.请小朋友们来画一画你们想到的水里有的东西吧!
3、教师巡回指导幼儿的创作,并鼓励幼儿大胆想象。
(二)说一说
1、鼓励幼儿联系图画大胆进行创编,并运用连贯的语句进行讲述。
2、星星很喜欢热闹,希望小朋友一起用好听的声音告诉他(跟老师朗诵一遍)来,我们一起打电话给小星星吧!
四、活动延伸
我知道小朋友们想了很多水里有的东西,回到班级里,我们在区域里继续画吧!
附诗歌:
青蛙给星星打电话
青蛙给星星打电话,“喂!喂──
小星星,天上有些啥?”
星星告诉青蛙,“天上美着呢,金灿灿的太阳,红彤彤的晚霞。
风妈妈的摇篮里,躲着白云娃娃。
亮晶晶的月亮宫殿,就是我的家。
喂!喂!──
小青蛙,到天上来玩玩吧。”
青蛙听到了星星的话,摇着头回答:
“不用啦,不用啦,水里和天上是一样的呀!
教学反思:此活动以游戏的形式展开教学,形式活泼,富有童趣,幼儿很喜欢,因此课堂效果很好。课前准备中教师对幼儿关于倒影常识的渗透,使教学过程中幼儿很快理解了青蛙的回答:‘水里和天上是一个样的呀’。但诗歌中的形容词的使用对于中班幼儿来讲有点抽象,不太容易理解,可能在平时教学中,我们使用的多是通俗直观的口语表达,很少使用书面上的一些词语,在今后的教学中,我打算在提高幼儿口语表达能力的同时,不同程度上在幼儿语言的教学中扩展词汇,让他们逐步提高对一些形容词的表达和认识。
蒋文倩
2017年10月21日
第三篇:logo语言教学教案
教学目标:
1、学会启动、退出PC LOGO语言程序;
2、让学生认识PC LOGO语言程序、熟悉PC LOGO的窗口;
3、学会使用几条简单的绘图命令。教学重难点:
重点:认识PCLOGO语言程序
难点:掌握和使用几条简单的绘图命令 教学准备:
多媒体教室、大屏幕、学生评价表 教学过程:
一、导入新课:
看得出同学们今天特别的兴奋,也许是因为今天有好多的老师在听我们的课,那你们有没有信心把这节课学好呢?(有)很好!
老师先给你们讲一个故事听听:
很久很久以前,有一个LOGO王国,LOGO王国里有一个非常听话的小家伙---叫“小海龟”。它能听懂LOGO语言,只要你给它下一个命令,它就会画出美丽、奇妙的图形。并且它还有会算数、会唱歌等多种功能,但是绘图是它最主要的功能。你们看下面的这些图形就是用它绘制的。
展示图形课件(多漂亮啊!)想不想认识一下这个小家伙?(想)出示课题:第一课 走进LOGO王国
现在老师就带你们到LOGO王国去看一看,在那里你不但可以见到可爱的小海龟,还能让它一显身手呢!
二、新授
1、学习启动LOGO语言程序的两种方法: 我们要想见到这只神奇的小海龟,必须启动LOGO语言程序。出示课件:
⑴ 单击【开始】--【程序】--【PC LOGO】即可启动LOGO语言程序。⑵ 双击桌面上的LOGO快捷方式图标也可以启动LOGO语言程序。
现在老师用第二种方法进入LOGO王国。(师操作、学生认真看)哇!这就是PC LOGO中文版窗口,原来这只小海龟趴在这儿呢!
2、认识PCLOGO窗口及三种屏幕状态 师一边操作,一边讲解LOGO窗口及三种屏幕状态。㈠窗口的组成:
★ 图中上面的部分是绘图区,显示LOGO语言的标志和版本信息; ★ 图中下面的部分是文本区,供大家输入命令;
★ “?”是LOGO特有的提示符,命令要在“?”之后输入。㈡屏幕状态:(有三种)? 全文字屏(命令:TS)? 图文混排(命令:SS)? 全图形屏(命令:FS)
它们之间可以互相切换。可以输入以上命令进行切换或者用鼠标单击相应的窗口按钮完成切换。
3、学生启动LOGO语言程序
下面请同学们试着用第二种方法:双击桌面上的LOGO快捷方式图标启动LOGO语言程序。开始!可能同学们启动的LOGO界面和老师的不一样,这是版本不同的原因。教师机上安装的是PC LOGO汉化版1.0;而你们机上安装的是英文版4.0,所以界面不一样,但操作方法是一样的。你们发现小海龟了吗?(没有)这只小海龟架子可大了,它想要你们把它请出来。那好,给它一个命令吧:
请输入显龟命令: ST(按回车键),怎么样,小海龟闪亮登场了吧!既然它出来了,我们就来检验一下它的功能.4、先让小海龟画画
◆出示课件:(讲解)---前进命令:FD 让学生试着操作:出示课件:FD100 FD 100 结果有什么不同?(让学生回答不同的原因)再次强调“空格”的重要性。
同学们,小海龟还有一个特点,只要屏幕上有图形了,它就不再画画了,那怎么办?(清除它)
◆出示课件---清屏命令:CS 让学生试着操作:出示课件: 小海龟还有一招,它会转弯。
◆出示课件---右转命令:RT(教师讲解,学生练习操作)如果是让小海龟回到原点怎么操作?
◆出示课件---回家命令:HOME(学生操作)发现小海龟真的回家了。师:小海龟学会了前进、转弯,就可以画很多图案了!
5、动手操作:(练习题)⑴试一试下面的命令能画出什么图形? CS FD 30 RT 90 FD 40 RT 90 FD 30 RT 90 FD 40 ⑵思考题:
下面的命令能画出一个长为100海龟步,宽为60海龟步的长方形,请把命令补充完整。(可以写在你的练习本上)CS FD 100 前进100步 RT 90 右转90度 FD 60 前进60步 RT 90 右转90度
前进100步
右转90度
前进60步 同学们试着操作一遍.6、拓展练习:
画一个边长为60的正方形(小组合作,先写出命令,再动手操作).(看来,同学们和小海龟配合的很默契)
三、小海龟退场(现在小海龟有些累了,想休息一下那我们跟它说声再见了!)键入命令:BYE(回车)(再见的意思)
四、谈收获
生:
师:◆这节课我们学习了LOGO系统的进入和退出的方法。
◆几条LOGO基本绘图命令:前进命令(FD)、右转命令(RT)、回家命令(HOME)和清屏命令(CS),还有显龟命令(ST)
◆命令和数字之间至少要有一个空格。考考你:出示课件
在Windows系统桌面上,我们只须双击 快捷图标,就可以进入LOGO系统。LOGO世界的主人是,与主人告别而需要键入。
同学们这节课的收获确实不小,知识掌握的也很扎实。“千里之行,始于足下”,今后还要继续努力,谢谢大家的合作!
五、教学反思
第四篇:幼儿园语言教学教案
(一)幼儿园大班语言教案设计:我要讲故事
一、活动目标:
1、引导幼儿感受故事的意境,萌发对故事的兴趣。
2、能认真倾听老师及同班及其它同学讲故事,并且自己积极参与讲故事中。
3、学习理解故事,用自己的语言讲故事。
4、培养幼儿团队合作的意识。
二、活动准备
连环画若干(与幼儿组数相等)、图片、背景音乐、奖品
三、活动过程
1、分组:将幼儿按人数平均分成两组,每组选出一个讲故事的代表。
2、编号:将每组幼儿按阿拉伯数字进行编号,确定他们讲故事的次序。
3、出示图片,调动幼儿积极性。
——引导语:今天老师给大家带来了许多好听的故事,今天老师要和小朋友们一起讲故事,一起表演故事,你们愿意吗? ——感知连环画中的故事
4、拿出第一组连环画(龟兔赛跑),放开背景音乐,让第一组的代表幼儿按自己对连环画的理解讲述画中的故事。讲完后,由本组幼儿做出补充。
——教师将故事再梳理,讲故事完整化。——用动作理解、体验动词的动态。
5、进一步巩固故事,让其他组的幼儿再讲一遍。
——鼓励幼儿创新的讲故事,鼓励幼儿讲出自己对故事的理解。
6、再由第二组幼儿讲故事。
四、活动结束
1、评价
2、总结
五、活动延伸
请幼儿课后把故事的情节简单地用图画表达出来,然后制作成小图书与同伴进行分享。附故事:
1、《龟兔赛跑》
兔子和乌龟赛跑,兔子嘲笑乌龟的步子爬的慢,但是他笑了,说总有一天他会和她赛跑,并且赢他。“快点”,兔子说,“你很快会看到我是跑的多么的快。”他们打算马上就开始比赛。乌龟拼命的爬,一刻都不停止,兔子认为比赛太轻松了,他说他先打个盹,然后很快的可以追上乌龟。同时乌龟坚持爬行,当兔子醒来跑到的时候只能看着乌龟在他前面到达终点。
2、《小猴子掰玉米》
有一天,一只小猴子下山来.它走到一块玉米地里,看见玉米结得又大又多,非常高兴,就掰了一个,扛着往前走。小猴子扛着玉米,走到一棵桃树下。它看见满树的桃子又大又红,非常高兴,就扔了玉米去摘桃子。小猴子捧着几个桃子,走到一片瓜地里。它看见满地的西瓜又大又圆,非常高兴,就扔了桃子去摘西瓜。小猴子抱着一个大西瓜往回走。走着走着,看见一只小兔蹦蹦跳跳的,真可爱。它非常高兴,就扔了西瓜去追小兔。小兔跑进树林子,不见了。小猴子只好空着手回家去。
王彩芳 2012、12、12
(二)幼儿园大班语言教案设计:发生什么了
一、活动目标:
1、能积极参与语言活动,对故事表演感兴趣。
2、丰富词语:东倒西歪,乱七八糟。
3、在理解故事内容的基础上大胆推测想象,发展语言表述能力及分析能力。
二、活动准备
1、物质准备:将故事的前半部分制作成幻灯片,将操场布置成森林的场景(大树、房子、草地、河水、大树旁画上血脚印直至小河边),《黑猫警长》的主题音乐,黑猫警长、白猫警士的头饰,请配班老师扮演大灰狼。
2、经验准备:观赏过《黑猫警长》的动画片。
三、活动过程
(一)谈话引出故事名称,激发幼儿兴趣
教师:今天老师要和小朋友们一起讲故事,一起表演故事,你们愿意吗?故事的名称叫做《这里发生了什么事》。(出示汉字让幼儿认读)
(二)师生共同讲述故事上半部分,理解故事内容,学习“东倒西歪、乱七八糟”等词语
1、教师播放幻灯片讲述故事的第一段,提问:小白兔在家吗?你是怎么知道的?
2、教师继续讲述故事第二段,提问:小白兔家究竟发生了什么事呢?小白兔又到哪里去了呢?(学习用词:东倒西歪、乱七八糟)
教师:小花鹿很着急,因为小白兔家一定是有坏蛋来过的,小花鹿马上会怎么做?(教师再引导幼儿仔细观察幻灯片,从中发现有电话机。)
教师:那么小花鹿是怎么向黑猫警长说的呢?(启发幼儿在向黑猫警长汇报时,把“东倒西歪、乱七八糟”等词语用进去。)
(三)师生共同表演故事的下半段,大胆推测,续编故事
1、教师和幼儿分别扮演黑猫警长和白猫警士。播放《黑猫警长》的主题音乐,引导幼儿学白猫警士骑摩托车的动作来到“森林中小兔子的家”。
2、引导幼儿认真侦察案发现场,寻找线索。
(1)观察案发现场图片,引导幼儿讨论:这件事究竟是什么时候发生的? 教师:白猫警士刚才说了,炉子里还有火,萝卜汤里还冒着热气,这就说明这里的事情是刚才发生的。那么我们再到屋外仔细找找还有什么可疑的地方。
(2)侦察周围现场,教师引导幼儿报告侦察的情况,如“报告黑猫警长,我在xx地方发现了××”,教师注意幼儿语言的规范和用词的准确。
(3)引导幼儿根据发现的线索采取相应的行动。
讨论:这是谁的血脚印?小白兔现在会怎么样?我们该怎么做? 教师:警士们,我们沿着脚印去救小白兔吧。(到了小河边)咦,怎么脚印不见了?你们发现了什么?(扮演大灰狼的教师拨弄草丛)
“黑猫警长”下令:立即监视草丛。发现动静马上行动。(“白猫警士”包围草丛,救出小白兔,抓出一只大灰狼。)
(4)请幼儿将刚才表演的故事用流畅的语言进行讲述。
四、活动结束
1、评价
2、总结
五、活动延伸
请幼儿把故事的情节简单地用图画表达出来,然后制作成小图书与同伴进行分享。
附故事 :《发生什么了》
在一棵大树旁,有一座美丽的小木房,木房里住着一只可爱的小白兔。一天,天气真好,小花鹿提着花篮,要去小白兔家做客。他一边唱着歌,一边采着花。唱着走着,不一会儿,小白兔的家到了。嗳,怎么小白兔家的门敞开着。小花鹿心里想:“小白兔肯定会热情地接待我的。”小花鹿喊着:“小白兔,我来啦!”“咦,怎么没有人回答?屋里怎么一点声音也没有?”
小花鹿把门推开朝屋里一看,吓了一大跳。小白兔家里的桌子、椅子东倒西歪,小白兔最爱吃的青菜萝卜汤都打翻在地。小花鹿张嘴直喊:“小白兔,小白兔,你在哪里,你在哪里呀?”可是喊了半天还是没有回答。“奇怪!小白兔到哪里去了,家里怎么会乱成这个样子的?”
小花鹿急忙跑到大树旁,打电话给黑猫警长,“嘀铃铃……,你是黑猫警长吗?我是小花鹿,小白兔家出事了,桌子、椅子东倒西歪,小白兔最爱吃的青菜萝卜汤都打翻在地,乱七八糟。黑猫警长。你快来,赶快来啊!”
王彩芳 2012、12、15
第五篇:c语言教学教案
第一讲 C语言概述
1.1 C语言发展概述
C语言是在1972年至1973年间由美国的贝尔实验室的M.D.Ritchie和K.Thompson以及英国剑桥大学的M.Richards等为描述和实现UNIX操作系统而设计的。
最初的C语言是附属于UNIX的操作系统环境,而它的产生却可以更好地描述UNIX操作系统。时至今日,C语言已独立于UNIX操作系统。它已成为微型、小型、中型、大型和超大型(巨型)计算机通用的一种程序设计语言。
随着C语言的不断发展、应用和普及,目前,C语言已经能够在多种操作系统下运行,实用的C语言编译系统种类繁多,如Microsoft C、Turbo C等。1.2 C语言的特点
C语言能够成为目前广泛的高级设计语言之一,完全是由其语言特点决定的。
(1)语言基本组成部分紧凑简洁。(2)C语言运算符丰富,表达能力强。(3)C语言数据结构丰富,结构化好。(4)具有结构化的控制语句。
(5)C语言提供了某些接近汇编语言的功能。(6)C语言程序所生成的目标代码质量高。(7)C语言程序可移植性好。C语言的弱点:
(1)运算符的优先级较复杂,不容易记忆
(2)C语言的语法限制不太严格,一定程度上降低了某些安全性。1.3 简单的C语言程序。1.3.1 C语言程序的构成 1.3.2 C语言程序的特点
(1)C程序是由函数构成的,其中至少包括一个函数main()。(2)函数体是由左右花括号{ }括起来的部分。(3)C语言中的每个基本语句都以“;”结束。
(4)C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。
(5)#include语句是编译预处理语句,其作用是将由双引号或尖括号括起来的文件内容读入该语句位置处。对程序说明:
(1)可用/*„*/对C程序中的任何部分作注释。
(2)C语言中所有变量都必须先定义类型,然后再使用。(3)一个C语言程序通过函数之间的相互调用来实现相应的功能。即可以是系统提供的库函数,也可以是根据需要自己定义的函数。1.4 C语言上机步骤
运行环境:DOC操作系统下的Turbo C 1.4.1 C程序上机步骤
1.编辑:在TurboC环境下。将C语言源程序通过键盘输入到计算机中,并以文件形式存盘,源程序都是以.C为扩展名。
2.编译:通过编辑程序将源程序输入到计算机后,需要经过C语言编译器将其生成目标程序。得到的目标文件都是以.OBJ为文件扩展名。3.连接:经过编译后生成的目标文件需经过连接后才能生成可执行代码。其扩展名是.EXE。
所谓连接,是将目标文件和库函数或其他目标程序连接成可执行的目标程序。
4.执行:连接后源程序的目标程序就是可执行文件了。在DOS系统下,只要键入可执行文件名,按回车键就可以了。1.4.2 Turbo C系统菜单 1.Turbo C的主屏幕和主菜单功能 2.文件菜单及功能 1.4.3 程序调试方法
一个计算机程序必须对其进行测试来确定其可以正确地工作,这一过程称为调试。程序错误
语法错误:通过编译和连接就会找到 运行错误:通过调试自己找出问题所在 1.设置和使用观察变量 2.单步执行程序 3.设置和使用断点
2.1 常量和变量 2.2 整型数据 2.3 字符型数据 2.4 浮点型数据 2.5 变量的初始化
第二章 数据类型与表达式 2.1 常量和变量
2.1.1 常量:在程序运行过程中其值不能被改变的量。2.1.2 变量:在程序运行过程中其值可以被改变的量。
标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。1.标识符的有关规定:
(1)由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符;(2)大小写字母的含义不同。
(3)不能使用C语言中的关键字做标识符,(4)用户取名时,应当尽量遵循“简洁明了”和见名知意的原则。2.变量名的有关规定:
(1)使用变量名前,一定先定认,后使用,否则不能做为变量名。(2)每一个变量属于一种类型,便于在编译时据此检查该变量所进行的运算是否合法。(3)变量名的定义:存储属性、数据类型、变量名表 3.数据类型 2.2 整型数据 2.2.1整型常量
(1)十进制整数:数码直接开头的十进制数。如1234,-234。(2)八进制整数:以0开头的常量是八进制数。如011=(11)8(3)十六进制整数:以0x开头的数是十六进制。如0x123即(123)16 例2.1 三种进制表示方法的转换 源程序a1.c main(){ Int x=1246,y=01246,z=0x1246;Printf(“%d,%d,%dn”,x,y,z);Printf(“%o,%o,%on”,x,y,z);Printf(“%x,%x,%xn”,x,y,z);} C:>a1 1246,678,4678 2336,1246,11106 4de,2a6,1246 2.2.2整型变量 原则:使用变量前,先定义,后使用。(1)基本型:用int表示;
(2)短整型:用short int或short表示;(3)长整型:用long int或long表示;(4)无符号型:
无符号整型:用unsigned int或unsigned表示;
无符号短整型:用unsigned short int或unsigned short表示;无符号长整型:用unsigned long int或unsigned long表示;2.2.3 整型变量使用
不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。
例2.2不同类型的数据进行算术运算。源程序a2.c Main(){ Int a,b,s1,s2;Unsigned x;a=10;b=-30;x=20;S1=a+x;s2=b+x;Printf(“a+x=%d,b+x=%dn”,s1,s2);} C:>a2 运行结果为 a+x=30,b+x=-10 2.2.3 整型变量使用
不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。
例2.3 整型数据各类型所能表示的范围 源程序a3.c main(){int a,b;long c,d;unsigned e,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;Printf(“int: %d,%d,n”,a,a+b);Printf(“long: %d,%ldn”,c,c+d);Printf(“unsigned: %u,%un”,e,e+f);} C:>a3 运行结果为 Int: 372767,-32768 Long: 2147483647,-2147483648 Unsigned:65535,0 2.3 字符型数据 2.3.1 字符型常量
字符常量是由一对单引号括起来的单个字符构成,例如:‘A’,‘b’,’2’,’%’’;’等。一个字符型常量是该字符集中对应的编码值:‘0’~‘9’的ASCⅡ编码值是48~57。显然‘0’与数字0是不同的。
2.3.2 字符型变量
字符型数据分为两类:一般字符类型(char)和无符号字符类型(unsigned char)。
例2.4 字符型数据与整型数据可以通用 源程序a3.c Main(){char c1,c2;Printf(“%c,%cn”,c1,c2);Printf(“%d,%dn”,c1,c2);} C:>a4 运行结果为 A,B 65,66
2.3.3 字符串常量
字符串常量是由一对双引号括起来的字符序列,例:“fsdf”,”A”等。字符串常量中不能直接包括单引号、双引号和反斜杠““。字符串常量与字符常量的区别:
(1)字符串常量是用双引号括起来的字符序列。(2)字符串常量有串尾标记” ”;(3)字符串常量允许扩展表示法;
(4)C语言中没有专门的字符串变量。字符串如果需要存放在变量中,需要用字符型数组来存放。
注意:不要将单个字符组成的字符串常量与字符常量混淆。‘a’为字符串常量,不能把一个字符串常量赋给一个字符变量。例如:下面的用法都是错误的: Char c1,c2;C1=“a” C2=“CHINA”;字符‘ ’由系统自动加入到每个字符串的结束处,不必由编程人员加入。
字符串“CHINA”在内存中的存放形式如下图,其长度是六个字节,而不是5个字节。字符‘ ’所对应的ASCⅡ值为0,即“空”字符。2.4 浮点型数据 2.4.1 浮点型常量
浮点型常量有两种表示形式。十进制数形式
它是由数字和小数组成,如:3.14159,-7.2,8.9 指数法形式
如:180000.0用指数法可表示为1.8e5,1.8称为尾数,5称为指数。
0.00123用指数法可表示为1.23e-3 注意:
(1)字母e 或E之前(即尾数部分)必须是有数字的。(2)e或E后面的指数部分必须是整数。如:e-3,9.8e3.1,e5都是不合法的。
2.4.2 浮点型变量(实型变量)
把带有小数点的数称为浮点数,或实型数。浮点型变量又称为实型变量,按能表示数的精度,分为:单精度浮点型变量和双精度浮点型变量,其定认方法如下:
float a,b;/*单精度变量的定义*/ double c,d;/*双精度变量的定义*/ 单精度:占4个字节,有效位为7位,数值范围为10-37~1038 双精度:占8个字节,有效位为15~16位,数值范围约为10-307~10308 浮点型常量不存在单精度型和双精度型之分。2.5 变量的初始化 变量的初始人化:在定义变量的同时给变量赋予初值。方法:
(1)先说明变量类型,然后再赋值。
(2)在对变量类型说明的同时,给变量赋初值。先定义后赋值 int a,b,c;char d;floatb f;a=2;b=5;c=10;d=‘a’;f=5.7;定义和赋值同时进行 int a=5;short b=10;char c=‘a’;float d=7.8;3.对几个变量同时赋一个初值 Int a1=10,a2=10,a3=10;
初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如: int a=10;相当于: int a;a=10;
又如: Int a;,b,c=20;相当于: Int a,b,c;C=20;第三讲 运算符以及数据类型 2.6 运算符及表达式 2.7 数据类型转换 2.8 类型定义 2.6 运算符及表达式
C语言运算符可以分为:算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。2.6.1 算术运算符和算术表达式
1.算术运算符:加、减、乘、除及取模即:+,-,*,/,%来表示。C语言规定:
(1)模运算符%,仅用于整型变量或整型常量。
(2)优先级:一个表达式中如有多个运算符,则计算先后次序为相应运算符的优先级高的优先。乘、除、模优先级高于加、减的优先级。(3)结合方向:是一个运算对象两侧的运算符的优先级别相同时,应遵循的处理规则。
算术运算符的结合方向是从左至右; 赋值运算符的结合方向是从右至左。
算术表达式:由算术运算符、括号以及操作对象组成的符号C语言语法规则的表达式称为算术表达式。2.6.2 赋值语句 1.赋值运算符
语言的赋值运算符是“=”,它的作用是赋值运算符右边表达式的值赋给其左边的变量。
例如:a=10,x=a+5,前者是把常量10赋给变量a,后者是将表达式a+5的值赋给变量x.注意:如果“=”两侧的类型不一致,在赋值时要进行类型转换。例如a=b,执行该语句时,b的结果转换为a的类型后才能进行赋值运算。2.复合赋值运算符
C语言允许在赋值运算符“=“之前加上其它运算符,以构成其复合运算符。复合运算符多数为双目。复合运算符有:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|= 例:
a+=2
等价于 a=a+2 x*=y+5 等价于 x=x*(y+5)x%=8
等价于 x=x%8 赋值运算符都是自右向左执行。3.赋值语句与赋值表达式 赋值语句最简单的形式是: <变量>= <表达式>;
功能:是赋值运算符右边的“表达式”的值赋给左边的变量。
赋值表达式也可以包含复合的赋值运算符,例: 如果a=10,表达式a+=a-=a*a的值为-180。其步骤为:(1)先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90.(2)再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180.4.自增自减运算符
i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。++i(或--i)表示在使用该表达式值之前将i值加1(或减1)。
说明:
(1)++和--仅适用于变量,不能用于常量或表达式。(2)++和--运算符的结合方向是“至右向左”。Main(){int a=100;printf(“a++=%dn”,a++);printf(“++a=%dn”,++a);printf(“a--=%dn”,a--);printf(“--a=%dn”,--a);} 输出结果: a++=100 ++a=102 a--=102--a=100
2.6.3 关系运算符和关系表达式 1.关系运算符
关系运算符均为两目运算符。共有六种: >
大于
<
小于 >=
大于等于 <=
小于等于 ==
等于
!=
不等于
关系运算符要求两个操作数是同一种数据类型,其结果为一逻辑值,即关系成立时,其值为真(true),用非0值表示;关系不成立时,其值为假(false),用0表示。
关系运算符的优先级借低于算术运算符,关系运算符==和!=低于前四种运算符,并且结合方向均为自左至右。2.关系表达式
由关系运算符将两个表达式连接起来的有意义的式子称为关系表达式。如:a+b 关系表达式的值是一个逻辑值,即“真”或“假”。用1表示“真”,用0表示“假”。如: a=4,b=1,C=a>b;c的值为1,若a=1,b=8,x=a>b;x的值为0。2.6.4 逻辑运算符和逻辑表达式 1.逻辑运算符 逻辑运算符有“&&“(逻辑与)、”||“(逻辑或)和”!“(逻辑非)三种。 逻辑运算符的操作对象为零或非零整数值,见表2.4.表2.4 逻辑运算规则 逻辑表达式 由逻辑运算符和其操作对象组成表达式称为逻辑表达式。2.6.5 位运算符 位(bit)运算是C语言的一大特色,可直接对构成内存的基本单位 “字节”(byte)进行按位操作。按位与(&)操作规则:参加运算的两个运算量,如果两个相应的位均为1,则该 位的结果为1,否则为0,见表2.5 表2.5 接位与 例如:(1)清零。 (2)取一个数中的某些位。高位清零: 00101101 10011100 & 00000000 11111111 00000000 10011100 低位清零: 00101101 10011100 & 11111111 00000000 00101101 00000000 按位或(|) 操作规则:参加运算的两个运算量,其相应的位中只有一个为1,则该位的结果为1,否则为0。 表2.6 按位或 例如: (1)01000001 | 00101001 01101001(2)01000001 | 00000000 01000001(3)01000011 | 11111111 11111111(4)01000001 | 10111110 11111111 例如:将某一个数的某些位置为1。一个整数a,要将其低字节全置为1,即低字节为11111111,可将该数与255(十六进制为FF,二进制为11111111)按按位或即可。按位异或(^) 操作规则:参加运算的两个运算量,当相应位相同时,其结果在该位为0,相应位不同时,其结果在该位为1,即按位相加,但不进位。 表2.7 按位异或(1)使指定位翻转。即由1变为0,由0变为1。例: 01100110 ^ 00001111 01101001(2)不使用临时变量,交换两个值。方法为:若有两个数a和b,通过 下面的赋值语言可将 a和b的值互换: a=a^b;b=b^a;b=a^b;4.按位求反(~) 操作规则:运算符~是一个单目运算符,用来对一个数二进制表示按位求反,即瘵0变成1,将1变成0。 表2.8 按位求反 例: ~01101001 10010110 将一个数的某些位变为0。方法是:瘵该数a与~b按位求与,此处的b为这样的一个数,即要求a 中变为0的那些位均为1,其余位均为0。如要将a的最低位变为0,则可使用下述表达式实现。A=a&~1 5.左移(<<) 操作规则:将一个数的各二进制位全部左移若干位,左移后,右边的这些位用0填补,左边移出的位舍弃不用。例:a=a<<2;若a=15,即二进制00001111,左移两位后变为00111100。若再向左移4位,则变为11000000。 将一个数左移1位,相当于该数乘以2,左移2位相当于该数乘以4。如上例中a=15,则a=a<<2,此时a=15*4=60。但是这种情况仅指左移时没有1被移出去的情况,左移运算要比乘法运算快得多。 6.右移(>>) 操作规则:将一个数的各二进制位全部右移若干位,右移后,右边移出的位被舍弃,而左边的填补分两种情况:(1)该数为无符号数,则高位补0。例:a=a>>2;右a=15,二进制为00001111,右移两位后为00000011。 (2)该数为有符号数,若原来的符号位为0(最高位为0,即正数)则高位补0,若原来的符号位为1(即表示该数为负数),高位补0或1,取决于所使用的计算机系统。有的系统补0,称为逻辑右移,有的系统补1,称为算术右移。例:a:***1 a>>1:***1(逻辑右移)a>>1:***1(算术右移)2.6.6 其他运算符 逗号运算符 逗号运算符为“,“。逗号表达式是用逗号运算符把两个表达式组合成的一个表达式。其一般形式为 〈表达 式1〉,〈表达式2〉 说明:(1)逗号表达式的执行过程是:先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。 (2)一个逗号表达式可以与另一个表达式构成一个新逗号表达式。(3)逗号运算符是所有运算符中级别最低的。 (4)逗号表达式常用于for语句中,它可以表达多个初值或多个步长增量。 逗号表达式的一般形式可以扩展为 〈表达式1〉,〈表达式2〉,〈表达式3〉,„„〈表达式N〉 表达式n的值是整个表达式的值。 条件运算符 条件运算符是一个三目运算符,把三表达式组合成一个表达式。其一般形式为 〈表达式1〉?〈表达式2〉:〈表达式3〉; 功能:计算〈表达式1〉的值,如果该值为真(非0值),则计算〈表达式2〉的值,并且该值即为条件表达式值。若〈表达式1〉的值为假(0),则计算〈表达式3〉的值,并将该值作为条件表达式的值。说明: (1)条件运算符优先级别高于赋值运算符,低于关系运算符和算术运算符。 (2)条件运算符结合方向是“自右至左”。 (3)〈表达式1〉与〈表达式2〉、〈表达式3〉类型可以不同。3.Sizeof运算符 sizeof运算符是测试变量、表达式或类型名所占用的字节 数。有两种用法。 sizeof〈表达式〉:测试表达式所占用的字节数。sizeof〈表达式〉:测试类型名所占用的字节数。例如: sizeof(float)其值为4。sizeof运算符可以出现的表达式中。main(){ int a=4;fload b=5.6;printf(“%d,%dn”, sizeof(a), sizeof(b));} 输出结果: 2,4 2.7 数据类型转换 在内存中,字符是以系统中所使用字符的编码值形式存储的,C语言允许字符型数据和整型数据之间通用一个字符型数据,即可以以字符形式输出,也可以以整型形式输出,同时,字符型数据可能赋给整型变量,整型数据也可以赋给字符型变量,只是当整型变量数据的大小超过字符型变量的表示范围时,需要截取相应的有效位。 除字符型数据和整型数据之间可以通用之外,不同类型的数据在进行混合运算时,往往需要进行强制类型转换。因此类型转换有两种方式:一种是自动类型转换;另一种是强制类型转换。2.7.1 自动类型转换 在进行计算时,首先将不同类型的数据转换成同一类型,然 后进行计算 不同类型数值转换规则: Double float Long Unsigned Int char ,short 2.7.2 强制类型转化 强制类型转化的一般形式如下所示: (强制的类型名)〈变量〉 例如:(int)(a+b),将a+b的结果强制转换成int型; (float)a/b,将a的结果强制转换成float型后,再进行计算。注意:经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。2.8 类型定义 C语言允许使用typedef语句定义新类型名,以取代已有类型名,如: typedef int counter;作用是定义counter等价于基本数据类型名int,以后就可以利用counter来定义int型变量了。如: counter I,n; 等价于int I, n;类型定义的优点是:能够提高程序可读性。注意: (1)typedef语句不能创造新的类型,只能为已有的类型增加一个类型名。(2)typedef语句只能用来定义类型名,而不能用来定义变量。例如:分析下例程序。# include “stdio.h” typeref int integer;typedef float real;Main(){ integer i=5;real f;f=real(i)/10;printf(%f”,f);} 第四讲 数据的输入输出 3.1 数据的输入 3.2 数据的输出 3.3 应用举例 3.1 数据的输入 3.1.1 字符输入函数getchar 格式: getchar() 功能:从键盘上接收输入的一个字符。例如: char c; ┆ c= getchar()其中c是字符型或整型变量。 例1:从键盘输入一个字符,并将其存入字符型变量c 中。#include”stdio.h” Main(){char c;C= getchar();} 3.1.2 格式输入函数scanf 格式:scanf(格式控制,地址表); 功能:用来输入任何类型数据,可同时输入多个类型或不同类型数据。格式控制:是由双括号括起来字符串,主要是由“%”和格式符组成 2.地址表 Scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。地址运算符为“&“,如变量a的地址可以写为&a。 例3.2用scanf函数,从键盘 上输入一个整型数、一个浮 点数和一个字符,分别存入 变量i、f和c中。 #include”stdio.h” main(){ int i;float f;char c;scanf(“%d,%f,%c”,&I,&f,&c);printf(“i=%d,f=%f,c=%c”,i,f,c);} 说明: (1)在scanf函数“格式控制”部分中的每个格式说明符都必须在“地址表列”中有一个变量与之对应格式说明符必须要与相应变量的类型一致。 (2)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔;如果格式说明符之间包含其它字符,则输入数据时,应输入与这些字符相同的字符做间隔,如: Scanf(“%d,%f,%c”,&i,&f,&c); 在输入数据时,应采用如下形式:20,7.8,a(3)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数来截取所需的数据,如: scanf(%2d%3d”,&x,&y);当用户输入78985时,系统将自动地将78赋给变量x,将985赋给变量y。这种方式也可用于字符型数据的输入。 (4)应该特别注意的是,scanf函数中的“地址表列”部分应当中变量的地址,而不是变量名。.2 数据的输出 3.2.1 字符输出函数putchar 数据的输出一般是以终端显示器(屏幕)为处理对象。格式:向终端输出一个字符。 说明:变量c可以是字符型,也可以是整型。例3.3 从键盘输入一个字符,在屏幕上显示出来。#include”stdio.h” main(){ char c;c=getchar(); /*从键盘输入一个字符*/ putchar(c); /*在屏幕上显示一个字符*/ } putchar函数也可以输出一些特殊字符(控制字符),如:putchar(‘n’)作用是输出一个“换行”字符。3.2.2 格式控制函数printf 格式: printf(格式控制,输出表); 功能:输出任何类型的数据。1.格式控制 “格式控制”部分与scanf函数的相似,也是由双引号括起来的字符串,主要包括格式说明和需要原样输出的字符。 “格式说明”:由“%”和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。printf函数中使用的格式字符见表3.2。 表3.2 printf函数格式字符 注意:格式字符必须小写 输出表 printf函数中的“输出表”部分由表达式组成,这些表达式应与“格式控制”字符串中的格式说明符的类型一一对应,若“输出表”中有多个表达式,则每个表达式之间应由逗号隔开。 例3.4 从键盘输入一个整数和一个浮点数,并在屏幕上显示出来。#include”stdio.h” main(){ int i;float f;scanf(“%d,%f”,&i,&f);printf(“i=%d,f=%f”,I,f);} 执行此程序,按格式输入数据: 50,8,9 i=50,f=8.900000 说明: (1)printf函数中的“格式控制”字符串中的每一个格式说明符,都必须与“输出表”中的某一个变量相对应,如上述程序中的“%”与i对应;“%f”与f对应,而且格式说明符应当与其所对应变量的类型一致。 若要显示“%”字符,则应在“格式控制”字符串中连写两个“%”,如: Printf(“x=%d%%”,100/4);将显示:x=25%。 (2)对格式说明符c、d、s和f等,可以指定输出字段的宽度。%md:m为指定的输出字段的宽度。如果数据的位数大于m,则按实际位数输出,否则输出时向右对齐,左端补以“空格”符。%mc:m为指定的输出字段的宽度。若m大于一个字符的宽度,则输出时向右对齐,左端补以“空格”符。 %mc:m为输出时字符串所占的列数。如果字符串的长度(字符个数)大于m,则按字符串的本身长度输出,否则,输出时字符串向右对齐,左端补以“空格”符。 %-ms:mr的意义同上。如果字符串的长度小于m,则输出时字符串向左对齐,右端补以“空格”符。 %m.nf:m为浮点数据所占的总列数(包括小数点),n为小数点后面的位数。如果数据的长度小于m,则输出时向右对齐,左端补以“空格”符。 %-m.nf:m、n的意义同上。如果数据的长度小于m,则输出向左对齐,右端补以“空格”符。 (3)除了格式说明符及其输出字段的宽度外,在“格式控制”字符中的其他字符,将按原样输出。 (4)在显示数据时,可以不指定输出字段的宽度,而直接利用系统隐含的输出宽度。3.3 应用举例 例3.5 分析下列程序,观察运行结果。main(){ char ch=‘a’;int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;pPrintf(“(1)a=%d,a=%c,ch=%d,ch=%cn”,a,a,ch,ch);printf(“(2)b=%un”,b);printf(“(3)c=%ldn”,c);printf(“(4)x=%f,y=%fn”,x,y);printf(“(5)x=%e,y=%en”,x,y);printf(“(6)y=%e10.2fn”,y);} 运行的结果为 (1)a=98,a=b,ch=97,ch=a b=1000 C=123456789 X=3.140000,y=1.234567 x=3.14000e+00,y=1.23456e+00 Y=1.23 例3.6 从键盘上输入一个大写字母,把它转换面小 写字母,然后显示出来。#include”stdio.h” main(){ char x1,x2;printf(“x1=?n”);scanf(“%c”,&x1);x2=x1+32;printf(“%c,%cn”,x1,x2);} 运行结果 x1=? A A,a 例3.7 分别输入一个浮点数,一个整数,一个字符型数。#include “stdio.h” main(){ float f;int I;char c;scanf(“%f%d%c”,&f,&I,&c);printf(“%f%d%c”,f,I,c);} 例3.8 从键盘输入一个字符并鸣笛输出。#include “stdio.h” Main(){ Char c;C=getchar();Putchar(‘ 07’);Putchar(c);} 第五讲 条件语句 4.1 语句和复合语句 4.2 if语句 4.3 switch语句 4.4 应用举例 第四章 条件语句 结构化程序的三种基本结构:顺序结构、选择分支结构和循环结构。顺序结构:是指每个程序都是按照语句的书写顺序依次执行的。选择分支结构:是指通过对特定条件的判断,来选择一个分支执行。循环结构:循环是指在给定条件下,重复执行某段程序,直到不满足条件为止。4.1 语句和复合语句 表达式语句:一个表达式的后面跟随一个分号构成的语句。如:x=x+a;说明:分号“;”是语句的终结符,而不是语句的分隔符即分号是语句的最末组成部分。 复合语句:由左右花括号括起来的语句; 形式:{说明部分;语句部分} 一个复合语句在语法上等同于一个语句,在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。一个复合语句又可以出现在其他复合语句内部。 在复合语句的后面必须有一个分号,做为该语句的终结符。4.2 if语句 If语句是条件选择语句,它是通过对给定条件的判断,来决定所要执行的操作。 4.2.1 if语句的三种形式 If语句的第一种形式 格式:if(表达式)〈语句〉 功能:首先计算表达式的值,若表达式的值 为“真”(为非0),则执行语句,若表达 式的值为“假”(为0),不执行语句。例如: If(x>y)printf(“%d”,x);2.If语句的第二种形式 格式:if(表达式)〈语句1〉 else 〈语句2〉 功能:首先计算表达式的值,若表达式的值为“真”(为非0)。则执行语句1,若表达式的值为 “假”(为0),则执行语句2。例如: if(x>y)printf(“%d”,x);else printf(“%d”,y);3.If语句的第三种形式 格式: if(表达式1)〈语句1〉 else if(表达式2) 〈语句2〉 else if(表达式3) 〈语句3〉 ┆ else if(表达式n) 〈语句n〉 else 〈语句n+1〉 功能:首先计算表达式的值,若第n个表达式的值为“真”(为非0),则执行语句n,若所有的表达式的值都为“假”(为0),则执行语句n+1。其流程图如下: 例如: if(score>89) grade=‘5’;else if(score>74)grade=‘4’;else if(score>59)grade=‘3’;else grade=‘2’;说明: (1)if语句中的表达式可以是C语言的合法表达式。 (2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。 (3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“{ }“将几个语句括起来,构成一个复合语句。 例4.1 将两个数中较大者赋给 s。main(){ int a,b,s;a=10;b=20;if(a>b)s=a;else s=b;printf(“s=%dn”,s);} 执行结果: s=20 例4.2 比较两个数,按由大到小输出。main(){ int a,b,x,y;a = 10;b = 20;if(a>b){x=a;y=b;} else {x=b;y=a;} printf(“x=%d,y=%dn”,x,y);} 执行结果: x=20,y=10 4.2.2 if语句的嵌套 在if 语句中又包含一个或多个if语句,称为if语句的嵌套。一般形式如下: if() if() 〈语句1〉 else 〈语句2〉 else if() 〈语句3〉 else 〈语句4〉 if() if() 〈语句1〉 else if()〈语句2〉 else 〈语句3〉 说明: (1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。 (2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。 (3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如: If() {if()〈语句1〉} else 〈语句2〉 这时{ }限定了内嵌if 语句的范围,因此else与第一个if配对。例4.3 有一函数 编一程序,输入一个x值,输出y 值。main(){ int x,y;scanf(“%d”,&x);if(x<0)y=-1;else if(x==0)y=0; else y=1;printf(“x=%d,y=%dn”,x,y);} 4.2.3 条件运算符 如果if语句的形式如下所示: if(表达式1) x=〈表达式2〉; else x=〈表达式2〉; 无论表达式1为“真”还是为“假”,都只执行一个赋值语句且给同一个变量赋值。 可以利用条件运算符,将这种语句简单地用如下语句来表示。 x=〈表达式1〉?〈表达式2〉:〈表达式3〉; 说明:即当表达式1的值为“真”时,将表达式2的值赋给变量x;当表达式1的值为“假”时,将表达式3的值赋给变量x。如: a=5,b=10,c=20;x=a>b? c*b:c/b;因为a>b为假,则x=c/b=2。 例4.4 输入两个数,并将其中较大者显示出来。#include “stdio.h” main(){ int a,b,max;scanf(“%d%d”,&a,&b);max=(a>b)? a:b;printf(“max=%d”,max);} 条件运算符也可以嵌套使用,如: Grade=(score>=90)?’A’:(score<=70)?’C’:’B’当score>=90时,将字符‘A’赋给变量grade;当score<=70时,将字符‘C’赋给变量grade;否则将字符‘B’赋给变量grade.4.3 switch语句 Switch语句是多分支选择语句,其一般形式如下:Switch(表达式) { case 〈常量表达式1〉:〈语句1〉 case 〈常量表达式2〉:〈语句2〉 ┆ case 〈常量表达式n〉:〈语句n〉 default:〈语句n+1〉 } ;可同时省略 switch语句的执行过程是:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。说明: (1)switch后面圆括号内的表达式的值和case后面的常量表达式的值,都必须是整型的或字符型的,不允许是浮点型的。 (2)同一个switch语句中 的所有case后面的常量表达式的值都必须互不相同。 (3)switch语句中的case和default的出现次序是任意的,也就是说default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。 (4)由于switch语句中的“case常量表达式”部分只起标号的作用,而不进行条件判断,所以,在执行完某个case后的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句的右花括号或“break”语句为此,而不再进行条件判断。 所以在执行完一个case分支后,一般应跳出switch语句,转到下一条语句执行,这样可在一个case的结束后,下一个case开始前,插入一个break语句,一但执行到braek语句,将立即跳出switch语句,如: 如: Switch(n){ case 1: x=1; case 2: x=2;} 当n=1时,将连续执行下面两个语句 : X=1;X=2;如: Switch(n){ case 1; x=1;Braek;Case 2;X=2 Braek }(5)每个case的后面即可以是一个句号,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。(6)多个case的后面可以共用一组执行语句,如: Switch(n);{ Case 1: Case 2: x=10; braet ┆ } 它表示当n=1或n=2时,都执行下列两个语句: X=10;Braek; 例4.5 从键盘输入一个月份(1~12),并显示该月份的英文名称 #include”stdio.h” Main(){ int month;scanf(“%d”,&month);switch(month){ case 1:printf(“January”); braek;case 2:printf(“February”); braek;case 3:printf(“March”); braek;case 4:printf(“April”); braek;case 5:printf(“May”); braek;case 6:printf(“June”); braek;case 7:printf(“July”); braek;case 8:printf(“August”); braek;case 9:printf(“September”); braek;case 10:printf(“October”); braek;case 11:printf(“November”); braek;case 12:printf(“Decmeber”); braek;Default:printf(“Data Error!”);Break;} } 4.4 应用举例 例4.6 输入一个数值,求出它的平方根,若为负数时,求出它的复数平方根。#include “stdio.h” #include “math.h” main(){ int n;float root;printf(“enter a number:t”);scanf(“%d”,&n);if(n>=0);{ root=sqrt(n);printf(“sqrt(%d)=%f”,n,root);} else { root=sqrt(abs(n)); printf(“sqrt(%d)=%fi”,n,root);} } 例4.7求两个数中最小值。#include “stdio.h” main(){int x,y,min;printf(“enter two integers:n”);acanf(“%d,%d,&x,&y);min=x 例4.8 从键盘输入一个操作符并进行相应和操作。#include “stdio.h” main(){ int x=10,y=5,z;char op;scanf(“%c”,&op);switch(op){ case ’+’:z=x+y;braek; case ’-’:z=x-y;braek; case ’*’:z=x*y;braek; case ’/’:z=x/y;braek; default :printf(“Operater Error!”);} printf(%d%c%d=%d”,x,op,y,z);} 例4.9 输入三个数,按由小到大的顺序输出。#include “stdio.h” main(){ int a,b,c,temp;printf(“enter three integers:t”);scanf(“%d,%d,%d”,&a,&b.&c);if(a>c){temp=a;a=b;b=temp;} If(a>c){temp=a;a=c;c=temp;} if(b>c){temp=b;b=c;c=temp;} printf(“%d<%d,%d”,a,b,c);} 第六讲 循环控制 5.1 goto语句 5.2 while循环语句 5.3 do-while循环语句 5.4 for循环语句 5.2 while循环语句 用while语句来实现“当型”循环结构。格式:while(表达式) 〈语句〉 /*循环体部分*/ 功能:当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。说明: (1)循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。(2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句。 (3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),退出循环,并转入下一语句去执行。 例5.2 求s=1+2+3+„100的值。结构流程图如右图。main(){ int i,s=0;i=1;While(i<=100);{s=s+1;i++;} printf(“s=%d”,s);} 运行结果 s=5050 5.3 do-while循环语句 do-while循环语句,用来实现“直到型”循环结构。格式:do <语句> while(表达式)功能:先执行〈语句〉,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。0(假)说明: (1)用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,其结果也一样。但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。 (2)如果do-while语句的循环体部分是多个语句组成的话,则必须用左右花括号括起来,使其形成复合语句。 main(){int i,s=0;scanf(“%d”,&i);do {s=s+i;i++;}while(i<=10);Printf(“s=%d”,s);} 运行情况如下: 1 S=55 Main(){int I,s=0;Scanf(“%d”,&i);While(i<=10);{s=s+I;i++;}