




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计单元一初识C语言C语言起源C语言起源C语言特性0102CONTENTC语言应用范围031.C语言起源贝尔实验室1969年至1973年间,为了移植与开发UNIX操作系统,丹尼斯●里奇和肯●汤普逊设计了C语言。设计基础C语言以B语言为基础。2.C语言特性设计特性控制特性
融合计算机科学理论和实践设计理念
自顶向下规划
结构化编程
模块化设计2.C语言特性高效性运行速度高效有效地利用内存 C语言具有汇编语言的微调控制能力使其获得最大运行速度和最有效的使用内存。2.C语言特性可移植性强大而灵活面向程序员C程序既可以解决物理学和工程学问题,又可以制作电影动画特效。
程序员既可以利用C访问硬件、操控内存中的位,又可以利用其丰富的运算符表达自己的意图。3.C语言应用范围谢谢THANKYOU主讲人:谢崇波C程序设计精品在线开放课程单元一初识C语言C语言标准C语言标准起源C语言标准0102CONTENT1.C语言标准起源经典C1987年,布莱恩·柯林汉和丹尼斯·里奇合著的TheCProgrammingLanguage(《C语言程序设计》)第1版是公认的C标准,通常称之为K&RC或经典C。2.C语言标准第1个ANSI/ISOC标准 1983年,美国国家标准协会(ANSI)组建了一个委员会(X3J1),开发了一套C语言新标准,并于1989年正式公布。该标准(ANSIC)定义了C语言和C标准库。该标准通常叫作C89(因为ANSI于1989年批准该标准)或C90(因为ISO于1990年批准该标准)。2.C语言标准C99标准 1994年,美国国家标准协会ANSI和ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。该次修订目标有三个:支持国际化编程解决明显的缺陷提高C的适应性2.C语言标准C11标准
美国标准委员会于2011年发布了C11标准,该标准提出的新指导原则,并未很好的支持和接受C99标准。谢谢THANKYOU主讲人:谢崇波C程序设计精品在线开放课程单元一初识C语言C语言编程步骤C语言编程机制C语言编程七步骤0102CONTENT1.C语言编程机制源代码文件(sourcecodefile) C语言中,要求文件名以.c结尾(如,wordcount.c和budget.c)。在文件名中,点号(.)前面的部分称为基本名(basename),点号后面的部分称为扩展名(extension)。因此,如budget.c源代码中budget是基本名,c是扩展名。1.C语言编程机制目标代码文件、可执行文件和库 C编程的基本策略:C程序源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码),该过程通过编译和链接两个步骤来完成。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。1.C语言编程机制C语言编译和链接过程2.C语言编程七步骤明确用C程序去实现什么功能或者解决什么问题思考程序需要哪些信息进行哪些计算和控制程序应该要报告什么信息第1步:定义程序的目标2.C语言编程七步骤明确程序中数据的存储类型(整型、浮点型以及数据等等)思考处理数据的方法(选择结构、循环结构等)第2步:设计程序2.C语言编程七步骤用C编写你设计好的程序。第3步:编写代码第4步:编译
编译就是编译器把源代码转换成机器可执行代码的程序,编译器取决于编程的环境。2.C语言编程七步骤第5步:运行程序第6步:测试和调试程序
第7步:维护和修改代码2.C语言编程七步骤
谢谢THANKYOUC程序设计单元二C语言概述编译环境相关工具介绍Dev-C++环境安装0102CONTENT工欲善其事必先利其器,C语言的调试工具非常多,包括WIN-TC、MicrosoftVisualstdudio、Dev-C++等集成实验与学习环境。相关工具介绍:该软件使用TC2为内核,支持WINDOWS平台下的功能,例如剪切、复制、粘贴、查找和替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。
初学C的一款比较好的软件。
WIN-TC:VisualStudio(VS)是一套非常完备的工具和服务,可帮助开发人员为windows平台和其他平台创建各种各样的应用程序,因此比较重量级,初学者不建议使用。MicrosoftVisualstudio:Dev-C++是一个Windows下的C/C++程序的集成开发环境。它使用GCC编译器,遵循C/C++标准。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能够适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!Dev-C++:本教程采用Dev-C++继承实验与学习环境。软件获取:
/projects/orwelldevcpp/
软件大小:50Mb左右Dev-C++的获取:Dev-C++安装:第一步:右键下载的软件以管理员身份运行Dev-C++安装:第二步:选择简体中文Dev-C++安装:第三步:勾选同意协议Dev-C++安装:第四步:点击下一步Dev-C++安装:第五步:确定自己安装的位置注意:路径不要有中文字符我的安装路径:E:\install\Dev-Cpp点击下一步、安装Dev-C++运行:第六步:运行桌面的Dev-C++图标出现主界面如右图所示到此,我们的开发环境就准备好了,开启我们的c语言学习之旅吧!谢谢THANKYOU主讲人:谢崇波C程序设计精品在线开放课程单元二C语言概述C语言程序结构C语言程序结构01CONTENT1.C语言程序结构C语言程序示例#include
<stdio.h>intmain()
/*一个简单的C程序*/{ intq;
/*定义一个名为q的变量*/ q=1;
/*为q赋一个值*/ printf("%dis
neat.\n",q); /*使用printf()函数*/ return
0;}1.C语言程序结构示例解析1.C语言程序结构#include指令和头文件 #include这行代码是一条C预处理器指令(preprocessordirective)。通常,C编译器在编译前会对源代码做一些准备工作,即预处理(preprocessing)。 ANSI/ISOC规定了C编译器必须提供哪些头文件。1.C语言程序结构main()函数C程序一定从main()函数开始执行,而且main()函数有且只有一个。圆括号功能:用于识别main()是一个函数。int是main()函数的返回类型。1.C语言程序结构分号(;) C程序采用分号隔开C语句。如示例花括号中的代码:intq; q=1;
1.C语言程序结构注释 C程序中,被/**/两个符号括起来的部分是程序的注释。写注释能让他人(包括自己)更容易明白你所写的程序。1.C语言程序结构花括号、函数体和块 C语言函数中都使用花括号({})标记函数体的开始和结束。这是规定,不能省略。只有花括号能起这种作用,圆括号(())和方括号([])都不行。1.C语言程序结构声明
声明是C语言最重要的特性之一。例如intq;。该句语句表明:
其一,在函数中有一个名为q的变量(variable);
其二,int表明q是一个整数(即,没有小数点或小数部分的数)。1.C语言程序结构return语句
有返回值的C函数要有return语句,没有返回值的函数可省略return。但建议初学者保留return语句。谢谢THANKYOU主讲人:何雪锋C程序设计精品在线开放课程单元二C语言概述调试程序C语言的开发过程调试程序0102CONTENTC语言的开发过程是什么?C语言的开发,需要经过编辑、编译、连接、和运行四个过程。C语言的开发过程:C语言的开发过程:对代码的调试主要目的在于,通过让程序单步执行,使读者详细的看见每一步的代码执行过程和结果,方便找到错误信息的所在!调试程序:编写第一个求和程序:#include<stdio.h>intmain(){ inta,b,sum=0; scanf("%d,%d",&a,&b); sum=a+b; printf("sum=%d",sum);}调试程序:第一步:添加断点点击第六行位置,出现红钩调试程序:第二步:点击调试【F5】并点击添加查看按钮,输入要查看的变量名调试程序:第三步:在弹出的命令行窗口中输入1,2出现如图效果调试程序:第四步:点击下一行【F7】发现如右图结果通过调试,我们可以观察每一个变量值的变化。调试程序:谢谢THANKYOUC程序设计单元三语法基础数据类型浮点型类型02CONTENT整型类型01字符型类型031.整型类型C语言的int类型
int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。其取值范围依计算机系统而异,但C规定int的取值范围最小为-32768~32767。1.整型类型声明int类型
声明格式:数据类型变量名赋值运算符数值 intdogs,cows,goats; intdogs=12; intcows=15,goats=14;
intdogs,cats=34; /*有效,但是这种格式很糟糕,不宜采用*/1.整型类型其他int类型C语言提供3个附属关键字修饰基本整型类型:short、long和unsigned。shortint类型
编写时简写为short,占用的存储空间比int类型少,常用于较小数值的场合以节省空间。
如下所示定义一个short类型: shortq;1.整型类型其他int类型longint类型
编写时可简写为long,占用的存储空间比int多,适用于较大数值的场合。与int类似,long是有符号类型。longlongint类型可简写为longlong(C99标准加入)占用的储存空间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,longlong是有符号类型。1.整型类型其他int类型unsignedint类型 unsigned关键字表示无符号类型整型数据。编写时可简写为unsigned,该类型只用于非负值的场合。2.浮点类型浮点类型
浮点类型能表示包括小数在内更大范围的数。浮点数的表示类似于科学记数法(即用小数乘以10的幂来表示数字)。下表列出浮点数的表示方法。2.浮点类型浮点类型
2.浮点类型声明浮点类型
3.字符类型char类型char类型用于储存字符(如,字母或标点符号)。C语言中把1字节定义为char类型占用的位(bit)数,因此,无论是16位、32位还是64位系统,都可以使用char类型。3.字符类型声明char类型声明格式:数据类型变量名赋值运算符‘字符或字母’charbroiled;
/*声明一个char类型的变量*/ broiled=‘T‘;
/*为其赋值,正确*/
broiled=T;
/*错误!此时T是一个变量*/
broiled="T";
/*错误!此时"T"是一个字符串*/课堂练习试着在编译器上声明int、float、double、char类型数据谢谢THANKYOU主讲人:李焕玲C程序设计精品在线开放课程单元三语法基础:标识符和命名规则C语言标识符标识符命名规则0102CONTENTC语言关键字03标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。如变量名,函数名,项目名等,均是标识符。1.C语言标识符一个标识符由大小写字母、下划线及数字组成;只能以字母或下划线开头,不能以数字开头;严格区分大小写;不能使用C语言关键字或保留字。2.标识符命名规则3.C语言关键字1.For2.zara3._2abc4.6m*ve5._name6.a_1237.Myname508.switch9.a23b910.while11.goto课堂练习:判断下列哪些是
合法的标识符谢谢THANKYOU主讲人:李焕玲C程序设计精品在线开放课程单元三语法基础:标识符和命名规则C语言标识符标识符命名规则0102CONTENTC语言关键字03标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。如变量名,函数名,项目名等,均是标识符。1.C语言标识符一个标识符由大小写字母、下划线及数字组成;只能以字母或下划线开头,不能以数字开头;严格区分大小写;不能使用C语言关键字或保留字。2.标识符命名规则3.C语言关键字1.For2.zara3._2abc4.6m*ve5._name6.a_1237.Myname508.switch9.a23b910.while11.goto课堂练习:判断下列哪些是
合法的标识符谢谢THANKYOU计算机应用能力提高第3章
操作系统的基本知识及使用3.2系统的启动和退出3.1操作系统的功能、分类及用户界面3.4窗口、对话框和菜单是操作3.3开始菜单3.6资源查找;设置文件及文件夹属性3.5资源浏览3.8控制面板的使用3.7资源的管理3.3开始菜单开始菜单历史一、
开始菜单开始菜单是视窗操作系统(Windows)中图形用户界面(GUI)的基本部分,可以称为是操作系统的中央控制区域。在默认状态下,开始按钮位于屏幕的左下方,当前版本的开始按钮是一个Windows标志。Windows95中开始菜单的设计博得了增强了界面友好程度的好评。后来,开始按钮和菜单标志,成为了微软产品的广告,而“单击这里开始”也成了微软的一句广告语。一、
历史1.Windows
Chicago在早期版本的Windows中,有一个叫做MS-DOSExecutive的程序提供了文件管理和“菜单”的功能,这个程序最终Windows3.0中的文件管理器(FileManager)和程序管理器(ProgramManager)取代,而程序管理器可以说就是开始菜单的雏形。当时的程序管理器是一个简单的MDI界面对话框,其中有“程序组”(programgroups)等快捷方式图标,可供用户执行2.Windows95Windows95是开始菜单正式出现的版本,它把程序管理器浓缩成为一个可随时使用的弹出菜单,它保留了程序管理器的一些特性,比如可以一个组嵌套另一个组。
InternetExplorer4.0和Windows98允许用户在开始菜单中拖拽,这令定制开始菜单更加简单Windows95与Windows98的开始菜单一般都有关闭计算机、运行、帮助、搜索、设置、文件、程序。可以通过开始菜单打开相应程序。WindowsXP(前身WindowsWhistler)WindowsWhistler选择了双行菜单使得用户自定义区域扩大。用户可以轻松的打开程序。在WindowsXP中,如本文上面所说,开始菜单加入了使用的程序快捷方式列表,“我的文档”菜单等等,可制定的空间更大了。WindowsVista和Windows7在WindowsVista及Windows7中,开始菜单更加入了搜索功能,用户在输入文字之后可以列出匹配的开始菜单项。并且为了适应Aero界面,开始菜单加入了Aero效果。右边的菜单不再像Xp那样有图标,而是直接使用文本。Windows8在Windows8中,开始菜单不复存在。转而替代的是“开始屏幕”。开始屏幕和开始菜单一样包含所有程序的图标,但是不显示控制选项和最近的文档等,仅仅作为打开程序、网页的接口。而原有的其他功能需要在控制面板和其他位置寻找,对此,部分非触摸屏笔记本电脑及台式电脑用户对微软表示出极大的不满,并称其习惯突然遭到大幅且强制的改变,要求微软重新加入开始菜单,但微软却置之不理,对此,一些软件开发商却喜闻乐见,而它们为用户提供了重新找回开始菜单的解决方案,其中,Start8和Startisback是较著名的两套产品。开始屏幕可以在设置中自定义外观。在Windows8中,鼠标移动到鼠标移动到屏幕最左下角直至看不到指针为止,当出现开始屏幕的缩略图时,点击就可以到达开始屏幕。Windows10在Windows10
技术预览版中“开始”菜单以全新的面貌重新出现。而用户可以通过自己的使用习惯选择使用“开始”菜单还是“开始”屏幕。小结开始菜单历史主讲人:李焕玲C程序设计精品在线开放课程单元三语法基础:数字常量常量分类整数常量0102CONTENT浮点数常量03c语言中的常量是指,在程序的执行过程中,这个量不会发生变化,是一个固定的数据。这些固定的值,又叫做字面量,可以分为整数常量,浮点数常量,字符常量,字符串常量及符号常量。1.常量整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x或0X表示十六进制,0表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数(unsigned),L表示长整数(long)。后缀可以是大写,也可以是小写,U和L的顺序任意。2.整数常量整数常量举例:212/*合法的*/
215u/*合法的*/
0xFeeL/*合法的*/
078
/*非法的:8不是八进制的数字*/
032UU/*非法的:不能重复后缀*//*十进制*/
/*八进制*/0x4b
/*十六进制*/
/*整数*/
30u
/*无符号整数*/
30l
/*长整数*/
30ul
/*无符号长整数*/浮点数常量由整数部分、小数点、小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量。当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时,必须包含小数点、指数,或同时包含两者。带符号的指数是用e或E引入的。3.浮点数常量浮点常量举例:3.14159
/*合法的*/
314159E-5L/*合法的*/
510E/*非法的:不完整的指数*/210f/*非法的:没有小数或指数*/.e55/*非法的:缺少整数或分数*/课堂练习:下列数字常量哪些是合法的3.14
/*合法的*/
0678/*非法的:8不是八进制的数字*/
5E/*非法的:不完整的指数*/210UL/*合法的*/.e21/*非法的:缺少整数或分数*/谢谢THANKYOU主讲人:李焕玲C程序设计精品在线开放课程单元三语法基础:字符常量字符常量转义字符0102CONTENT字符串常量03字符常量是用一对单引号括起来的单个字符,如’a’。字符常量可以是一个普通的字符(例如‘x’)、一个转义序列(例如‘\t’),或一个通用的字符(例如'\u02C0')。1.字符常量字符常量中有一类以右斜线开始的特殊常量称转义字符,这些转义字符有固定的含义,被用来表示如换行符(\n)或制表符(\t)等。2.转义字符常用转义字符表转义序列含义\\\字符\''字符\""字符\??字符\a警报铃声\b退格键\f换页符\n换行符\r回车\t水平制表符\v垂直制表符转义字符举例:运行结果HelloWorldWelcome'c'intmain(){
printf("Hello\tWorld\nWelcomeb\b\t\'c\'\n");}字符串字面值或常量是括在双引号""中的。3.字符串常量"hello,dear"
"hello,\dear"
"hello,"
"d"
"ear"
"hello"“a“
"hello,"课堂练习:下列哪些是合法的字符(串)常量"hello,dear"
"hello,\dear"
"hello,"
"d"
"ear"
‘a’//字符常量,合法“dear”//字符串常量,合法
‘\t’//转义字符,合法‘\824’
//非法,\表示8进制,8超出范围‘0’
//字符常量,合法“\0”
//字符串常量,合法
谢谢THANKYOU主讲人:李焕玲C程序设计精品在线开放课程单元三语法基础:符号常量符号常量#define定义常量0102CONTENTconst定义常量03在C语言中,可以用一个标识符来表示一个常量,这个标识符称之为符号常量。1.符号常量#define
标识符
常量其中#define是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。2.#define定义符号常量#include<stdio.h>#definePRICE30intmain()
{ intnum,total; num=10; total=num*PRICE; printf("total=%d",total);}符号常量举例:运行结果total=300使用符号常量的好处是:含义清楚;能做到“一改全改”。
用const
前缀声明指定类型的常量,如下所示:consttypevariable=value;例如:constintMONTHS=12;这样就可以在程序中使用MONTHS而不是12了。常量(如MONTHS)被初始化后,其值就被固定了,编译器将不允许再修改该常量的值。3.const定义符号常量#include<stdio.h>intmain(){ constintLENGTH=10; constintWIDTH=5; constcharNEWLINE='\n'; intarea; area=LENGTH*WIDTH; printf("valueofarea:%d",area); printf("%c",NEWLINE);}符号常量举例:运行结果valueofarea:50谢谢THANKYOU主讲人:谢崇波C程序设计精品在线开放课程单元三语法基础变量定义常量02CONTENT常量0104定义变量03变量1.常量C语言的常量 C程序执行期间不会改变的数值的量,称为常量,又叫做字面量。常量可以是任何的基本数据类型。比如:整数常量,浮点常量,字符常量,或字符串常量等。1.常量整数常量212/*合法的*/215u/*合法的*/0xFeeL/*合法的*/078 /*非法的:8不是八进制的数字*/032UU/*非法的:不能重复后缀*/85/*十进制*/0213/*八进制*/0x4b/*十六进制*/30/*整数*/30u/*无符号整数*/30l/*长整数*/30ul/*无符号长整数*/1.常量浮点常量浮点常量由整数部分、小数点、小数部分和指数部分组成。3.14159/*合法的*/314159E-5L/*合法的*/510E/*非法的:不完整的指数*/210f/*非法的:没有小数或指数*/.e55/*非法的:缺少整数或分数*/1.常量字符常量字符常量是括在单引号中的。字符常量可以是一个普通的字符(例如‘x’)、一个转义序列(例如‘\t’),或一个通用的字符(例如‘\u02C0’)。
C语言中,字符前面有反斜杠时,它们就具有特殊的含义,像这种叫做转义序列。1.常量转义序列转义序列含义\\\字符\''字符\""字符\??字符\a警报铃声\b退格键\f换页符\n换行符\r回车\t水平制表符\v垂直制表符\ooo一到三位的八进制数\xhh...一个或多个数字的十六进制数1.常量字符串常量字符串字面值或常量是括在双引号“”中的。下面是一些字符串常量的定义。"hello,dear“"hello,\dear""hello,""d""ear"2.定义常量常量定义在C语言中,有两种简单的定义常量的方式:使用#define预处理器使用const关键字2.定义常量常量定义——#define预处理器#include<stdio.h>#definePI3.1415926#defineNEWLINE'\n'intmain(){ return0;}2.定义常量常量定义——const关键字#include<stdio.h>intmain(){ constfloatPI=3.1415926; constcharNEWLINE='\n’; return0;}3.变量变量变量是C程序可操作的存储区的名称,用来存储数据。变量的名称可以由字母、数字或下划线组成。但它必须以字母或下划线开头。变量类型整型变量,浮点型变量,字符型变量等。3.变量定义定义变量#include<stdio.h>intmain(){ inti,j,count_one; charc,ch1; floatf_one,salary; return0;}课堂练习试着在编译器上定义不同类型的常量和变量。谢谢THANKYOUC程序设计单元四格式化输入输出格式化输入scanf()函数介绍scanf()格式控制符0102CONTENT格式化输入案例03格式化输入是什么?scanf()函数是通用终端格式化输入函数,按指定格式依次读取用户从键盘上输入的一系列数据,并按对应的格式赋值给一系列内存变量。scanf()函数介绍:
scanf("<格式化字符串>",<地址表>);scanf()语法格式:案例1:输入abc三个值1:#include<stdio.h>或#include“stdio.h”
在使用C语言库函数时,要用预编译命令#include将有关“头文件”引入源文件中,使用标准输入输出时要用到“stdio.h”文件,因此如需引入如上预编译指令。
两种写法的区别:
前者:系统将直接在系统的库文件目录下去找stdio.h文件;后者:先在用户当前目录下找,没有再去系统库文件目录下找。
案例1解析:2:scanf("%d%d%d",&a,&b,&c);
格式化字符串没有非格式化字符作为输入数据的间隔,则可以使用空格、TAB、回车作为输入数据的间隔。格式化字符串“%d%d%d”没有指定数据间隔,因此输入数据时,我们用空格分隔。如果使用“
,
”来分隔格式串,“%d,%d,%d”
相应的输入时也要添加“
,”。案例1解析:3:scanf("%d%d%d",&a,&b,&c);&a,&b,&c,其中&表示地址运算符,&a表示变量a的地址,例如x=666;x是变量名,666是变量值,&x表示存值的。为什么scanf的输入变量需要加&?因为scanf需要的是指针变量(因此指针变量不需要地址符),而普通变量需要通过地址符转译为指针使用。案例1解析:格式控制符的一般形式:%【*】【输入数据宽度】【长度】【类型】格式控制符:“*”:用来表示跳过相应宽度的数据。格式控制符:将“12”赋给a,“67”赋给b。第二个数据“345”被跳过不赋给任何变量。“m”:表示输入的宽度,系统自动按它截取所需数据。格式控制符:系统自动将123赋给a,456赋给b。“长度”:格式符为l和h,l表示长整性数据(如%ld)和双精度浮点数(如%lf),h表示短整型数据。格式控制符:数据类型:部分常用字符格式如下:%d:读入十进制整数%f:读入一个浮点数%s:读入一个字符串%c:读入一个字符
%x,%X
读入十六进制整数%o:
读入八进制整数%p:读入一个指针
练习题:1.根据格式字符的含义从输入流中获取数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。
练习题:2.根据格式项中指定的域宽分隔出数据项。
则scanf函数在接收数据时根据域宽把12赋值给a,345赋值给b,6789赋值给c。练习题:3.隐示分隔符的使用空格、制表符('\t')、换行符('\n')都是C语言认定的数据分隔符。
输入整数12和34之间,我们用空格分隔开。练习题:4.显示分隔符。在scanf函数的两个格式说明项间有一个或多个普通字符,那么在输入数据时,在两个数据之间也必须以这一个或多个字符分隔。
输入数据的时候,用“|”分隔数据。练习题:5.在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。
输入:abc。字符‘a’赋给c1,字符‘
’赋给c2,字符'b'
赋给c3。。注意事项:scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。例如,如果a、b为整型变量,则
scanf("%d,%d",a,b);
是不对的,应将“a,b”改为“&a,&b”。
谢谢THANKYOU主讲人:何雪锋C程序设计精品在线开放课程单元四格式化输入输出格式化输出printf()函数介绍printf()函数的字符格式0102CONTENT格式化输出是什么?在程序的使用中,我们经常可以看的这么一个场景:用户需要输入数据,经过程序运算,得到结果后输出。在C语言中,输入数据和输出数据都是由库函数完成的。比如printf()、scanf()。输出输入:C语言程序运算的结果在内存中,我们需要将其输出到指定设备中,我们才可以看到数据。printf是printformat的缩写,意思是“格式化打印”。“打印”的意思就是在屏幕上显示内容,所以我们称printf是格式化输出。printf()函数介绍:printf("<格式化字符串>",<输出列表>);格式化字符串:用双引号括起来普通字符,将其原样输出到屏幕上;以"%"开头的格式字符,将数据转换为指定的格式输出到屏幕上。输出列表:需要输出到屏幕的数据,数据可以是常量、变量或者表达式。printf()语法格式:输出变量a的值#include<stdio.h>intmain(){ inta=2; printf("a的值是%d",a); return0;}printf()案例:执行以上程序,输出结果为:
a的值是2printf()函数的字符格式:格式化字符串中如果包含以“%”开头的格式字符,printf()函数将数据转换为指定的格式输出到屏幕上。格式化字符串中包含三部分:原样输出内容、控制字符、转义字符。printf()函数的字符格式:常见的转义字符:\n:换行,将当前位置移到下一行开头\t:水平制表,跳到下一个Tab位置\\:代表一个反斜线字符'\'转义字符常见的字符格式:%d:输出十进制整数%ld:输出十进制长整数%f:输出浮点数%c:输出单个字符%s:输出字符串%p:输出指针值等%x,%X
以十六进制无符号表示的整数
%0
以八进制无符号表示的整数printf()函数的字符格式:控制字符:类型符printf()函数的字符格式:printf()中的格式控制符可以控制输出数据在屏幕上对齐方式和输出宽度。例如:%md:表示输出整数占m位,右对齐;%-md:表示输出整数占m位,左对齐;%m.nf:表示输出共占m位,其中n位小数,右对齐;%-m.nf:表示输出共占m位,其中n位小数,左对齐;-表示左对齐,+或没有表示右对齐控制字符:宽度和对齐printf()函数的案例:案例:输出下面由数字组成的图形。6 6666666.666.6printf()函数的案例:#include<stdio.h>intmain(){ printf("%10d\t%-10d\n",6,6); printf("%10d\t%-10d\n",66,66); printf("%10.1f\t%-10.1f\n",66.6,66.6); return0;}%10d:输出整数,占10位,右对齐\t:制表符%-10d:输出整数,占10位,左对齐\n:换行%10.1f:输出浮点数,共10位,其中1位小数点,右对齐%-10.1f:输出浮点数,共10位,其中1位小数点,左对齐谢谢THANKYOU主讲人:张玮C程序设计精品在线开放课程单元四格式化输入/输出非格式化I/O非格式化输入函数非格式化输出函数0102CONTENT1.非格式化输入函数函数功能:函数格式:getch();getche();getchar();从标准输入设备输入一个字符。格式功能回显功能结束输入方式头文件getch()从标准输入设备输入一个字符。无无需回车conio.hgetche()从标准输入设备输入一个字符。有无需回车conio.hgetchar()从标准输入设备输入一个字符。有需回车stdio.h非格式化输入函数对比注意说明:(1)该类函数没有参数,函数的返回值是从输入设备得到的字符。(2)getch()函数的另一功能是还可用于程序暂停。(3)getchar()函数也可以接收回车符。运行结果getchar()函数举例intmain(){}
ch=YY↙ch=getchar();charch;
printf("ch=%c\n",ch);ch1=getchar();charch1,ch2;
printf("ch1=%c,ch2=%c\n",ch1,ch2);ch2=getchar();ch1=X,ch2=↙X↙getchar();ch1=X,ch2=YX↙Y↙运行结果getch()和getche()函数举例intmain(){}
ch=YYch=getche();charch;printf("ch=%c\n",ch);charch;printf(“\nPressanykeytocontinue…");Pressanykeytocontinue…getch();2.非格式化输出函数函数功能:函数格式:putchar(ch);其中:ch可以是一个字符型常量、变量或者是一个不大于127的整型常量或者变量,也可以是一个转义字符。向标准输出设备输出一个字符。注意说明:(1)输出字符型变量。运行结果语句编写intmain(){}(2)输出字符型或者整型常量。Y(3)输出转义字符。putchar(ch);
charch='Y';
putchar(‘I');
putchar(70);IF
putchar('\n');putchar('\007');换行响铃
谢谢THANKYOUC程序设计单元五运算符与表达式5.1运算符的分类运算符的定义运算符的分类运算符优先级运算符结合性01020304CONTENT什么是运算符?运算符是一种特殊的符号或函数,它们具有一个或多个操作数并返回相应的值。操作数是被运算符用作输入的值,通常是字面值、变量或表达式。什么是运算符?运算符的例子:2+3,其操作数是2和3,而运算符则是“+”。4-5,其操作数是4和5,而运算符则是“-”。6*7,其操作数是6和7,而运算符则是“*”。8/9,其操作数是8和9,而运算符则是“/”。10%7,其操作数是10和7,而运算符则是“%”。运算符有哪些+-*/%==!=><>=<=&&||!=+=-=*=/=%=<<=>>=&=^=|=?:sizeof() &*++--运算符的分类+-*/%==!=><>=<=&&||!算术运算符关系运算符逻辑运算符=、+=、-=、*=、/=、%=
赋值运算符?:条件运算符sizeof() &++--其他运算符运算符通过功能特性的不同,我们可以将运算符分为6大类,分别是条件运算符,算术运算符,赋值运算符,逻辑运算符,关系运算符,其他运算符运算符的分类运算符优先级
在一个表达式中可能包含多个由不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算结果,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。运算符优先级的定义!>算术运算符>关系运算符>逻辑运算符>赋值运算符。(逻辑运算符中“逻辑非!”除外。)运算符优先级顺序类似于数学公式中的先乘除,后加减,有括号先算括号里面的。优先级方便理解C语言优先级详细图优先级运算符1后缀运算符[]()·->++--(类型名称){列表}2一元运算符++--!~+-*&
sizeof_Alignof3类型转换运算符(类型名称)4乘除法运算符*/%5加减法运算符+-6移位运算符<<>>7关系运算符<<=>>=8相等运算符==!=优先级运算符9位运算符AND
&10位运算符XOR^11位运算符OR|12逻辑运算符AND&&13逻辑运算符OR||14条件运算符
?:15赋值运算符=+=-=*=/=%=&=^=|=<<=>>=16逗号运算符,运算符结合性当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。什么是结合性运算符的结合性结合性的分类自左至右自右至左运算符的结合性运算符结合方向说明[]左到右
()
.
->
-右到左单目运算符(类型)
++单目运算符--单目运算符*单目运算符&单目运算符!单目运算符~单目运算符sizeof
运算符结合方向说明/左到右双目运算符*双目运算符%双目运算符+左到右双目运算符-双目运算符<<左到右双目运算符>>双目运算符>左到右双目运算符>=双目运算符<双目运算符<=双目运算符==左到右双目运算符!=双目运算符&左到右双目运算符运算符结合方向说明^左到右双目运算符|左到右双目运算符&&左到右双目运算符||左到右双目运算符?:右到左三目运算符/=右到左
*=
%=
+=
-=
<<=
>>=
&=
^=
,左到右
+结合方向只有三个是从右往左,其余都是从左往右+另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符-所有双目运算符中只有赋值运算符的结合方向是从右往左总结-C语言中有且只有一个三目运算符+逗号运算符的优先级最低,要记住-优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符。逻辑运算符中“逻辑非!”除外谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五运算符与表达式5.2算术运算符+加-减*乘/除01020304CONTENT05%余02030401算术运算符按操作数个数可分为一元运算符和二元运算符。一元运算符的优先级一般高于二元运算符。一元运算符:+(正号)、-(负号)、++(增1)、--(减1)。二元运算符:+(求和)、-(求差)、*(求积)、/(求商)、%(求余)。
符号运算符:+(正号)、-(负号)
'+'(正号)表示不改变操作数的值及符号,如23也可表示为+23,编译器不报错。
'-'(负号)可用于得到一个数的相反数。例如:
inta=-5;
intb=-a;下面我们一起来看一道例题:在ASCLL中已知C1为65时,求C2为多少?本题计算结果为Ab*(乘)两数相乘,交换位置其结果不变,即a×b=b×a。三个数相乘,前两个数先乘与后两个数先乘,其结果相等,即:(ab)c=a(bc)。当乘数分别分配给两个加数,其结果相同,即:(ac)+(bc)=(a+b)c。例2:当半径为6时,圆的周长和面积?02030401/(除)当运算符/的操作数中有一个或两个浮点数时,结果与数学中除法运算相同,包含整数部分和小数部分。例如:8/2.5结果为3.2。
当运算符/的操作数(被除数和除数)均为整数时,结果为取商(取整)。例如:16/5结果为两数相除的商3。运算符%两操作数都必须为整数,否则语法错误。当运算符%的操作数中有一个或两个浮点数时,语法错误当运算符%的操作数均为整数时,结果取余。余数的符号取决于被除数%(余)例如:16%5结果为两数相除的余数1。当运算符%的操作数中有一个或两个浮点数时,语法错误。例如:8%2.5语法错误。即运算符%两操作数都必须为整数,否则语法错误。在程序设计中,经常使用求商和求余运算符分解整数的各位数字。例如,分解十进制整数123的个位、十位和百位数字。可以有多种不同的分解方案,下面是其中一种方案。
inta=123,g,s,b;
//g:个位s:十位b:百位
g=a%10;
//g=3
s=a/10%10;
//s=2
b=a/100;
//b=l谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五运算符与表达式5.3关系运算符>大于01020304CONTENT<小于>=大于或等于<=小于或等于05==等于06!=不等于在C语言中,同逻辑表达式一样,关系表达式的值也为逻辑值,即布尔型(bool),取值为真或假。由关系运算符组成的式子为关系表达式,如a>b即为关系表达式,算术、逻辑、关系、赋值运算符的优先级顺序为:逻辑非!>算术>关系>逻辑与&&、逻辑或||>赋值=例如:inta=3,b=5;则有:a>b:逻辑假,其值为0;a>=b:逻辑假,其值为0;a<b:逻辑真,其值为1;a<=b:逻辑真,其值为1;a==b:逻辑假,其值为0;a!=b:逻辑真,其值为1;分析以下程序,输出其运行结果。#include<stdio.h>intmain(void){inta=0,b=1,c;c=a>=b||b++>1;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}代码分析:
根据运算符的优先级,表达式a>=b||b++>1等价于(a>=b)||(b++>1)。a>=b为假,其值为0,逻辑或||不会发生“短路”。
接着计算逻辑或||的右操作数b++>1,由于是后缀加1,故先取b的原值1与1比较大小,由于1>1为假,故逻辑或||的右操作数也为假,假||假=假,故c的值为0。执行了一次b++运算,故b的自身值增了1,变为2。
运行结果为: a=0,b=2,c=0
关系运算符主要用于测试操作数之间的各种关系。
关系操作符的结果是整型的,所以它可以赋值给整型变量,但通常它们用于if或while语句中,作为测试表达式。谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五运算符与表达式5.4逻辑运算符!逻辑非||逻辑或010203CONTENT&&逻辑与
以上三种逻辑运算符中,逻辑非“!”的优先级最高,逻辑与“&&”次之,逻辑或“||”最低。即算术、逻辑、赋值运算符的优先级顺序为:
逻辑非!>算术>逻辑与&&、逻辑或||>赋值=逻辑运算符的优先级:
逻辑表达式的值为逻辑值,即布尔型(bool),该类型为C99新增的,一些编译器可能还不支持该类型。
逻辑值分为逻辑真值和逻辑假值。一般情况下,在判断时,仅有零值被判断为逻辑假值(false),一切非零值均可被判断为逻辑真值(true);在存储和表示时,通常,使用1表示逻辑真值,0表示逻辑假值。逻辑表达式的类型与值:
逻辑与&&运算符的运算规则:只有两个操作数均为逻辑真时,结果才为真。其余情况,结果均为假。
逻辑或||运算符的运算规则:只有两个操作数均为逻辑假时,结果才为假。其余情况,结果均为真。逻辑运算符的运算规则:例如,设有定义语句: inta=3,b=5;
则有: !a:由于a非零,为真,!a为假,其值为0。 a||b:由于a和b均非零,均为真,故逻辑或的结果为真,其值为1。 a&&b:由于a和b均非零,均为真,故逻辑与的结果为真,其值为1。 !a||b&&2:由于逻辑非!优先级最高,首先与a结合,而&&优先级高于||,相当于(!a)||(b&&2),即0||1为真,其值为1。逻辑与&&、逻辑或||均有“短路”特性:
逻辑与&&“短路”:当逻辑与&&的左操作数为逻辑假时,就足以判断该逻辑运算的结果为假了,故右操作数就不再被执行。
逻辑或||“短路”:当逻辑或||的左操作数为逻辑真时,就足以判断该逻辑运算的结果为真了,故右操作数就不再被执行。逻辑运算符的特性: inta=1,b=2,c; c=a||++b; printf("a=%d,b=%d,c=%d\n",a,b,c);
由于a为非零值,即为真,而当逻辑或||的左操作数为真时,就足以判断该逻辑操作的结果为真。故发生“短路”,即右操作数++b不被执行。输出结果为:a=1,b=2,c=1。例如:#include<stdio.h>intmain(void){inta=0,b=2,c;c=!a||++b&&a--;printf("a=%d,b=%d,c=%d\n",a,b,c);return0;}分析以下程序,输出其运行结果:
混合表达式c=!a||++b&&a--中含有的运算符有逻辑非!、逻辑或||、逻辑与&&、算术前缀++、算术后缀--、赋值号=等6个运算符。逻辑运算符、算术运算符、赋值运算符的优先级的关系为:逻辑非!>算术>逻辑与&&、逻辑或||>赋值=
由于该表达式中赋值运算符优先级最低,故最后赋值。代码分析:
根据优先级的高低,表达式!a||++b&&a--等价于(!a)||((++b)&&(a--)),而逻辑或||的左操作数!a为真,此时足以判断该表达式的值为真。故发生“短路”,即||的整个右操作数((++b)&&(a--))不再被执行。
运行结果为: a=0,b=2,c=1代码分析:谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五运算符与表达式
5.5赋值运算符基本赋值运算符复合赋值运算符12CONTENT
基本赋值运算符基本赋值运算符:=。复合赋值运算符: +=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(求余赋值)、 <<=(左移赋值)、>>=(右移赋值)、&=(按位与赋值)、|=(按位或赋值)、 *A=(按位异或赋值)。赋值操作的优先级较低,仅高于逗号运算符。基本赋值=如inta=5;表示把5赋值给整型变量a,不能读成“a等于5”。赋值号左边必须为左值,赋值号右边的右值可以为常量、变量或表达式。如下赋值均是正确的。inta,b;//定义整型变量a和ba=3;//把常量3赋值给a,右值为常量b=a;//把变量a的值赋给b,右值为变量b=a+3;//把求和表达式a+3的值赋给b,右值为表达式复合赋值运算符
复合赋值:+=、-=、*=、/=、%= a+=b;等价于a=a+b; a-=b;等价于a=a-b; a*=b;等价于a=a*b; a/=b;等价于a=a/b;
例如: inta=5; a+=3;//等价于a=a+3;
由于赋值运算符的优先级很低,仅高于逗号运算符,故最后做赋值操作。 a+=3+2;等价于a=a+(3+2);.#include<stdio.h>intmain(void){inta=l,b=2,c=3;//定义三个整型变量,并初始化floatd=10.2f;//定义float变量d,用浮点常量10.2初始化a+=1;//相当于a=a+1;即a=1+1=2b-=a+5;c*=a-4;printf("%d,%d,%d,%f",a,b,c,d/=a);return0;}代码分析:1)floatd=10.2f;如果改为floatd=10.2;虽然没有语法错误,可以正常运行,但一般编译器会提示warning(警告),原因是编译器会把10.2等常量默认当成double型常量处理,与d的类型float不一致,故出现警告。因此可通过加f明确10.2为float型常量。2)a+=1;相当于a=a+1;求出a为2。3)b-=a+5;由于赋值运算符的优先级低于算术求和运算符,故该语句等价于b=b-(a+5);,即b=2-(2+5);,得b=-5;。同理,c*=a-4;即c=3*(2-4);,故c=-60。4)printf("%d,%d,%d,%f",a,b,c,d/=a);由于输出列表中a、b和c均为int型变量,故输出格式占位符均为%d;输出列表中第4项为表达式,其表达式的值为d=d/a=10.2f/2=5.1,为浮点类型,输出格式占位符为%f,在编译环境中,float类型为小数点后保留6位数字。运行结果为:2,-5,-6,5.100000本节结束谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五
运算符与表达式5.6条件运算符
条件运算符(conditionaloperator)有时候也称为三元运算符(ternaryoperator,或者trinaryoperator),因为它是唯一需要3个操作数的运算符:它的符号是?,语法格式如下:
条件?表达式1:表达式2
在计算完条件之后,有一个序列点。如果结果不等于0(换句话说,如果条件计算结果为true),则只有第二个操作数(也就是表达式1)会被计算,并且表达式1的值就是整个表达式的结果。
另一方面,如果结果为0(如果条件计算结果为false),那么只有第三个操作数(也就是表达式2)会被计算,并且表达式2的值就是整个表达式的结果。以这种方式,条件运算符代表了在程序流中的条件式跳转,因此,有时候可以与if-else语句相互替代。
找出两个数中的最大者:inlineintiMax(inta,intb){returna>=b?a:b;}
函数iMax()可以用if-else语句改写:inlineintiMax(inta,intb){if(a>=b)returna;elsereturnb;}
条件运算符具有相当低的优先级,只有赋值和逗号运算符的优先级比它低。因此,下面的语句不需要括号: distance=x<y?y-x:x-y;
条件运算符的第一个操作数是条件,必须是标量类型,也就是算术类型或指针类型。第二个和第三个操作数分别是表达式1和表达式2,必须满足下面条件之一: (1)两个可选表达式都具有算术类型,在这种情况下,整个运算的最终结果类型,是后面两个操作数进行寻常算术转换的类型。 (2)两个可选操作数都有相同的结构或联合类型,或者void类型。整个运算的最终结果类型也属于与这两个操作数一样的类型。 (3)两个可选操作数都是指针,并且符合下面的一个条件:
两个指针属于相同类型。整个运算的结果也属于相同的类型。
其中一个操作数是空指针常量。整个运算的结果属于另一个操作数类型。
其中一个操作数是对象指针,另一个是指向void指针。整个运算的结果属于void*类型。
两个指针可以指向具有不同限定符的类型。在这种情况下,整个运算的结果是一个指针,其所指的对象类型同时具备两个可选操作数的类型限定符。谢谢THANKYOU主讲人:谢宇C程序设计精品在线开放课程单元五运算符与表达式5.7其它运算符自增运算符逗号运算符0102目录自增量运算符:++(增1)、--(减1)自增量运算符均有两种使用形式,++a、a++及--a、a--,也称为前缀形式和后缀形式。左值(lvalue)和右值(rvalue)12inta;//整型变量a可以作为左值使用floatb;//单精度浮点型变量b也可作为左值使用constintc;//因为常变量c的值不允许改变,故不可作为左值使用计算机内存中可修改的存储对象,一般称为左值或lvalue把可赋值给左值的量称为右值或rvalue。右值可以是常量、变量或者表达式。inta,b;//定义整型变量a和ba=2;//把常量2作为右值,赋给左值ab=a;//把变量a作为右值,赋给左值bb=a+3;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭农场养殖技术推广协议
- 时尚潮玩商品网络销售合作权责共担协议
- 昆虫记选读教学教案:初中生物与自然知识结合学习指导
- 应对项目管理中的风险应对策略
- 海底两万里的冒险之旅教案设计
- 养老服务机构投资建设合同
- 高端设备采购与维护合同
- 花木兰报国传奇故事解读
- 租赁户外场地合同协议书
- 2024-2025学年高二化学人教版选择性必修3教学课件 第一章 第一节 第1课时 有机化合物的分类
- 火电厂汽机专业技术培训
- DB22T 3064-2019 农业现代化发展水平评价指标体系
- 石膏娃娃课件教学课件
- 质量部年终述职报告
- 2024全新《婚姻法》精美课件
- 口腔健康全身健康课件
- 2024年国家公务员考试公共法律知识考试题库及答案(共530题)
- 数字出版概论 课件 第一章 数字出版及其发展历程
- 2024年江苏教师资格证中学综合素质试卷及解答
- Wonderware InTouch:报警与事件处理机制技术教程.Tex.header
- 北京2024年北京服装学院第一批人才招聘笔试历年典型考题及考点附答案解析
评论
0/150
提交评论