《第三章 顺序程序设计(精品).ppt》由会员分享,可在线阅读,更多相关《第三章 顺序程序设计(精品).ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章顺序结构程序设计顺序结构程序设计教学目的与要求教学目的与要求:1.算法与程序设计算法与程序设计2.C语句概述语句概述3.C语言常用的输入语言常用的输入/出方式出方式4.顺序结构程序设计顺序结构程序设计3.1算法与程序算法与程序设计设计 著名计算机科学家沃思著名计算机科学家沃思(NikiklausNikiklaus Wirth Wirth)提出:提出:数据结构数据结构+算法算法=程序程序描述数据描述数据的类型,的类型,组织形式组织形式描述对数据描述对数据的操作步骤的操作步骤3.1算法与程序算法与程序设计设计 (本节请参考潭浩强(本节请参考潭浩强C C程序设计三版,第程序设计三版,第2
2、 2章章 算法,受时算法,受时间限制本节只能做简单介绍)间限制本节只能做简单介绍)1、算法:、算法:为解决一个问题而采取的方法和步骤称为为解决一个问题而采取的方法和步骤称为“算法算法”。对对于于同同一一个个问问题题可可以以有有不不同同的的解解题题方方法法和和步步骤骤,也也就就是是有有不不同的算法同的算法。算算法法有有优优劣劣,一一般般而而言言,应应当当选选择择简简单单的的、运运算算步步骤骤少少的的,既运算快、内存开销小的算法。既运算快、内存开销小的算法。2、两两大大类类计计算算机机算算法法:数数值值运运算算方方法法(求求解解数数值值解解,成成熟熟),非数值运算方法(事务管理,广泛)。非数值运算
3、方法(事务管理,广泛)。3.1算法与程序算法与程序设计设计 3、算法的算法的5大特性大特性:(1)有穷性:一个算法应当包含有穷性:一个算法应当包含有限的步骤,有限的步骤,而不能是无限的而不能是无限的步骤;同时一个算法应当在执行一定数量的步骤后,算法结步骤;同时一个算法应当在执行一定数量的步骤后,算法结束,束,不能死循环不能死循环。(2)确定性确定性算法中的算法中的每一个步骤都应当是确定的每一个步骤都应当是确定的,而不是含糊的、摸棱两,而不是含糊的、摸棱两可的。也就是可的。也就是说不应当产生歧义。特别是算法用自然语言描述说不应当产生歧义。特别是算法用自然语言描述时应当注意这点。时应当注意这点。例
4、如:例如:“将成绩优秀的同学名单打印输出将成绩优秀的同学名单打印输出”就是有歧义的。就是有歧义的。“成绩优秀成绩优秀”是要求每门课程都是要求每门课程都90分以上,还是平均成绩在分以上,还是平均成绩在90分分以上?不明确,有歧义,不适合描述算法步骤。以上?不明确,有歧义,不适合描述算法步骤。3.1算法与程序算法与程序设计设计 (3)有有0个或多个输入(即:可以没有输入,也可以有输入)个或多个输入(即:可以没有输入,也可以有输入)所谓输入是指算法执行时所谓输入是指算法执行时从外界获取必要信息从外界获取必要信息。(外界是相对算法本身的,输入可以是人工键盘输入的数(外界是相对算法本身的,输入可以是人工
5、键盘输入的数据,也可以是程序其它部分传递给算法的数据)。据,也可以是程序其它部分传递给算法的数据)。例如:不需要输入任何信息,就可以计算出例如:不需要输入任何信息,就可以计算出5 5!;(!;(0 0个输入)个输入)(4)(4)有有1 1个或多个输出(即算法必须得到结果)个或多个输出(即算法必须得到结果)算法的输出:算法得到的结果。算法的输出:算法得到的结果。算法必须有结果,没有结果算法必须有结果,没有结果 的算法没意义。的算法没意义。(结果可以是显示在屏幕上的,也可以是将结(结果可以是显示在屏幕上的,也可以是将结 果数据传递给程序的其它部分)果数据传递给程序的其它部分)(5)(5)有效性有效
6、性 算法的每个步骤都应当能有效执行,并能得到确定的结果。算法的每个步骤都应当能有效执行,并能得到确定的结果。例如:例如:b=0b=0,则执行则执行a/ba/b是不能有效执行的。是不能有效执行的。3.1算法与程序算法与程序设计设计 4、算法的描述方法、算法的描述方法为为了了表表示示一一个个算算法法,可可以以用用不不同同的的方方法法。常常用用的的算算法法表示方法:表示方法:(1)带序号的自然语言描述。()带序号的自然语言描述。(P15-P18,例例2.1-2.5)(2)传统流程图)传统流程图3.1算法与程序算法与程序设计设计 美国标准化协会美国标准化协会ANSIANSI规定了一些常用的流程图符号规
7、定了一些常用的流程图符号 流程流程图图是表示算法的是表示算法的较较好的工具。好的工具。流程流程图图包括以下几个部分包括以下几个部分:表示相:表示相应应操操作的框,作的框,带带箭箭头头的流程的流程线线,框内、框外,框内、框外必要的文字必要的文字说说明。明。注意:流程注意:流程线线一定不要忘一定不要忘记记箭箭头头,因因为为它反它反应应流程流程执执行的先后次序。行的先后次序。3.1算法与程序算法与程序设计设计 用用传统传统流程流程图图 表示表示3.1算法与程序算法与程序设计设计 (3)N-S流程图表示算法(盒图)流程图表示算法(盒图)N-S流程图的流程图符号:流程图的流程图符号:N-S流程图表示算法
8、的优点:流程图表示算法的优点:比文字描述更加直观、形象,易于理解;比文字描述更加直观、形象,易于理解;比传统的流程图紧凑易画;比传统的流程图紧凑易画;废除流程线,整个算法结构是由各个基本结构按顺序组废除流程线,整个算法结构是由各个基本结构按顺序组成。成。N-SN-S流程图的上下顺序就是执行时的顺序。流程图的上下顺序就是执行时的顺序。N-SN-S图表示的算图表示的算法都是结构化的算法。法都是结构化的算法。3.1算法与程序算法与程序设计设计 (4)伪伪代代码码。用用介介于于自自然然语语言言和和计计算算机机语语言言之之间间的的文文字字及及符符号号来描述算法。来描述算法。(方便、易懂、便于向计算机语言
9、过渡。)(方便、易懂、便于向计算机语言过渡。)要求掌握要求掌握N-S流程图和伪代码。流程图和伪代码。3.1算法与程序算法与程序设计设计 5、结构化程序设计结构化程序设计结构化程序设计的要点是:结构化程序设计的要点是:(1)、要求程序清晰、可读性强。)、要求程序清晰、可读性强。(2)、要求程序设计者按一定规范编写程序,而不能随心)、要求程序设计者按一定规范编写程序,而不能随心所欲地设计程序。所欲地设计程序。(3)、结结构构化化程程序序设设计计方方法法规规定定了了几几种种具具有有良良好好特特性性的的“基基本本结结构构”,用用它它们们作作为为构构成成程程序序的的基基本本单单元元。“基基本本结结构构”
10、应应具具有以下特性:有以下特性:q只有一个入口;只有一个入口;q只有一个出口;只有一个出口;q没有永远执行不到的语句;没有永远执行不到的语句;q没有死循环没有死循环顺序结构、选择结构、循环结构是符合上述特点的基本结构。顺序结构、选择结构、循环结构是符合上述特点的基本结构。已经证明,由这三种基本结构所构成的程序可以处理任何复杂已经证明,由这三种基本结构所构成的程序可以处理任何复杂问题。问题。3.1算法与程序算法与程序设计设计 (4)、程程序序开开发发应应当当采采取取“自自顶顶向向下下,逐逐步步细细化化和和模模块块化化”的方法。即将一个大任务先分成若干个子任务,每个子任务就的方法。即将一个大任务先
11、分成若干个子任务,每个子任务就是一个模块。如果一个子任务还是太复杂,就再分解成若干个是一个模块。如果一个子任务还是太复杂,就再分解成若干个子任务,如此逐层分解,逐步细化。子任务,如此逐层分解,逐步细化。3.1算法与程序算法与程序设计设计 6、结构化程序设计结构化程序设计结构化算法或程序由三种基本结构顺序组成:结构化算法或程序由三种基本结构顺序组成:1、顺序结构顺序结构2、选择结构选择结构3、循环结构循环结构由基本结构组成的算法属于由基本结构组成的算法属于“结构化结构化”算法算法。结构化程序设计的优点:易编、易读、易懂、易维护。结构化程序设计的优点:易编、易读、易懂、易维护。譬如:教务信息系统譬
12、如:教务信息系统3.1算法与程序算法与程序设计设计 7、结构化程序设计过程结构化程序设计过程(1)确确定定算算法法:分分析析问问题题(建建立立数数学学模模型型,选选择择公公式式),写写出出算法描述。算法描述。(2)编写程序:用计算机语言写出实现算法的程序。)编写程序:用计算机语言写出实现算法的程序。(3)输输入入(编编辑辑)程程序序编编译译、连连接接、执执行行程程序序输输出出结结果(测试)果(测试)3.1算法与程序算法与程序设计设计 例:已知一个圆柱体高为,半径为,求圆柱体体积例:已知一个圆柱体高为,半径为,求圆柱体体积3.2C语语句的概述句的概述一、语句一、语句 用来对数据进行加工(完成操作
13、任务),是构成程序用来对数据进行加工(完成操作任务),是构成程序的基本单位。通常一个的基本单位。通常一个C C程序由若干个函数(系统、用户)组程序由若干个函数(系统、用户)组成,每个函数由若干条语句组成。每条语句总是以;结尾。成,每个函数由若干条语句组成。每条语句总是以;结尾。二、二、C C语句的分类语句的分类可分为三类:简单语句、复合语句、空语句可分为三类:简单语句、复合语句、空语句(一)简单语句:(一)简单语句:1 1、表达式语句:、表达式语句:由由 表达式表达式;组成组成p 赋值语句:赋值表达式;赋值语句:赋值表达式;例:例:s=3.1415*R*R;i+;s=3.1415*R*R;i+
14、;p 函数调用语句:函数调用表达式;函数调用语句:函数调用表达式;例:例:printfprintf(“Hello,world!nHello,world!n”););3.2C语语句的概述句的概述2、结构控制语句:控制程序流程、结构控制语句:控制程序流程选择语句:选择语句:ifelse;switch;循环语句:循环语句:for;while;dowhile转向语句:转向语句:continue;break;goto;return;(二)复合语句:将一组语句扩在一对(二)复合语句:将一组语句扩在一对中。中。如:如:while(i100)sum+=i;i+;说明:复合语句的说明:复合语句的后不能有;复合语
15、句中可以事简单语句、后不能有;复合语句中可以事简单语句、复合语句和空语句。复合语句和空语句。3.2C语语句的概述句的概述(三)空语句:(三)空语句:;/*仅有一个仅有一个*/空语句什么也不做,有时被用作转向点,或作为循环语句提空语句什么也不做,有时被用作转向点,或作为循环语句提供空体。供空体。例:例:for(i=0;i=10;i+);3.3输入输入/输出及其输出及其C语言的实现语言的实现1、计算机由主机(、计算机由主机(CPU、内存),外围设备(输、内存),外围设备(输入入/输出设备),接口组成输出设备),接口组成。3.3输入输入/输出及其输出及其C语言的实现语言的实现2.2.输入输入/输出:
16、从计算机向外部设备(如显示器、打印机、输出:从计算机向外部设备(如显示器、打印机、磁盘等)输出数据称为磁盘等)输出数据称为“输出输出”,从外部设备(如键盘、从外部设备(如键盘、鼠标、扫描仪、光盘、磁盘)向计算机输入数据称为鼠标、扫描仪、光盘、磁盘)向计算机输入数据称为“输输入入”。输入。输入/输出是以计算机主机为主体而言的。输出是以计算机主机为主体而言的。3.C3.C语言本身不提供输入语言本身不提供输入/输出语句,输出语句,I/OI/O操作通过调用系统操作通过调用系统函数实现,如函数实现,如printfprintf函数,函数,scanfscanf函数。在程序开头要有:函数。在程序开头要有:#i
17、nclude#include“stdiostdio.h.h”C编译系统与编译系统与C函数库是分别设计的,因此不同的计算机系函数库是分别设计的,因此不同的计算机系统所提供函数的数量、名字、功能不完全相同。但是,有些统所提供函数的数量、名字、功能不完全相同。但是,有些通用的函数各种计算机系统都提供,成为各种计算机系统的通用的函数各种计算机系统都提供,成为各种计算机系统的标准函数。标准函数。3.3输入输入/输出及其输出及其C语言的实现语言的实现4.C函数库中有一批函数库中有一批“标准输入标准输入/输出函数输出函数”。其中有:其中有:printf(格式化输出)(格式化输出)putchar(输出字符)(
18、输出字符)puts(输出字符串)(输出字符串)scanf(格式化输入)(格式化输入)getchar(输入字符)(输入字符)gets(输入字符串)(输入字符串)3.3输入输入/输出及其输出及其C语言的实现语言的实现5.在使用在使用C库函数时,要用预处理命令库函数时,要用预处理命令“#include”将将有关有关的的“头文头文件件”包含到用户源文件中。头文件包含库中函数包含到用户源文件中。头文件包含库中函数说明,定义的常说明,定义的常量等。每个库一般都有相应的头文件。量等。每个库一般都有相应的头文件。比如比如printf等函数属于标准输入等函数属于标准输入/输出库,对应的头文件输出库,对应的头文件
19、是是stdio.h。又如。又如fabs函数属于数学库,对应的头文件是函数属于数学库,对应的头文件是math.h,那么应当在程序的开头,那么应当在程序的开头#include。注意:注意:TurboC中可以用中可以用F1查看一个函数的说明(包含查看一个函数的说明(包含属于哪个头文件)。属于哪个头文件)。3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)printf函数全称是格式化输出函数,即按指定的格函数全称是格式化输出函数,即按指定的格式完成输出功能。它可以向屏幕输出字符,字符串,式完成输出功能。它可以向屏幕输出字符,字符串,数值,及空行等。输出的内容
20、可以是执行结果,也可数值,及空行等。输出的内容可以是执行结果,也可以是提示语。以是提示语。1.printf函数的一般格式函数的一般格式:printf(格式控制字符串,输出表列格式控制字符串,输出表列)3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)p格式控制字符串中的三类符号格式控制字符串中的三类符号格式说明符:用于对各输出项的输出形式进行控制。格式说明符:用于对各输出项的输出形式进行控制。如:如:%c,%d,%f,%o,%s,%x,%等等转义字符转义字符
21、:如:如:n,r,b,”,ddd等等普通字符:非转换说明符,非转义字符的字符。普通字符:非转换说明符,非转义字符的字符。如:如:abc12等等p输出表列包括:输出表列包括:变量变量表达式表达式字符数组名字符数组名3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)2.格式字符格式字符:对于不同类型的数据项应当使用不同的格式字符构对于不同类型的数据项应当使用不同的格式字符构成的格式说明项。成的格式说明项。(1)d d格式符格式符(i i格式符格式符)。表示输出带符号的十进制的整数表示输出带符号的十进制的整数。%d,i按照数据的实际长度输出。按照数据的实际
22、长度输出。printf(“%d”,a);printf(“%i”,a);%md,m指定输出字段的宽度(整数)。如果数据的位数指定输出字段的宽度(整数)。如果数据的位数小于小于m,则左端补以空格(右对齐),若大于则左端补以空格(右对齐),若大于m,则按照实则按照实际位数输出。际位数输出。例:例:printf(“%4d,4d”,a,b);输入输入a=123;b=12345;a=123;b=12345;屏幕显示为:屏幕显示为:123,123453.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)%-md,m指定输出字段的宽度(整数)。如果数据的位数指定输出字段
23、的宽度(整数)。如果数据的位数小于小于m,则右端补以空格(左对齐),若大于则右端补以空格(左对齐),若大于m,则按照实则按照实际位数输出。际位数输出。例:例:printf(“%-4d,-4d”,a,b);输入输入a=123;b=12345;a=123;b=12345;屏幕显示为:屏幕显示为:123,12345%ld,输出长整型数据,也可以指定宽度输出长整型数据,也可以指定宽度%mld。例:例:longa=12;printf(“%3ld”,a);屏幕显示为:屏幕显示为:123.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)(2)o o格式符。格式符。以
24、八进制形式输出整数以八进制形式输出整数。注意是将内存。注意是将内存单单元中元中的各位的的各位的值值按八按八进进制形式制形式输输出,出,输输出的数据不出的数据不带带符号,即符号,即将符号位也一起作将符号位也一起作为为八八进进制的一部分制的一部分输输出。出。(3)(3)x x格式符。以十六进制形式输出整数。与格式符。以十六进制形式输出整数。与o o格式一样,不出现格式一样,不出现负号。负号。printf(“%0 x”,a);或或printf(“%x”,a);表示输出无符号的十六进制的整数,小写,不输出前导表示输出无符号的十六进制的整数,小写,不输出前导0 x printf(“%0X”,a);或或p
25、rintf(“%0X”,a);表示输出无符号的十六进制的整数,大写,不输出前导表示输出无符号的十六进制的整数,大写,不输出前导0X例:例:inta=-1;printf(“%d,%o,%x”,a,a,a);-1的原码:的原码:1000,0000,0000,0001。-1在内存中的补码表示为:在内存中的补码表示为:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff输出:输出:-1,177777,ffff-1是十进制,是十进制,177777是八进制,是八进制,ffff是十六进制。是十六进制。3.4格式输入格式输入/输出输出3.4.1p
26、rintf函数(格式输出函数)函数(格式输出函数)(4)u格式符。用来输出格式符。用来输出unsigned无符号型数据,即无无符号型数据,即无符号数,以十进制形式输出。符号数,以十进制形式输出。一个有符号整数可以用一个有符号整数可以用%u u形式输出,反之,一个形式输出,反之,一个unsignedunsigned型数据也可以用型数据也可以用%d d格式输出格式输出。但是要注意无符但是要注意无符号数据的溢出。例:课本号数据的溢出。例:课本P77页。页。(5)c格式符。用来输出一个字符。一个整数只要它格式符。用来输出一个字符。一个整数只要它的值在的值在0-255范围内,也可以用字符形式输出。反之,
27、一范围内,也可以用字符形式输出。反之,一个字符数据也可以用整数形式输出。个字符数据也可以用整数形式输出。也可以指定字段宽也可以指定字段宽度。度。%mc,mmc,m整数整数。3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)main()charc=a;inti=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);运行结果:运行结果:a,97a,97例:例:chara=1;charb=2;charc=3;printf(“%2cn”,a);输出:输出:1printf(“%3cn”,b);2printf(“%4cn”,c
28、);33.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)(6)s s格式符。用来输出一个字符串。有几种用法格式符。用来输出一个字符串。有几种用法。%s,输出字符串。输出字符串。%ms,输输出出的的字字符符串串占占m列列,如如果果字字符符串串长长度度大大于于m,则则字字符符串串全全部部输输出出;若若字字符符串串长长度度小小于于m,则则左左补补空格(右对齐)。空格(右对齐)。%-ms,输输出出的的字字符符串串占占m列列,如如果果字字符符串串长长度度大大于于m,则则字字符符串串全全部部输输出出;若若字字符符串串长长度度小小于于m,则则右右补空格(左对齐)。
29、补空格(左对齐)。%m.ns,输输出出占占m列列,但但只只取取字字符符串串左左端端n个个字字符符,左补空白(右对齐)。左补空白(右对齐)。%-%-m.nsm.ns,输出占输出占m m列,但只取字符串左端列,但只取字符串左端n n个字符,个字符,右补空白(左对齐)。右补空白(左对齐)。3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)例例:CHINAprintf(“%8s”,a);CHINAprintf(“%2s”,b);CHINAprintf(“%-8s”,c);CHINAprintf(“%8.3s”,c);CHIprintf(“%-8.3s”,c)
30、;CHI3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)(7)f f格式符。用来格式符。用来输输出出实实数(包括数(包括单单、双精度,、双精度,单单双精双精度格式符相同),以小数形式度格式符相同),以小数形式输输出。出。有几种用法有几种用法。%f f,不不指指定定宽宽度度,使使整整数数部部分分全全部部输输出出,并并输输出出6 6位位小小数数。注注意意,并并非非全全部部数数字字都都是是有有效效数数字字,单单精精度度实数的有效位数一般为实数的有效位数一般为7 7位(双精度位(双精度1616位)。位)。3.4格式输入格式输入/输出输出3.4.1print
31、f函数(格式输出函数)函数(格式输出函数)3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)%m.nf,指指定定数数据据占占m列列,其其中中有有n位位小小数数。如如果果数值长度小于数值长度小于m,左端补空格(右对齐)。左端补空格(右对齐)。%-m.nf,指指定定数数据据占占m列列,其其中中有有n位位小小数数。如如果果数值长度小于数值长度小于m,右端补空格(左对齐)。右端补空格(左对齐)。例:例:floata=123.456;printf(“%.2f”,a);/*123.46*/printf(“%10.2f”,a);/*123.46*/printf(“
32、%-10.2f”,a);/*123.46*/3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)(8)e e格式符,以指数形式格式符,以指数形式输输出出实实数。数。%e e,不不指指定定输输出出数数据据所所占占的的宽宽度度和和小小数数位位数数,由由系系统统自自动动指指定定,如如6 6位位小小数数,指指数数占占5 5位位-e e占占1 1位位,指指数数符符号号占占1 1位位,指指数数占占3 3位位。数数值值按按照照规规格格化化指指数数形形式式输输出(小数点前必出(小数点前必须须有而且只有有而且只有1 1位非位非0 0数字)。数字)。例如:例如:1.234
33、5671.234567e+002e+002。(。(双精度)双精度)%m.ne和和%-m.ne,m总的宽度,总的宽度,n小数位数。小数位数。与前面所讲类似。课本与前面所讲类似。课本P803.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)(9)g g格式符,用来输出实数,它根据数值的大小,自格式符,用来输出实数,它根据数值的大小,自动选动选f f格式或格式或e e格式(选择输出时占宽度较小的一种),格式(选择输出时占宽度较小的一种),且不输出无意义的且不输出无意义的0 0(小数末尾(小数末尾0 0)。)。例:例:#includevoidmain()flo
34、atf=123.0;printf(%f,%e,%gn,f,f,f);结果:结果:123.000000,1.23000e+002,1233.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)以上介以上介绍绍的的9 9种格式符,种格式符,归纳归纳如下表:如下表:3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)使用使用printfprintf函数的几点说明:函数的几点说明:(1 1)除除了了X,E,GX,E,G外外,其其它它格格式式字字符符必必须须用用小小写写字字母母。如如%d d不能写成不能写成%D D。(2 2
35、)可可以以在在“格格式式控控制制”字字符符串串中中包包含含转转义义字字符符。如如“n”n”(3 3)格格式式符符以以%开开头头,以以上上述述9 9个个格格式式字字符符结结束束。中中间间可可以以插入附加格式字符。插入附加格式字符。(4 4)如如果果想想输输出出字字符符%,则则应应当当在在“格格式式控控制制”字字符符串串中中用两个用两个%表示。表示。3.4格式输入格式输入/输出输出3.4.1printf函数(格式输出函数)函数(格式输出函数)例:例:inti=1234;floatf=-56.78;printf(“ni=%+6d,i);/*i=+1234*/printf(%7.4f%,f);/*-5
36、6.7800%*/printf(%+6.3G,f);/*-56.8*/printf(%-6.3s,Hello);/*Hel*/3.4格式输入格式输入/输出输出作业:作业:15.(200903)程序段程序段:intx=12;doubley=3.141593;printf(“%d%8.6f”,x,y);的输出结果是的输出结果是A)123.141593B)123.141593C)12,3.141593D)123.14159303.4格式输入格式输入/输出输出作业作业(200903)6.表达式表达式(int)(double)(5/2)+2.5)的值是的值是7.若变量若变量x,y已定义为已定义为int类
37、型且类型且x的值为的值为99,y的值的值为为9,请将输出语句请将输出语句printf(【7】,x/y);补充完整补充完整,使使其输出的计算结果形式为其输出的计算结果形式为:x/y=11。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)1.scanf函数的一般格式:函数的一般格式:scanf(格式控制字符串,地址列表格式控制字符串,地址列表)例如,用例如,用scanf函数输入数据。函数输入数据。main()inta,b,c;printf(“pleaseinputa,b,c:”);scanf(“%d%d%d”,&a,&b,&c);printf
38、(“pleaseoutputa,b,c:”);printf(“%d,%d,%dn”,a,b,c);例如,合法的输入:例如,合法的输入:(1)345 (2)345(3)345 非法的输入:非法的输入:3,4,53.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)%d%d%d表表示示要要求求输输入入3个个十十进进制制整整数数。输输入入数数据据时时,在在两两个个数数据据之之间间以以一一个个或或多多个个空空格格分分隔隔,也也可可以以用用回回车车键键,跳跳格格键键(tab)分分隔隔。这种格式不能用逗号分隔数据。这种格式不能用逗号分隔数据。&是是地地址址
39、运运算算符符,&a指指变变量量a的的地地址址。scanf的的 作作 用用 是是 将将 键键 盘盘 输输 入入 的的 数数 据据 保保 存存 到到&a,&b,&c为地址的存储单为地址的存储单元中,即变量元中,即变量a,b,c中。中。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)例如,用例如,用scanf函数输入数据。函数输入数据。main()inta,b,c;scanf(“%d,%d”,&a,&b);printf(“%d,%dn”,a,b);例如,合法的输入:例如,合法的输入:(1)3,4(2)3,43.4格式输入格式输入/输出输出3.4
40、.2 scanfscanf函数(格式输入函数)函数(格式输入函数)2、格式说明、格式说明 与与printfprintf函数中的格式说明相似,以函数中的格式说明相似,以%开始,以开始,以一个格式字符结束,中间可以插入附加字符。一个格式字符结束,中间可以插入附加字符。P83表表43,44说明:说明:(1)对对unsigned型型变变量量所所需需的的数数据据,可可以以用用%u,%d或或%o,%x格式输入。格式输入。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)(2)可可以以指指定定输输入入数数据据所所占占列列数数,系系统统自自动动按按它截取所
41、需数据。它截取所需数据。如:如:inti1,i2;charc;scanf(“%3d%3c%3d”,&i1,&c,&i2);输入:输入:123-456后,后,i1=123,i2=456,c=-3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)(3)如如果果%后后有有“*”附附加加格格式式说说明明符符,表表示示跳过跳过它指定的列数它指定的列数,这些列不赋值给任何变量。这些列不赋值给任何变量。如:如:scanf(“%3d%*3c%2d”,&i1,&i2);输入:输入:123456789后,后,i1=123,i2=78,(456被被跳跳过过)在利用
42、现有的一批数据,有时不需要其中某在利用现有的一批数据,有时不需要其中某些些 数据数据,可以用此方法可以用此方法“跳过跳过”它们。它们。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)(4)输入数据时可以指定数据字段的宽度,不)输入数据时可以指定数据字段的宽度,不能规定数据的精度。能规定数据的精度。例如例如scanf(“%7.2f”,&a);是不合法的。是不合法的。不能指望使用这种形式通过输入不能指望使用这种形式通过输入1234567获获得得a=12345.67。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入
43、函数)函数(格式输入函数)3、使用、使用scanf函数应当注意的问题函数应当注意的问题:(1)scanf函函数数中中“格格式式控控制制”后后面面应应当当是是变变量量地地址,而不应是变量名。址,而不应是变量名。例如:例如:scanf(“%d,%d”,a,b);不合法。不合法。3.4格式输入格式输入/输出输出3.4.2scanf函数(格式输入函数)函数(格式输入函数)(2 2)如如果果在在“格格式式控控制制”字字符符串串中中除除了了格格式式说说明明 以外还有其它字符,则输入数据时在对应位置输以外还有其它字符,则输入数据时在对应位置输 入与这些字符相同的字符。入与这些字符相同的字符。建议建议:不要使
44、用其它的字符。不要使用其它的字符。例例1 1:scanfscanf(“%d,%d,%d%d,%d,%d”,&a,&b,&c);,&a,&b,&c);应当输应当输入入 3,4,5 3,4,5;不能输入;不能输入3 4 53 4 5。例例2 2:scanfscanf(“%d:%d:%d%d:%d:%d”,&h,&m,&s);,&h,&m,&s);应当输应当输入入 12:23:36 12:23:36 例例3 3:scanfscanf(“a=%d,b=%d,c=%da=%d,b=%d,c=%d”,&a,&b,&c);,&a,&b,&c);应应 当输入当输入a=12,b=24,c=36(a=12,b=2
45、4,c=36(太罗嗦太罗嗦)3.4格式输入格式输入/输出输出3.4.2scanf函数(格式输入函数)函数(格式输入函数)(3)在在用用“%c”格格式式输输入入字字符符时时,空空格格字字符符和和转转义义字字符符都都作作为为有有效效字字符符输输入入。%c只只要要求求读读入入一一个个字字符,后面不需要用空格作为两个字符的间隔。符,后面不需要用空格作为两个字符的间隔。例:例:对于对于scanf(“%c%c%c”,&c1,&c2,&c3);输入:输入:a b c后后;c1=a,c2=,c3=b3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)(4)在
46、输入数据时,遇到下面情况认为该数据结束:)在输入数据时,遇到下面情况认为该数据结束:n遇到空格,或按遇到空格,或按“回车回车”或或“跳格跳格”(tab)键。键。例:例:inta,b,c;scanf(“%d%d%d”,&a,&b,&c);输入:输入:1234(tab)567后,后,a=12,b=34,c=567n按指定的宽度结束。按指定的宽度结束。n遇到非法的输入。遇到非法的输入。例:例:floata,c;charb;scanf(“%d%c%f”,&a,&b,&c);输入:输入:1234a123o.26后,后,a=1234.0,b=a,c=123.0(而不是希望的而不是希望的1230.26)3.
47、4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)C C语言的格式输入输出的规定比较繁琐,重点语言的格式输入输出的规定比较繁琐,重点 掌握最常掌握最常 用的一些规则和规律即可,其它部分可用的一些规则和规律即可,其它部分可 在需要时随时查阅。在需要时随时查阅。3.4格式输入格式输入/输出输出3.4.2 scanfscanf函数(格式输入函数)函数(格式输入函数)作业:作业:1、有有 定定 义义 语语 句句:intx,y;,若若 要要 通通 过过scanf(“%d,%d”,&x,&y);语语句句使使变变量量x得得到到数数值值11,变量,变量y得到数
48、值得到数值12,下面四组输入形式中,下面四组输入形式中,错误的是错误的是A)1112B)11,12C)11,12D)11,122、有以下语句段、有以下语句段intn1=10,n2=20;printf(【7】,n1,n2);要求按以下格式输出要求按以下格式输出n1和和n2的值,每个输出行的值,每个输出行从第一列开始,请填空。从第一列开始,请填空。n1=10n2=203.5 5 其它输入其它输入/输出函数输出函数(#include include.h)3.5.1putchar函数(字符输出函数)函数(字符输出函数)一般形式:一般形式:putchar(字符表达式字符表达式);功能:向终端(显示器)输
49、出一个字符功能:向终端(显示器)输出一个字符,且输出之且输出之后不换行。后不换行。输出的字符可以是可以显示的字符、或转输出的字符可以是可以显示的字符、或转义字符或控制字符或整型的常量、变量、表达式)义字符或控制字符或整型的常量、变量、表达式),课本课本P73例如:例如:putchar(y);putchar(n);putchar(101);putchar();putchar(98);3.5 其它输入其它输入/输出函数输出函数(#include include.h)3.5.2getchar函数(字符输入函数)函数(字符输入函数)一般形式:一般形式:c=getchar();功能:从终端(键盘)输入一
50、个字符,以回车键确功能:从终端(键盘)输入一个字符,以回车键确认认(按回车以后才开始接受字符按回车以后才开始接受字符)。函数的返回值就是。函数的返回值就是输入的字符。输入的字符。注意:注意:p当输入多个字符时,多余的字符作废。当输入多个字符时,多余的字符作废。p用用getchar()得得到到的的字字符符可可以以赋赋给给字字符符型型变变量量、整整形变量或作为表达式的一部分。形变量或作为表达式的一部分。3.5 其它输入其它输入/输出函数输出函数(#include include.h)例例#include#include.hvoid main()void main()char c;char c;c=