版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE课题项目一课程准备课型讲练授课班级授课时数2教学目标初步熟悉C语言程序开发过程和VisualC++开发程序的步骤理解语句的概念掌握C语言程序和C函数(包括主函数)的结构教学重点掌握C语言程序和C函数(包括主函数)的结构教学难点“程序”概念的理解;程序设计过程的掌握;学情分析高中毕业的大部分学生对程序设计比较生疏,没有形成概念,因而重点是语法知识的理解掌握,首次上课显得尤其重要,尽可能多地引起学生的学习兴趣,为日后的学习打下良基。教学效果教后记课程准备模块一:课程介绍中国慕课注册中国慕课比例(40%),平时分数(20%),期末(40%)学习方法,课前预习教学内容,课中学习,课后复习模块二:新课讲授[学习目标]知识目标:初步熟悉C语言程序开发过程和VisualC++开发程序的步骤理解语句的概念掌握C语言程序和C函数(包括主函数)的结构能力目标:能够初步对C语言程序进行调试任务1.1 计算机语言介绍1.1.1计算机语言发展人与人之间的交流需要通过语言。人和计算机交流信息也需要语言解决问题。计算机语言(ComputerLanguage)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。计算机系统最重要的特征之一是通过一种语言发出指令传达给机器。计算机语言经历了以下几个发展阶段。机器语言人们通过编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,每一操作码在计算机内部都有相应的电路来完成它。计算机只能识别和接受由0和1组成二进制代码,这类由计算机能直接识别和执行的一种机器指令的集合称为机器指令(machineinstruction)。机器指令的集合就是该计算机的机器语言。一般计算机的指令长度为16,即以16个0和1组成的各种排列组合,例如,1100110000000001。这种计算机能直接识别和接受的二进制代码称为机器指令。机器指令的集合,就是该计算机的机器语言。汇编语言一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。汇编语言编写程序的过程如图1-1所示。图1-1汇编语言编写程序的过程虽然汇编语言笔记气源简单,好记一些。但仍然难以普及,不同型号的计算机的机器语言和汇编源是互不通用的。高级语言是独立于机器,面向过程或对象的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性。20世纪50年代创造出了第一个计算机高级语言-FORTRAN语言,目前的高级语言有Java,C,C++,C#,Pascal,Python等。计算机是不能直接识别高级语言程序的,也要进行翻译用一种称为编译程序的软件把高级语言写的程序(也称为源程序)转换为机器指令的程序(称为目标程序),然后让计算机执行机器指令程序,最后得到结果。高级语言经历了非结构化的语言、结构化的语言、面向对象的语言三个阶段。非结构化语言编程比较随意,只要符合语法规则即可,程序中可以随意跳转,导致程序很难阅读及维护。比如BASIC,FORTRAN等结构化的语言程序必须由良好特性的基本结构构成,不允许随意跳转,程序从上到下顺序执行各个基本结构。比如QBASIC等。面向对象的语言是一类以对象作为基本程序结构单位的程序设计语言,语言中提供了类、继承等成分。1.1.2C语言介绍C语言是20世纪70年代初由美国贝尔实验室在B语言的基础上发展起来的,它保持了B语言精练、接近硬件的特点,又改进了B语言过于简单的缺点。在C语言的基础上,贝尔实验室在1983年推出了C++。C++进一步扩展和完善了C语言,成为一种面向对象的程序设计语言。C语言的主要特点如下:(1)C语言简洁、紧凑,使用方便灵活。标准C语言(ANSIC.只有32个关键字,9种控制语句。书写形式自由,一行可以书写多条语句,一个语句也可以写在不同行上。(2)运算符丰富共有34种运算符,可以实现其它高级语言中难以实现的运算(3)数据类型丰富C语言具有现代化语言的各种数据类型;用户能自己扩充数据类型,实现各种复杂的数据结构,完成用于具体问题的数据描述。(4)以函数作为模块单位C语言是一种结构化语言。C语言的主要成分是函数。函数是C语言程序的基本结构模块,程序可以由不同功能的函数有机组装而成,从而可以达到结构化程序设计中模块的要求。另外,C语言提供了3种基本结构(顺序、选择、循环),使程序流程具有良好的结构性。(5)C语言有丰富的数据类型C语言具有现代化语言的各种数据类型;用户能自己扩充数据类型,实现各种复杂的数据结构,完成用于具体问题的数据描述。(6)C语言具有较高的移植性,目标代码质量高、运行效率高用C语言编写的程序,其生成的目标代码质量高、运行效率高,一般只比汇编程序生成的目标代码效率低10%~20%。(7)允许直接访问物理地址C语言允许对硬件内存地址进行直接读写,以此可以实现汇编语言的主要功能,并可直接操作硬件。C语言不但具备高级语言所具有的良好特性,又包含了许多低级语言的优势,故在系统软件编程领域有着广泛的应用。C语言的以上特点,读者现在也许还不能深刻理解,待学完C语言以后再回顾一下,就会有比较深的体会。任务1.2C工具介绍在了解了基本的C语言知识后,我们需要上机实现一个C语言程序,以便更好的增加对程序的理解和认识。下面我们介绍三种可以运行C语言的环境。1.2.1VisualC++6.0环境介绍VisualC++6.0简称VC或者VC6.0,一个功能强大的可视化软件开发工具。VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。很多C语言的教材上采用的都是这一环境,目前计算机等级考试中采用的C语言环境平台就是它,另外一般C语言竞赛也将VisualC++作为平台之一,比如由工业和信息化部人才交流中心举办的蓝桥杯大赛。 VisualC++6.0运行C语言的启动步骤如下:双击,打开后集成环境如图1-2所示。图1-2VisualC++6.0集成开发环境的窗口新建文件步骤,首先单击“文件”→“新建”菜单命令,打开后效果如图1-2-2所示。图1-2-2VisualC++6.0“文件”选项卡3)单击“C++SourceFill”,在“文件名”输入框中输入程序名(如:hello),在VisualC++6.0环境下编辑的C语言源程序的扩展名默认是.cpp。单击“确定”按钮。图1-2-3新建hello文件4)进入源程序的编辑窗口,如图1-2-4所示。图1-2-4源程序编辑窗口5)编写源程序,如图1-2-5所示。图1-2-5编写源程序6)单击菜单栏组建中的编译,如图1-2-6所示,或者单击工具栏的图标都可以编译,最后单击确定即可完成编译。图1-2-6菜单栏编译7)单击菜单栏“组建”中“全部重建”的连接,如图1-2-7所示。或者单击工具栏中图标,都可以编译连接。图1-2-7连接8)单击“组建”中的“执行”,如图1-2-8所示。或者单击菜单栏中的图标,也可以执行。图1-2-8执行9)显示程序执行结果,如图1-2-9所示。图1-2-9执行结果1.2.2DEV-C++DEVC++是一个Windows环境下的一个适合于初学者使用的轻量级C/C++集成开发环境(IDE),它是一款自由软件,遵守GPL(GeneralPublicLicense)许可协议分发源代码。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,适合于在教学中供C/C++语言初学者使用。双击Windows桌面图标,进入DEV-C++编辑环境。如下图1-2-10所示。图1-2-10DEV-C++界面2)单击“文件”→“新建”→“源代码”菜单命令,将进入源代码编辑页面。如图1-2-11所示。图1-2-11DEV-C++新建源代码3)新建一个C语言程序,并写入第一个程序源代码。点击保存按钮如下图1-2-12所示。图1-2-12保存程序源代码4)单击调试源代码,显示源代码编辑对话框如下图1-2-13所示。图1-2-13源代码编辑对话框5)可以选择“运行”→“运行”菜单项,亦可单击运行控件,运行源代码,如图1-2-14所示。图1-2-14源代码运行6)源代码运行结果,如下图1-2-15所示。图1-2-15程序运行结果1.2.3C/C++程序实验与学习系统本教程中介绍的C/C++程序设计学习与实验系统是一位从事一线教学的大学教师根据C/C++初学者的特点,量身定制的一个简单易用的C/C++程序设计学习与实验软件。在学习资源树上可以很方便的打开学习资源,有集成的《C语言入门教程》,对应的每章都指出了初学者易错点和每章都配有习题和答案分析,有历年的计算机等级二级C语言的试卷和答案,有58个经典源程序等。程序出错时,除了有英文提示,还有中文提示,便于学生查找问题。C/C++启动步骤如下:1)双击,打开后C/C++集成环境如图1-2-16所示:图1-2-16C/C++集成环境2)填写程序,并单击作上角“保存”,出现保存路径如图1-2-17所示:图1-2-17保存界面3)选择保存路径,并输入文件名one,产生的界面如图1-2-18所示。图1-2-18保存为one的程序界面单击运行可以直接执行编辑、连接、运行,执行截图如1-2-19所示:图1-2-19运行截图任务1.3创建第一个C语言程序——欢迎来到车辆监控系统1.3.1任务目标创建一个C语言程序,显示“欢迎来到车辆监控系统”。运行截图如图1-3-1所示:图1-3-1欢迎来到车辆监控系统运行截图1.3.2知识储备要实现一个具体的C语言程序,就必须先从了解C语言最基本的结构,各种规则。1.C程序的主要结构#include<stdio.h>头文件,因为函数中使用printf函数,否则编译时不能执行voidmain()主函数{数据定义;数据赋值;数据计算;数据输出}2.C语言的程序注意点=1\*GB3①C语言由函数构成。函数是C程序的基本单位,C程序由一个或多个函数组成,必须有一个main()主函数;C程序从main()主函数开始执行,主函数的位置无关紧要;C程序中的函数可以由库函数和用户自定义的函数构成;函数可以不带参数,函数名后面必须有一对圆括号,是函数标志;函数体必须由一对大括号括起来;程序至少有一个输出函数,0个及以上的输出函数。=2\*GB3②一个函数由若干行组成。一行一个语句或几个语句,也可一个语句写在多行,用“\”作续行符;“;”是语句结束标志。=3\*GB3③C程序书写习惯是小写英文字母。=4\*GB3④头文件的作用--赋予了调用某些库函数的权限。当程序中有输入输出函数时必须要有头文件--#include"stdio.h"当程序中有数学函数时必须要有头文件--#include"math.h"当程序中有字符串函数时必须要有头文件--#include"string.h"3.printf函数printf函数的作用时向终端(输出设备)输出多个数据。其一般格式为:printf(格式控制,输出项表);格式控制:双引号括起来的字符串,一般由字符串和和格式说明(%和格式字符)组成。输出表项:需要输出数据,可以是表达式,变量,常量等。一些常用的printf输出格式如表1-3-1所示:表1-3-1printf输出格式输出类型举例运行截图输出普通字符printf("一串字符");输出字符带换行printf(“一串字符\n”);printf(“二串字符”);输出数值inta=10,b=15;printf(“%d+%d=%d”,a,b,a+b);输出字符charch='a';printf("字符为%c",ch);4.格式控制程序中的数据根据不同的类型需要不同的格式控制,比如十进制整数存放的是整数类型,一个字符只能存放一个字母或者特殊字符,其中一个汉字就要占用2个字符那么就要采用字符串格式控制。单精度和双精度主要存放带有小数的数据,对于初学者可以先学习一些基本的格式控制,最基础的格式类型如表1-3-2所示:表1-3-2格式类型数据类型格式控制十进制整数%d一个字符%c字符串%s单精度%f双精度%lf5.注释格式注释的作用是增强程序的可读性和用于对程序进行调试。注释格式如表1-3-3所示。表1-3-3注释格式注释类型格式举例单行注释////主函数多行注释以/*开始,以*/结束/*这个题目的主要目的为完成计算器功能*/1.3.3典型实例典型案例1.已知2015年江苏省的车辆上牌数量如图1-3-2所示,显示苏州的车辆上牌信息:图1-3-2江苏省车辆上牌数量程序代码:#include"stdio.h"//头文件voidmain()//主函数{printf("2015年江苏省的新车上牌量排名%d,城市%s,上牌量%f",1,"苏州",32.8);//显示数据}运行截图如图1-3-3所示:图1-3-3典型案例1运行截图典型案例2.显示一辆新能源车辆的基本数据。驾驶员的驾照类型为A,车牌号码为苏E88888,车辆速度为80公里/小时,累计里程15347.5公里,充放点次数100次,目前处在的档位为4档。程序代码:#include"stdio.h"//头文件voidmain()//主函数{printf("一辆新能源车辆的基本数据为\n");//车辆数据显示printf("教师员的驾照类型为%c\n",'A');printf("车牌号码为%s\n","苏E88888");printf("车辆速度为%d公里/小时\n",80);printf("累计里程%lf公里\n",15347.5);printf("充放点次数%d次\n",100);printf("目前处在的档位为%d档\n",4);}运行截图如图1-3-4所示:图1-3-4典型案例2运行截图1.3.4任务分析与实践程序代码:#include"stdio.h"voidmain(){printf("####################\n");printf("欢迎来到车辆监控系统\n");printf("####################\n");}1.3.5巩固练习1.编写程序,实现在屏幕上显示如下语句。安全情系生命,文明创造和谐,建设平安校园,你我共同责任。2.编写程序,显示一名驾驶人员的信息,其中驾驶员,18,1990,C用格式符表示。我是一名驾驶员;我的安全驾驶年限为18.5年;我从1990开始开车;我的驾照类型为C型号3.一个汽车4S店有一个150*100空地,有一间18*12*3.7的房间。用程序计算出空地的面积和房间的空间大小。==========Welcome==========Theareais22500Theroomspaceis799.200000==========Good-bye==========答案参考:main(){printf("==========Welcome==========\n");printf("Theareais%d\n",150*150);printf("Thethirdpowerof18is%f\n",pow(18,3));printf("==========Good-bye==========\n");}main(){printf("==========Welcome==========\n");printf("Theareais%d\n",150*150);printf("Thethirdpowerof18is%f\n",pow(18,3));printf("==========Good-bye==========\n");}4.编写程序,计算边长为150的正方形面积和18的3次方的值,并按如下形式显示。答案参考:#include<stdio.h>#include<math.h>main(){printf("125+65=%d\n",125+65);printf("%d+%d=%d\n",125,65,125+65);printf("squarerootof130:%lf\n",sqrt(130));printf("squarerootof%d:%lf\n",130,sqrt(130));}课题项目二任务1统计汽车的数量(printf函数)课型讲练授课班级授课时数2教学目标1、掌握c语言中提供的各种数据类型,理解常量的概念。2、掌握各种类型的变量的定义,初始化方式。教学重点1、C语言数据类型的分类。2、符号常量的定义。3、变量的定义初始化。教学难点数据类型的理解(引入数据类型的因素)学情分析学生经过第一次理论课的学习对C语言程序整体有了解,对于数据类型及常量变量的介绍属概念记忆类较多,因此学生在理解上没有很大困难,重点于在一些概念,格式的记忆。教学效果教后记项目二车辆行驶状态显示(输入、输出)知识目标熟悉输入、输出用法的格式。熟悉C语言几种常用的数据类型、运算符和表达式掌握标识符的命名规则。掌握常量和变量的定义和引用规则。掌握流程图的几种符号。能力目标能准确运用输入与输出用法。能熟练运用数据类型之间的自动转换和强制转换。掌握算术运算符的使用规则、优先级和结合性。能画出简单程序的流程图。掌握程序的最基本的算法过程。情景设置主要通过printf()等函数打印出整个案例的宏观流程,主要包括车辆采集端进行车辆数据的采集、存储和发送;服务器接收端完成数据接收、呈现(打印)。通过输入函数实现与用户的简单交互,输入车号显示运行状态。任务2.1统计汽车的数量(printf函数)2.1.1任务目标已知A汽车公司第一季度生产新能源客车5987辆,新能源物流车1245辆,公交客运2580辆,轻型客车7890辆,求该公司一季度共生产汽车多少。任务目标运行截图如图2-1-1所示:图2-1-1任务目标运行截图2.1.2知识储备一个基本的程序应该包含数据的描述和操作步骤两个方面的内容。著名计算机科学家沃思(NiklausWirth)提出了一个公式:数据结构+算法=程序在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。1.数据类型C语言提供的数据结构是以数据类型形式出现的。在对数据存放中,根据使用数据的类型,定义不同类型。C语言中包含的基本数据类型如图2-1-2所示。图2-1-2C语言基本数据类型在C程序中什么样的数据类型用什么样的符号输出,另外需要注意数据类型的范围,否则会出错。[示例2-1]通过printf语句显示3.0,3,’a’数据。#include"stdio.h"voidmain(){printf("%f,%d,%c",3.0,3,'a');}[示例2-2]运行如下程序,分析运行错误原因#include"stdio.h"voidmain(){printf("%f,%d,%c",5,7,b);}分析:第4行的5是整数,%f是浮点型,输出类型不匹配。b作为字符必须加单引号。2.常量常量:在程序运行过程中其值不能被改变的量。常用的常量有以下几种类型:(1)整型常量。比如10,-2,0等。(2)实型常量。主要包含两种形式,第一种十进制小数形式,有数字和小数点组成。如34.56,-90.8等。第二种指数形式,如45.78e5(代表45.78×105)等,由于计算机输入或者输出时无法表示上角或者下角,故规定以E或者e代表以10为底的指数。(3)字符常量。主要包含两种形式,第一种普通型字符,用单撇号括起来,如’b’,’d’等,注意只能是一个。第二种转义字符,以字符”\”字符开头的字符序列。比如’\n’等。(4)字符串常量。用双撇号括起来的字符。比如“234”,a“”等。(5)符号常量。用#define指令,指定用一个符号名称代表一个常量。如:#definePI3.1416示例2-3求半径为2.1的圆的面积#include"stdio.h"#definePI3.14voidmain(){ doubler,s; r=3; s=PI*r*r; printf("圆的面积为%.2lf",s);}3.变量变量:在程序执行过程中,其值可以改变的量。就如同一个杯子,开始可以装水,后面可以装咖啡,下来可以换成牛奶或者汽油,其变量图解如图2-1-3所示:图2-1-3变量图解在变量定义命名中是有一定规范的,在语言定义中,用来标识变量名,符号,数组,类型名,文件名等有效字符序列我们称之为标识符。上面的常量命名的PI也是一个标识符。其命名规则如下:标识符的命名规则如下:(1)标识名中只能出现数学、大写英文字母、小写英文字母和下划线。(2)标识名必须以字母或下划线开头。(3)标识符名与关键字不能相同。(4)标识符需要见名知义注意:变量是标识符的一种,必须先定义后使用。变量在使用过程中,有一定规则的,定义什么类型,一般使用什么类型,输出什么类型,当定义的类型和输出的类型不一致时,程序结果就会出错,这也是初学者会常犯的错误。定义变量的一般形式:类型名变量1,变量2,…,变量名n;变量的三个属性:变量名、变量值、变量类型4.常见的数据类型根据我们日常的使用习惯,列出了下面一些主要的数据类型的符合,格式符,取值范围等。具体如表2-1-1所示:表2-1-1常见的数据类型数据类型符号格式符字节位数取值范围无符号短整型unsignedshort%d2160~(216-1)短整型short%d216-215~(215-1)无符号整型unsignedint%d4320~(232-1)整型int%d432-231~(231-1)无符号长整型unsignedlong%ld4320~(232-1)长整型long%ld432-231~(231-1)单精度型float%f432-1038~1038双精度型double%lf864-10308~10308无符号字符unsigned%d180~(28-1)字符char%c18--27~(27-1)5.编程规范:在实际变量命名中,规范会根据各个公司内部规定而有区别,一般变量命名规则为类型和对应英文单词的组合,单词首字母大写或单词之间用下划线隔开,如fVeh_Speed(或fVehSpeeD.分别为类型float的缩写f、车辆vehicle和车速speed的组合而成。类型前缀表如表2-1-2所示:表2-1-2类型前缀表2.1.3典型案例典型案例1.已知B汽车运营公司共拥有48377辆汽车,目前正在运营的车辆47342辆,求维修的车辆数?算法分析:定义变量Veh_SumNum总车辆,Veh_Run运营车辆,Veh_Repair维修车辆给总车辆和运营车辆赋值计算维修车辆输出维修车辆程序代码:#include"stdio.h"voidmain(){intVeh_SumNum,Veh_Run,Veh_Repair;//定义变量Veh_SumNum=48377;//给数据赋值Veh_Run=47342;Veh_Repair=Veh_SumNum-Veh_Run;//计算printf("目前正在维修中的车辆的个数为%d",Veh_Repair);//输出}典型案例1运行截图如图2-1-4所示:图2-1-4典型案例1运行截图典型案例2.已知B汽车运营公司共有48377辆汽车,为了保证公司业务的正常运营,售后维修部门必须有车辆数量的1/80的轮胎数,求维修部门的轮胎数。算法分析:1) 定义变量Vehicle_SumNo总车辆,Vehicle_TyreNo轮胎数2) 给总车辆赋值3) 计算轮胎数4) 输出轮胎数程序代码:#include"stdio.h"voidmain(){intVehicle_SumNumber,Vehicle_TyreNum;//定义变量Vehicle_SumNumber=48377;//赋值Vehicle_TyreNum=Vehicle_SumNumber/80;//计算printf("目前车辆的备用轮胎数为%d",Vehicle_TyreNum);//输出}典型案例2运行截图如2-1-5所示:图2-1-5典型案例2运行截图典型案例3.编写程序,将数字字符‘2’,‘7’转换为响应的数字。算法分析:1) 定义数字字符2) 转换3) 输出程序代码:#include"stdio.h"voidmain(){charch_Num1,ch_Num2;//定义变量ch_Num1='2';//赋值ch_Num2='7';ch_Num1=ch_Num1-'0';//计算ch_Num2='7'-48;printf("第一个字符的整型数据%d\n",ch_Num1);//输出printf("第二个字符的整型数据%d\n",ch_Num2);} 典型案例3运行截图如图2-1-6所示:图2-1-6典型案例3运行截图 2.1.4任务分析与实践算法分析:变量命名:新能源汽车数目:uMotorVeh_No;物流车数目:uDeliveryVeh_No公交车数目:uBus_No轻型客车数目:uLightBus_No车辆总数:uVeh_Sum定义变量给大客车的数量和小客车的数量赋值求客车总的数量输出客车的数量程序代码:#include"stdio.h"voidmain(){intuMotorVeh_No,uDeliveryVeh_No,uBus_No,uLightBus_No,uVeh_Sum; uMotorVeh_No=5987; uDeliveryVeh_No=1234; uBus_No=2580; uLightBus_No=7890; uVeh_Sum=uMotorVeh_No+uDeliveryVeh_No+uBus_No+uLightBus_No; printf("该公司一季度共生产汽车%d辆车",uVeh_Sum);}2.1.5巩固练习1.已知4S店目前45位男性员工,宿舍是4人间,需要准备多少间宿舍。(参考变量英文男性员工Maleemployee,宿舍人数Numberofhostelresidents,宿舍间数Numberofdormitories)2.假设两个驾驶员的工资甲为5500一个月,乙为7800一个月,那么一年工资相差多少。(参考变量工资salary,差额difference)3.一辆新能源车2019年的车辆保险为3507.5元,2020年的车辆保险为3209.5元,求一共花费的保险费用。(参考变量保险insurance)课题任务2.2统计汽车的载客人数(scanf函数)课型讲练授课班级授课时数2教学目标掌握三种输入输出函数的使用方法;scanf()和printf()函数的调用方法和允许使用的格式转换控制符。熟悉scanf()函数对各种类型数据的键盘输入格式的要求。能灵活使用printf()函数控制屏幕格式输出。能用scanf()和printf()函数和赋值语句进行简单的顺序结构程序的设计编写。教学重点scanf()和printf()函数的调用方法和允许使用的格式转换控制符。能用scanf()和printf()函数和赋值语句进行简单的顺序结构程序的设计编写。教学难点格式控制符的灵活使用学情分析输出函数前面学生已经基本接触,但是只是原型输出,对于具体的格式输出,不太了解。输入函数只是从书上的部分例题看到,还没有具体的接触,此处应该具体讲解各种不同的用途。教学效果教后记任务2.2统计汽车的载客人数(scanf函数)2.2.1任务目标已知某公交车队某品牌某款纯电动城市客车的额定载客人数为56人,以键盘上输入该车队的客车数量,计算客车总的载客人数。程序运行结果如图2-7所示。图2-7程序运行结果2.2.2知识储备图2-7程序运行结果在程序中,需要一些从外面输入的数据。下面就来介绍输入数据的输入/输出函数。1.scanf()函数(格式输入函数)scanf()函数可以用于输入任何类型的多个数据,其语法格式为:scanf(格式说明符,变量地址列表);功能:按用户指定的格式从键盘上把数据输入指定的变量中。注意:“地址列表”里由若干个地址组成,是变量地址,而不是变量名;输入数据只能是常量,不能是表达式;输入多个整型或实型数据时,可用空格、回车、制表符为间隔;“格式说明”中的普通字符原样输入;“格式说明”中一般只写若干个格式符。举例:scanf("%d%d%d",&a,&b,&c);scanf("%d,%d,%d",&a,&b,&c);2.printf()函数(格式输出函数)一般都是按照默认类型数据输出的,在此情况下,我们有时需要根据实际情况输出数据,如实型数一般默认显示小数点后6位,但是有时只需要显示小数点后2位。整数原来有2位,但是需要最终显示占5个空格等,特殊格式显示如表2-2所示。表2-2特殊格式显示要求格式显示到小数点后2位的单精度类型%.2f显示到小数点后1位的双精度类型%.1lf双精度显示整数%.0f整型显示至少占5个位置左空格%-5d整型显示至少占4个位置右空格%4d小贴士:输出函数的格式种类较多,需要按要求灵活掌握。2.2.3典型案例典型案例1:从键盘上输入某客车的累计行驶里程和使用年限,计算该客车平均每年的行驶里程。算法分析如下。(1)变量名命名:累积行驶里程AccumulatedMileage、使用年限ServiceYears、平均每年的行驶里程AvgMileage。(2)定义变量。(3)输入累积行驶里程和使用年限。(4)计算平均每年的行驶里程。(5)输出平均每年的行驶里程。代码如下:#include"stdio.h"voidmain(){intServiceYear;doubleAccumulatedMileage,AvgdMileage;printf("请输入累积行驶里程");scanf("%lf",&AccumulatedMileage);printf("请输入使用年限");scanf("%d",&ServiceYear);AvgdMileage=AccumulatedMileage/ServiceYear;printf("平均每年的行驶里程为%lf",AvgdMileage);}典型案例1的运行结果如图2-8所示。典型案例2:已知某公交车队某品牌A款纯电动城市大型客车的载客人数为36人,B款纯电动城市小型客车的荷载人数为18人,输入两款客车的数量,计算总的载客人数。算法分析如下。(1)变量名命名:大型客车载客人数BVehicle_LoadNumber、小型客车载客人数SVehicle_Loadnumber、大型客车数量BVehicle_Number、小型客车数量SVehicle_Number、客车总的载客人数Vehicle_SumLoadnumber。(2)定义5个变量。(3)输入大型客车和小型客车的数量。(4)计算总的荷载人数。(5)计算总的输出荷载人数。代码如下:#include"stdio.h"voidmain(){intBVehicle_Loadnumber=36,SVehicle_Loadnumber=18;intBVehicle_Number,SVehicle_Number,Vehicle_SumLoadnumber;printf("请输入大型客车的车辆数");scanf("%d",&BVehicle_Number);printf("请输入小型客车的车辆数");scanf("%d",&SVehicle_Number);Vehicle_SumLoadnumber=BVehicle_Number*BVehicle_Loadnumber+SVehicle_Number*SVehicle_Loadnumber;printf("客车总的载客人数为%d",Vehicle_SumLoadnumber);}典型案例2的运行结果如图2-8所示。 图2-8典型案例1的运行结果 图2-9典型案例2的运行结果典型案例3:从键盘上输入某客车平均每年的行驶里程和使用年限,计算该客车的累计行驶里程。算法分析如下。(1)变量名命名:累积行驶里程AccumulatedMileage、使用年限ServiceYear、平均每年的行驶里程AvgdMileage。(2)定义变量。(3)输入平均每年的行驶里程和使用年限。(4)计算累积行驶里程。(5)输出累积行驶里程。代码如下:#include"stdio.h"voidmain(){intServiceYear;doubleAccumulatedMileage,AvgdMileage;printf("请输入平均每年的行驶里程");scanf("%lf",&AvgdMileage);printf("请输入使用年限");scanf("%d",&ServiceYear);AccumulatedMileage=AvgdMileage*ServiceYear;printf("%d年的累计行驶里程为%.2lf",ServiceYear,AccumulatedMileage);}典型案例3的运行结果如图2-10所示。图2-10典型案例3的运行结果2.2.4任务分析与实践图2-10典型案例3的运行结果算法分析如下。(1)变量名客车的载客人数Vehicle_Loadnumber、客车的数量Vehicle_Number、客车总的载客人数Vehicle_SumLoadnumber。(2)定义变量。(3)输入客车的数量。(4)计算。(5)输出总的载客量。#include"stdio.h"voidmain(){intVehicle_Loadnumber=56,Vehicle_Number,Vehicle_SumLoadnumber;printf("请输入客车的数量");scanf("%d",&Vehicle_Number);SumLoadnumber=Vehicle_Loadnumber*Vehicle_Number;printf("客车总的载客人数为%d",Vehicle_SumLoadnumber);}2.2.5巩固练习1.编写程序,有一辆汽车历经了两个车主的使用,从键盘上输入两个车主的使用年限,计算目前这辆汽车总的使用年限(变量参考:车主ownerofavehicle、使用年限servicelife)。2.编写程序,从键盘上输入车辆的单价和数量,计算所有车辆的总价格(变量参考:车辆的单价VehiclePrice、车辆的数量Numberofvehicles、总价格Vehiclecosts)。3.编写程序,从键盘上输入一个驾驶员的驾驶证类型,输出该驾驶证类型对应的小写字母(变量参考:大小写字母的ACSII码值相差32Typeofdriver'slicense)。课题任务2.3统计需要的车辆(算术运算符、强制转换)课型讲练授课班级授课时数2教学目标1.了解算术运算符,关系运算符并且会合理的使用它们。2.会判断逻辑值的真和假3.会编写程序计算教学重点算术运算符,关系运算符的使用教学难点合理使用运算符学情分析+、-、*、/这些运算符基本上学生平时都有接触,只需讲解日常不太使用的运算符即可,但由于没有接触使用到判断语句,对于运算符的使用面还是比较狭窄,需要利用以后的课时将这个知识点逐渐的渗入。教学效果教后记任务2.3统计需要的车辆(算术运算符、强制转换)2.3.1任务目标某公司承办某班级春游包车服务,要求通过键盘输入参加活动的学生人数以及一辆客车的载客人数,计算该公司承接该项服务所需要的车辆数?任务目标运行截图如图2-3-1所示:
图2-3-1任务目标2.3.2知识储备C语言的运算符范围很宽,把除了控制语句和输入输出以外所有的基本操作都作为运算符处理。一些基本的运算符与数学运算一样比如+,-,*等,但是有一些运算符不太一样,比如‘=’与“==”的区别,‘/’在数据为浮点型和整数类型时是不同的,‘%’是求余的含义等,在具体使用时需要注意。1.算术运算符算数运算符包含以下几种基本运算符+(加法运算符):双目运算符-(减法运算符):双目运算符*(乘法运算符):双目运算符/(除法运算符):双目运算符,/(整除)对于int,float,double均适用,例如:8.0/3.0%(求余运算符):双目运算符,%(求余)只对整数类型起作用。++(自增运算符):单目运算符--(自减运算符):单目运算符2.赋值运算符=(单等号)就是赋值运算符,作用就是将一个常量或者变量等赋值给一个变量。[示例2-3]观察下面的程序,说出程序结果#include"stdio.h"voidmain(){intdataA=2,dataB;dataB=20;//将20赋值给dataBdataA*=dataB+1;//等价于dataA=dataA*(dataB+1); printf("dataA=%d,dataB=%d",dataA,dataB);}运算符的优先级在数据运行时,不同类型的数据要先转换成同一类型,然后进行运算,转换的规则如图2-3-1所示:图2-3-1转换的规则4.数学头文件#include“math.h”2.3.3典型案例典型案例1.从键盘输入货物的吨数和货车的载重量,求共需要拉几次和最后一次拉的吨数。(吨数不能整除载重量)算法分析:定义变量Cargo_Quantity货物量,Truck_load货车载重量,Pull_Number拉货次数,Final_load最后一次的载重量。输入货物的吨数和货车的载重量。计算拉货次数,求最后一次的拉货量。输出拉货次数和最后一次的拉货量。程序代码:#include"stdio.h"#include"stdio.h"voidmain(){intCargo_Quantity,Truck_load,Pull_Number,Final_load;printf("请输入货物的重量(单位:吨)");scanf("%d",&Cargo_Quantity);printf("请输入货车的载重量");scanf("%d",&Truck_load);Pull_Number=Cargo_Quantity/Truck_load+1;Final_load=Cargo_Quantity%Truck_load;printf("货车需要拉%d趟\n",Pull_Number); printf("最后一次需要拉%d吨\n",Final_load);}典型案例1运行截图如图2-3-2所示:图2-3-2典型案例1运行截图典型案例2.从键盘输入一个浮点数,求它的整数部分和小数部分。算法分析:定义变量Float_Number浮点数,Int_Part整数部分,Decimal_Part小数部分
从键盘输入一个浮点数。求整数部分。求小数部分。输出整数和小数部分。程序代码:#include"stdio.h"voidmain(){doubleFloat_Number,Decimal_Part;intInt_Part;printf("请输入一个浮点数");scanf("%lf",&Float_Number);Int_Part=(int)Float_Number;Decimal_Part=Float_Number-Int_Part;printf("浮点数的整数部分为%d,小数部分为%lf",Int_Part,Decimal_Part);}典型案例2运行截图如图2-3-3所示:小贴士:请大家将本题目中浮点数的类型换成float试一试,对比一下结果。图2-3-3小贴士:请大家将本题目中浮点数的类型换成float试一试,对比一下结果。典型案例3.编写程序,计算函数y=的值,其中自变量的值从键盘输入。算法分析:1) 定义变量x,y;2) 从键盘输入x的值。3) 求y的值。4) 输出y的值。程序代码:#include"stdio.h"#include"math.h"voidmain(){doublex,y;printf("请输入x的值");scanf("%lf",&x);y=sqrt(x)+5*x+3/(x*x+2);printf("y的值为%lf",y);}典型案例3运行截图如图2-3-4所示:图2-3-4典型案例3截图2.3.4任务分析与实践算法分析:定义变量Vehicle_Passenger车载人数,Vehicle_Number车辆数,Student_NumBer学生人数。从键盘输入车载人数,学生数求车辆数程序代码#include"stdio.h"voidmain(){intVehicle_Passenger,Vehicle_Number,Student_NumBer;printf("请输入每量车的载客人数");scanf("%d",&Vehicle_Passenger);printf("请输入学生人数");scanf("%d",&Student_NumBer);Vehicle_Number=Student_NumBer/Vehicle_Passenger+1;printf("共需要车辆%d辆",Vehicle_Number);}2.3.5巩固练习1.一名驾驶员的工号为4位的整数,从键盘输入一名驾驶员的工号,输出工号各位数字之和。(变量参考工号jobnumber,个位units,十位tens,百位hundreds,千位thousands)2.从键盘输入一名驾驶员的身高(米)和体重(公斤),求这名驾驶员的体指数。(体脂数公式为BIM=体重/(身高*身高);变量参考体重weight,身高heigh)3.从键盘输入一辆箱式货车箱长的长、宽、高,求它的容积。(变量长length,宽width,高high)4.一名驾驶员想看一下天气温度,结果给出的时华氏温度,他希望知道摄氏温度。从键盘输入华氏温度,求出摄氏温度。(华氏转化为摄氏的公式:C=5/9*(F-32))课题任务2.4显示驾照的类型(字符输入与输出)课型讲练授课班级授课时数2教学目标1.利用getchar(),putchar()函数单个字符的输入输出2.利用scanf(),printf()函数单个字符的输入输出3.当输入多个字符时输入函数的注意点教学重点多个字符函数的输入与输出教学难点多个字符函数的输入与输出学情分析scanf与printf也可以对于字符和字符串进行输入与输出,本节课主要是字符的输入与输出,但是有时判断不出字符的输入与输出应该采用哪个函数更好一些。教学效果教后记任务2.4显示驾照的类型(字符输入与输出)2.4.1任务目标从键盘输入驾驶员的驾照类型(高于C级),因为1个实习年度扣分超过12分被降1级,输出新的驾照类型。2.4.2知识储备由于字符是按照整数形式存放的,因此字符型数据也作为整数类型的一种,在使用过程中有其独特的特点。1.字符常量C语言的字符常量一般用单引号括起来,个数只能有一个,比如’A’(A字符),’b’等。除了这种情况外,C语言还允许另一种特殊格式的字符常量,以‘\’开头,比如’\n‘代表换行等,常用的以‘\’开头的特殊字符如表2-4-1所示:表2-4-1常用特殊字符字符格式功能\n换行\t横向跳格\\反斜杠字符“\”\ddd1到3位8进制所代表的字符\xhh1到2位16进制所代表的字符2.字符变量用来存放字符类型,并且只能放一个字符的变量,称为字符变量。将一个字符常量放到字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符对应的ASCII代码放到存储单元中。例如’A’字符的ASCII代码为65,在内存中存放的就是65,所以一个字符数据既可以以字符形式输出,也可以以整数形式输出。那么字符数据参与算术运算时,就相当于对于他们的ASCII值进行算数运算。[示例2-4]观察下面的程序,说出程序结果#include"stdio.h"voidmain(){charchA=65,chB='A',chC;chC=chB+32; printf("chA=%d,chB=%d,ASCIIchC=%d,字符chC=%c",chA,chB,chC,chC);}3.字符数据输出函数putchar()在项目一中我们接触到了printf函数,它也可以输出字符类型,putchar函数是专门输出字符的函数,只能输出一个字符。格式:putchar(c);功能:在终端上输出一个字符,不换行如:chara=‘A’;intk=65;putchar(a);putchar(k);putchar(‘A’+32);putchar(65);putchar(‘\101’);4.字符输入函数getchar()在项目一中我们接触到了scanf函数,它也可以输入字符类型,getchar函数是专门输入字符的函数,只能输入一个字符。格式:getchar();功能:返回从键盘输入一个字符,不带任何参数。[示例2-4]观察下面的程序,猜测结果,并运行程序看结果和猜测是否一致#include"stdio.h"voidmain(){charchA,chB;chA=getchar();chB=chA+32; printf("chA=%d,chB=%c\n",chA,chB);}2.4.3典型案例典型案例1.一个驾驶员原来是小轿车类型C型驾照,驾驶员通过大客车的学习升了二级级,显示驾驶员最新的驾照类型。典型案例1运行截图如2-4-1所示图2-4-1典型案例1截图算法分析:定义变量Driver_LicenseType驾照类型输入驾照类型Driver_LicenseType减2输出驾照类型程序代码:#include"stdio.h"voidmain(){charDriver_LicenseType;printf("请输入原有的驾照类型");Driver_LicenseType=getchar();Driver_LicenseType=Driver_LicenseType-2;printf("升二级后的驾照类型为");putchar(Driver_LicenseType);}典型案例2.从键盘输入一个大写字母,转换成小写字母并输出。典型案例2程序运行截图如图2-4-2所示:图2-4-2典型案例2运行截图算法分析:定义变量输入大写字母转换成小写字母输出转换后的字母程序代码:#include"stdio.h"voidmain(){intch;printf("请输入一个大写字母");scanf("%c",&ch);ch=ch+32;printf("转换后的小写字母为%c",ch);}典型案例3.从键盘输入3个字母,输出这些字母后面的字母。典型案例3运行截图如图2-4-3所示:图2-4-3典型案例3截图方法一:算法分析:定义变量输入3个字母转换成后面的字母输出转换后的3个字母程序代码:#include"stdio.h"main(){ charch1,ch2,ch3; scanf("%c%c%c",&ch1,&ch2,&ch3); ch1=ch1+5; ch2=ch2+5; ch3=ch3+5; printf("ch1=%c,ch2=%c,ch3=%c",ch1,ch2,ch3);}注意使用1个scanf函数输入多个字符时,在各字符之间不能用任何分隔符,因为系统将空格,TAB键,回车符等均作为合法字符。方法二:算法分析:定义变量输入第1个字母转换成后面的字母输入第2个字母转换成后面的字母输入第3个字母转换成后面的字母输出转换后的3个字母程序代码程序1:#include"stdio.h"main(){ charch1,ch2,ch3; printf("请输入第一个字母"); ch1=getchar(); getchar(); printf("请输入第二个字母"); ch2=getchar(); getchar(); printf("请输入第三个字母"); ch3=getchar(); getchar(); printf("转换后的三个字母为"); ch1=ch1+1; ch2=ch2+1; ch3=ch3+1; putchar(ch1); putchar(ch2); putchar(ch3);}注意:getchar();是接收输入字符后的回车符。程序2:#include"stdio.h"main(){ charch1,ch2,ch3; printf("请输入第一个字母"); scanf("%c",&ch1); printf("请输入第二个字母"); scanf("%c",&ch2); printf("请输入第三个字母"); scanf("%c",&ch3); ch1=ch1+5; ch2=ch2+5; ch3=ch3+5; printf("ch1=%c,ch2=%c,ch3=%c",ch1,ch2,ch3);}注意:%c前有一个空格主要是接收前一个字符后面的回车符。2.4.4任务分析与实践算法分析:定义变量Driver_LicenseType驾照类型输入驾照类型降级驾照输出驾照类型程序代码:#include"stdio.h"voidmain(){charDriver_LicenseType;printf("请输入原有的驾照类型");Driver_LicenseType=getchar();Driver_LicenseType=Driver_LicenseType++;printf("降级后的驾照类型为");putchar(Driver_LicenseType);}2.4.5巩固练习1.一名驾驶员在输入年龄时方法错误,输入成了二个数字字符,请将它变为实际年龄值。(变量参考年龄age)2.从键盘输入一名驾驶员的驾照等级,输出等级对应的小写字母。(变量参考年龄Classofdriver'slicense)3.从键盘输入一个车辆三角形警示牌的三边(单位cm),求警示牌的面积。(变量参考长length,面积area)课题任务2.5求能拿到驾照的过程(流程图)课型讲练授课班级授课时数2教学目标掌握流程图的各种符号,能辨别基本的符号教学重点能根据题意画出顺序,选择,循环的流程图教学难点循环流程图的画法学情分析高中数学知识已经讲解了基本的流程图格式。教学效果教后记任务2.5求能拿到驾照的过程(流程图)2.5.1任务目标通过流程图,显示获得驾照的过程。如果要按期拿到驾照需要通过科目一、科目二、科目三、科目四每次最多5次机会。2.5.2知识储备1.算法的概念为解决一个问题而采取的方法和步骤称为算法。2.算法的特征(1)有穷性:算法的步骤是有限的。(2)确定性:算法中的每一个步骤都应当是确定的,不能产生歧义。(3)可行性:算法的每一步必须是切实可行的。(4)有输入:有0个或者多个输入。(5)有输出:有1个或者多个输出。3.算法的表示1.用自然语言表示算法(标号有没有问题?)算法可以用自然语言来描述,自然语言就是人们日常使用的语言,可以是汉语、英语或者其他各种语言,其优点在用表示的算法通俗易懂,便于理解,但是缺点在于文字冗长,容易产生歧义,特别是在表达条件判断和循环算法时,很难表述清楚。2.用流程图表示算法流程图是流经一个系统的信息流、观点流或部件流的图形代表。程序流程图表示程序中的操作顺序。程序流程图包括:指明实际处理操作的处理符号,它包括根据逻辑条件确定要执行的路径的符号;指明控制流的流线符号;便于读写程序流程图的特殊符号3.用N-S图表示算法4.用伪代码表示算法伪代码是自然语言和类编程语言组成的混合结构。5.三种基本结构在C语言中有三种基本结构,分别为顺序结构,如图2-5-2所示。选择结构如图2-5-3所示。循环结构体如图2-5-4所示。图2-20顺序结构图2-21选择结构图2-22循环结构2.5.3典型案例典型案例1:大客车驾驶员的工资等级分为四级,连续10年无事故为一级,满8年无事故为二级,满5五年无事故为三级,其余为四级。输入驾驶员的无事故年限,输出等级,请画出流程图算法分析:1.确定判断条件2.根据题目内容画出流程图流程图:图2-23典型案例1的流程图典型案例2:B企业有120人,目前需要所有人从B企业到A场去参观,只有一辆大客车可容纳的人数为32人,运用流程图画出一辆大客车运送人员的过程,画出流程图算法分析:1.确定循环条件:把所有人的送完为止2.根据题目要求画出流程图2.5.4任务分析与实践算法分析1.将任务进行拆分2.该任务要求每次任务可以进行5次考试,即用到循环语句3.通过前一个科目才能进行下一个,用到判断语句流程图:2.5.5巩固练习一、选择题1.执行如图2-5-8所示的程序框图,则输出s的值为()A.3/4B.5/6C.11/12D.25/24图2-5-8选择题1流程图2.根据如图2-5-9流程图,当输入x为6时,输出的y=()图2-5-9选题题2流程图A.1B.2C.5D.103.阅读如图2-5-10所示的程序图,运行相应的程序,则输出i的值为()图2-5-10选择题3流程图A.2B.3C.4D.54.执行如图2-5-10所示的程序图,若输出k的值为8,则判断框图可填入的条件是()图2-5-10选择题4流程图A. S<=3/4B.S<=5/6C.S<=11/12D.S<=25/245.执行如图2-5-11所示的程序框图,若输入的x,y∈R,那么输出的S的最大值为()图2-5-11选择题5流程图A.0B.1C.2D.36.执行如图2-5-12所示的程序框图,如果输入的t∈[﹣2,2],则输出的s属于()图2-5-12选择题6流程图A. [-6,-2]B.[-5,-1]C.[-4,5]D.[-3,6]二.画流程图1.有一位学生目前需要从学校到苏州火车站,过程为宿舍、四号支线地铁站、苏州火车站。请用流程图画出来。2.有一位同学目前需要从学校到苏州火车站,当他从宿舍开始时,可以选择打车,也可以四号支线地铁站、苏州火车站。请用流程图画出它可能的过程。3.从键盘输入两个数据A,B,交换后输出。(程序)当A>B的时候不交换,否则交换(流程图)课题项目三任务1新能源汽车电池组的选择(单分支)课型讲练授课班级授课时数1教学目标灵活运用关系及逻辑运算符;if语句的单分支语法结构教学重点if语句的具体应用。教学难点关系运算符和逻辑运算符具体运用。学情分析对于C语言语法知识的讲解,容易理解,重点在于培养学生良好的编程习惯及编程规范,其二是培养学生的探究式自学能力,调试程序的能力。因而重点是语法知识的掌握,逐步过渡到培养学生良好的编程习惯及编程规范。教学效果教后记项目三任务1新能源汽车电池组的选择(单分支)3.1.1任务目标通过键盘输入新能源汽车的电池型号,如果输入1则输出使用铅酸电池。(变量:电池型号batterytype)任务目标运行截图如图3-1-1所示:图3-1-1任务目标截图3.1.2知识储备在日常生活中,总会出现根据条件来判定结果的情况。在程序中,我们将这种情况采用选择结构。if语句的格式格式:if(条件)语句组1;[else语句组2;]说明:[]格式代表可有可无,在实际使用[]中的内容也可以不写。C语言的选择结构是通过条件判断语句来实现的,模块化的结构便于阅读、调试和修改。选择结构有两种方式来实现:由if语句来实现的两分支语句;由switch语句来实现的多分支语句。在选择结构中要对条件判断表达式进行判断,根据判断的结果决定选择哪一个分支路径,条件判断表达式大多情况下是由关系表达式或者逻辑表达式构成。选择结构的三种流程图如图3-1-2所示,其中(1)为单分支结构,(2)为双分支结构,(3)为多分支结构。图3-1-2选择结构的三种流程图1.关系运算符及优先顺序关系运算符:<、<=、>、>=、==、!=,分别称之为:小于、小于等于、大于、大于等于、等于、不等于。关系运算符,关系表达式等的说明如表3-1-1所示:表3-1-1关系运算符等的说明名称说明关系运算符系统提供了六种关系运算符<:小于双目运算符优先级第6级<=:小于等于双目运算符同上>:大于双目运算符同上>=:大于等于双目运算符同上==:等于双目运算符优先级第7级!=:不等于双目运算符同上关系表达式用关系运算符将两个表达式连接起来的式子,称关系表达式。例如:3>2、x+y>x+z、x>y==z、z=x>y、'c'<'d'等都是关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。若关系成立,为“真”,值为“1”;若关系不成立,为“假”,值为“0”。逻辑运算符及优先级C语言主要提供逻辑与、逻辑或、逻辑非三种逻辑运算符,具体的使用和说明如表3-1-2所示:表3-1-2逻辑运算符说明名称说明逻辑运算符C语言提供3种逻辑运算符:“!”:逻辑非,是单目运算符,优先级是2。例如:!3“&&”:逻辑与,是双目运算符,优先级是11。例如:0&&1“||”:逻辑或,是双目运算符,优先级是12。例如:'a'||'b'逻辑表达式用逻辑运算符将关系表达式或逻辑量(0、1)连接起来的式子就是逻辑表达式。例如:a>b&&x>y、0&&1、2||9&&0、4-!3&&'c'、'a'||'b'、3.5&&4.8等都是逻辑表达式。逻辑表达式的值逻辑表达式的值也是一个逻辑值,即“真”或“假”。为“真”,值为“1”;为“假”,值为“0”。当运算对象取不同的逻辑值时,逻辑运算真值表如表3-2所示。ab!a!ba&&ba||b110011100101011001001100运算符的优先级C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。在一个表达式中可能包含多种不同数据类型的数据及运算符,不同的运算顺序可能得出不同结果甚至出现错误运算错误,必须按一定顺序进行结合,才能保证运算的合理性以及结果的正确性、唯一性。当一个运算量两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理,C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。在程序中,运算符的优先级如图3-1-3所示:图3-1-3运算符的优先级if单分支语句格式在选择结构中,一般我们把满足条件后执行一种结果,没有else的选择结构叫做单分支语句。单分支语句格式:if(表达式){语句1;语句2;…}单分支语句流程图:根据单分支的程序,流程图如图3-1-4所示,其中if单分支流程图(1)与N-S流程图(2)图3-1-4单分支流程图小贴士:这种自左至右的结合方向就称为小贴士:这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。示例1:求关系表达式的值。1#include<stdio.h>2voidmain()3{4intx=1,y=2,z=3;5printf("%d\n",3>2);6printf("%d\n",2>3);7printf("%d\n",x+y>x+z);8printf("%d\n",x>y==z);9printf("%d\n",z=x>y);10printf("%d\n",'c'<'d');11}运行截图:图3-1-5示例1运行截图解析:本例题为关系表达式的应用,第一个输出语句为求3>2的值,关系表达式运算结果为真或假,真为1,假为0,3>2成立结果为真,即为1;第二个输出语句求2>3的值,2>3不成立,结果为假,即为0;第三个输出语句中算术运算符+的优先级高于关系运算符>,先算加法,再比较大小,先求得x+y=1+2=3,x+z=1+3=4,再得到3>4的运算结果为假,即为0;第四个输出语句中关系运算符>优先级高于关系运算符==的优先级,先计算x>y也就是1>2,结果为假,即为0,再比较0==3,结果为假,即为0;第五个输出语句中关系运算符优先级高于赋值运算符,先比较x>y,也就是1>2,结果为假,即为0,再将0赋值给z,输出z的值为0;第六个输出语句为比较两个字符’c’和’d’,c的ASCⅡ码值小于d的ASCⅡ码值,结果为真,即为1。示例2:求逻辑表达式的值。程序代码:1#include<stdio.h>2voidmain()3{4intx=1,y=2,a=1,b=2,c=3,d=4,m=1,n=1;//定义整型变量5printf("%d\n",0&&x||y);//输出逻辑表达式的值6printf("%d\n",2||9&&0);7printf("%d\n",4-!3&&'c');8printf("%d,%d,%d\n",(m=a>b)&&(n=c>d),m,n);9printf("%d,%d,%d\n",(m=d>c)||(n=c>d),m,n);10}运行结果:
图3-1-6示例2运行截图解析:本例题为逻辑表达式的应用,第一个输出语句根据逻辑运算符&&优先级高于||,先进行0&&x(x值为1),结果为0,再进行0||y(y值为2,非零值),结果为1;第二个输出语句的求解过程同上;第三个输出语句中逻辑非!的优先级最高,先进行求解!3,结果为0,再进行算术运算符的求解4-0,结果为4,最后4&&‘c’,两个非零值进行逻辑与,结果为1;第四个输出语句中按照从左到右的次序输出,先进行关系运算a>b,将结果0赋值给m,但是由于0&&任意值均为0,所以后面部分不用再进行计算,直接输出表达式的值,所以表达式为0,m的值为0,n的值没有计算保持原始数据1,因此输出结果为0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简要酒店装修合同范例
- 2024年度服装设计及授权合同
- 维修施工安全合同模板
- 禽类养殖基地合同模板
- 白象员工合同范例
- 2024年安全月活动上的领导讲话稿(2篇)
- 二零二四年度医疗设备采购与维护合同:医院与设备供应商之间的合作协议3篇
- 灯具提供合同范例
- 二零二四年度文化艺术活动策划与执行服务协议2篇
- 2024财产赠与的合同范本
- GB/T 42398-2023细胞培养洁净室设计技术规范
- 高考口语考试试题答案
- 中国佛教文化课件
- 小容量注射剂(聚丙烯安瓿)产品无菌保证措施描述
- 七年级英语介词专项练习含答案
- 旅行社计调实务4课件
- 教学单位教学进度跟踪调查表
- 2023年中小学英语学习成绩测试NEAT三级试题
- YY/T 1164-2021人绒毛膜促性腺激素(HCG)检测试剂盒(胶体金免疫层析法)
- Python深度学习实战-基于Pytorch全书电子讲义完整版ppt整套教学课件最全教学教程
- GB/T 818-2000十字槽盘头螺钉
评论
0/150
提交评论