1. 首页
  2. 文档大全

第三章 顺序结构程序设计

上传者:7****0 2022-05-31 03:33:50上传 PPT文件 733.50KB
第三章 顺序结构程序设计_第1页 第三章 顺序结构程序设计_第2页 第三章 顺序结构程序设计_第3页

《第三章 顺序结构程序设计》由会员分享,可在线阅读,更多相关《第三章 顺序结构程序设计(79页珍藏版)》请在文档大全上搜索。

1、第三章l 主要内容主要内容o 3.1 3.1 算法简介算法简介o 3.2 C3.2 C语句语句o 3.3 C3.3 C语言的基本输入与输出语言的基本输入与输出o 3.4 3.4 顺序结构程序设计顺序结构程序设计一个程序应包括两个方面的内容一个程序应包括两个方面的内容: :o 对数据的描述:数据结构对数据的描述:数据结构(data structure) 。在程。在程序中要指定数据的类型和数据的组织形式。序中要指定数据的类型和数据的组织形式。o 对操作的描述:算法对操作的描述:算法(algorithm)。算法是为解决算法是为解决一个问题而采取的方法和步骤。一个问题而采取的方法和步骤。著名计算机科学

2、家沃思提出一个公式: 数据结构数据结构 + 算法算法 = 程序程序数据结构算法程序设计方法语言工具数据结构算法程序设计方法语言工具完整的程序设计应该是完整的程序设计应该是: :3.1 算法简介算法简介一个算法还具备以下几个重要特性:一个算法还具备以下几个重要特性:o有穷性:有穷性:一个算法必须保证执行有穷步之后结束,不能无休止一个算法必须保证执行有穷步之后结束,不能无休止地执行下去;地执行下去;o确定性:确定性:算法的每一个步骤必须具有确切的含义,执行何种动算法的每一个步骤必须具有确切的含义,执行何种动作不能有二义性,目的明确;作不能有二义性,目的明确;o可行性:可行性:算法中的每一步操作都必

3、须是可执行的,也就是说算算法中的每一步操作都必须是可执行的,也就是说算法中的每一步都能通过手工或机器在有限时间内完成,这称之法中的每一步都能通过手工或机器在有限时间内完成,这称之为有效性。不合实际的算法是不允许的;为有效性。不合实际的算法是不允许的;o输入:输入:一个算法中有零个或多个输入。这些输入数据应在算法一个算法中有零个或多个输入。这些输入数据应在算法操作前提供。操作前提供。o输出:输出:一个算法中有一个或多个输出。算法的目的是用来解决一个算法中有一个或多个输出。算法的目的是用来解决一个给定的问题,因此,它应向人们提供产生的结果,否则,一个给定的问题,因此,它应向人们提供产生的结果,否则

4、,就没有意义了。就没有意义了。 计算机算法可分为两大类别:计算机算法可分为两大类别:o 数值运算算法:数值运算算法:求数值解,例如求方程的根、求数值解,例如求方程的根、求函数的定积分等。求函数的定积分等。o 非数值运算:非数值运算:包括的面十分广泛,最常见的是包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、用于事务管理领域,例如图书检索、人事管理、行车调度管理等。行车调度管理等。3.1.2算法的常用描述方法算法的常用描述方法n 自然语言自然语言n 传统流程图传统流程图n 结构化流程图结构化流程图n 伪代码伪代码自然语言自然语言 自然语言就是人们日常使用的语言,可以是汉语或

5、英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。自然语言表示的含义往往不大严格,要根据上下文才能判断其正确含义,描述包含分支和循环的算法时也不很方便。 因此,除了那些很简单的问题外,一般不用自然语言描述算法。 【例3.1】 用自然语言描述出100以内能被3整除的所有正整数。 (1)令i=1; (2)如果i能被3整除,则输出i; (3)i=i+1; (4)如果i100,则返回第(2)步; (5)结束。 2.流程图流程图美国国家标准化协会美国国家标准化协会ANSI(American National Standard ANSI(American National Stand

6、ard Institute)Institute)规定了一些常用的流程图符号:规定了一些常用的流程图符号:起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流程线流程线连接点连接点例:例: 将求将求5!的算法用流程图表示的算法用流程图表示如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。 例:例: 打印打印50名名 学生中学生中成绩在成绩在80分以上者的学分以上者的学号和成绩。号和成绩。 例例2.8 将例将例2.3判判定闰年的算法用定闰年的算法用流程图表示流程图表示 用流程图表示算法要比用文字描述算法逻辑清晰、易于理解。 小结:小结:流程图是表示算法的较好的工具。一个

7、流程图包流程图是表示算法的较好的工具。一个流程图包括以下几部分括以下几部分 : (1)(1)表示相应操作的框;表示相应操作的框; (2)(2)带箭头的流程线;带箭头的流程线; (3)(3)框内外必要的文字说明。框内外必要的文字说明。 传统流程图用流程线指出各框的执行顺序,对流程传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以毫不受限线的使用没有严格限制。因此,使用者可以毫不受限制地使流程随意地转向,使流程图变得毫无规律,阅制地使流程随意地转向,使流程图变得毫无规律,阅读者要花很大精力去追踪流程,使人难以理解算法的读者要花很大精力去追踪流程,使人难以理解算法的逻

8、辑。逻辑。传统流程图的弊端传统流程图的弊端传统流程图的流程可以是: 这种如同乱麻一样的算法称为BS型算法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。缺点:难以阅读、修改,使算法的可靠性和可维护性难以保证。解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去。 BohraBohra和和JacopiniJacopini提出了以下三种基本结构:提出了以下三种基本结构: 顺序结构、选择结构、循环结构顺序结构、选择结构、循环结构 用这三种基本结构作为表示一个良好算法的基本单元。用这三种基本结构作为表示一个良好算法的基本单元。三种基本结构三种基本结构顺序

9、结构顺序结构选择结构选择结构当型当型(While型型)循环结构循环结构 直到型直到型(Until型型)循环循环 (1)(1)只有一个入口。只有一个入口。 (2)(2)只有一个出口。(只有一个出口。(请注意:请注意:一个菱形判断框有两个出口,一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)选择结构的出口混淆。)(3)(3)结构内的每一部分都有机会被执行到。结构内的每一部分都有机会被执行到。(4)(4)结构内不存在结构内不存在“死循环死循环”( (无终止的循环无终止的循环) )。 三种基本结构的共同特点

10、:三种基本结构的共同特点: 图中没有一条从入口到出口图中没有一条从入口到出口的路径通过的路径通过A A框框不正确的流程表示:不正确的流程表示:流程内的死循环流程内的死循环3. N-S图图 1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称N-S结构化流程图。 N-SN-S流程图用以下的流程图符号:流程图用以下的流程图符号: (1)顺序结构顺序结构(2)选择结构选择结构(3)循环结构循环结构 用三种用三种

11、N-SN-S流程图中的基本框,可以组成复杂的流程图中的基本框,可以组成复杂的N-SN-S流程图。图中的流程图。图中的A A框或框或B B框,框,可以是一个简单的操作,也可以是三个基本结构之一。可以是一个简单的操作,也可以是三个基本结构之一。 A框可以是一个选择结构 B框可以是一个循环结构 例:例: 将例将例2.1的求的求5!算算法用法用N-S图表示图表示例:例: 将例将例2.2的算法用的算法用N-S图表示。(打印图表示。(打印50名学生中成绩高名学生中成绩高于于80分的学号和成分的学号和成绩绩)N-SN-S图表示算法的优点图表示算法的优点o 比文字描述直观、形象、比文字描述直观、形象、 易于理

12、解;比传统流程易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,整个算法结图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成的,构是由各个基本结构按顺序组成的,N-SN-S流程图中流程图中的上下顺序就是执行时的顺序。的上下顺序就是执行时的顺序。o 用用N-SN-S图表示的算法都是结构化的算法,因为它不图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺可能出现流程无规律的跳转,而只能自上而下地顺序执行。序执行。小结:小结:o一个结构化的算法是由一些基本结构顺序组成的。在基本结构之一个结构化的算法是由一些基本结构顺序组成的。在基本结构之间不

13、存在向前或向后的跳转,流程的转移只存在于一个基本结构间不存在向前或向后的跳转,流程的转移只存在于一个基本结构范围之内范围之内( (如循环中流程的跳转如循环中流程的跳转) );o一一 个非结构化的算法可以用一个等价的结构化算法代替,其功个非结构化的算法可以用一个等价的结构化算法代替,其功能不变能不变 。o如果一个算法不能分解为若干个基本结构,则它必然不是一个结如果一个算法不能分解为若干个基本结构,则它必然不是一个结构化的算法。构化的算法。4. 用伪代码表示算法用伪代码表示算法o 概念:概念:伪代码是用介于自然语言和计算机语言之间的文伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。字

14、和符号来描述算法。o 特点:特点:它如同一篇文章一样它如同一篇文章一样 ,自上而下地写下来。每,自上而下地写下来。每一行一行( (或几行或几行) )表示一个基本操作。它不用图形符号,因表示一个基本操作。它不用图形符号,因此书写方便此书写方便 、格式紧凑,也比较好懂,也便于向计算、格式紧凑,也比较好懂,也便于向计算机语言算法机语言算法( (即程序即程序) )过渡。过渡。o 用处:用处:适用于设计过程中需要反复修改时的流程描述。适用于设计过程中需要反复修改时的流程描述。 IF x is positive THEN print x ELSE print -x也可以用汉字伪代码表示:也可以用汉字伪代码

15、表示: 若若 x为正为正 打印打印 x 否则否则 打印打印 -x也可以中英文混用,如:也可以中英文混用,如: IF x 为正为正 print x ELSE print -x例:例: “ “打印打印x x的绝对值的绝对值”的算法的算法可以用伪代码表示为:可以用伪代码表示为:【例【例3.4】 用伪代码描述出用伪代码描述出100以内能被以内能被3整除的所有正整数。整除的所有正整数。 i=1 do if i mod 3=0 then print i i=i+1 loop while i 1005用计算机语言表示算法用计算机语言表示算法o概念:概念:用计算机实现算法。计算机是无法识别流程图和伪代码的。用

16、计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行。因此在用流程图只有用计算机语言编写的程序才能被计算机执行。因此在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。或伪代码描述出一个算法后,还要将它转换成计算机语言程序。 o特点:特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则,用计算机语言表示算法必须严格遵循所用的语言的语法规则,这是和伪代码不同的。这是和伪代码不同的。o用处:用处:要完成一件工作,包括设计算法和实现算法两个部分。设计要完成一件工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。算法的目的是为

17、了实现算法。例:(求例:(求5!)用)用C语言表示。语言表示。#include void main( ) int i,t; t=1; i=2; while(i0) t=a; 正确3.2 C语言的基本输入与输出语言的基本输入与输出( (一一).).所谓输入输出是以计算机主机为主体而言的所谓输入输出是以计算机主机为主体而言的输出输出:从计算机向外部输出设备从计算机向外部输出设备( (显示器显示器, ,打印机打印机) )输出数据输出数据输入输入: :从输入设备从输入设备( (键盘键盘, ,鼠标鼠标, ,扫描仪扫描仪) )向计算机输入数据向计算机输入数据. .( (二二).C).C语言本身不提供输入输

18、出语句语言本身不提供输入输出语句, ,输入和输出操作是由输入和输出操作是由C C函数库中的函函数库中的函数来实现的数来实现的例如例如: :字符输入函数字符输入函数: getchar: getchar() () 字符输出函数字符输出函数:putchar:putchar()()格式输入函数格式输入函数: scanf: scanf() () 格式输出函数格式输出函数: printf: printf()()字符串输入函数字符串输入函数:gets() :gets() 字数穿输出函数字数穿输出函数:puts():puts()( (三三).).在使用系统库函数时在使用系统库函数时, ,要用预编译命令要用预编

19、译命令“#include”#include”将有关的将有关的“头文件头文件”包括到用户源文件中包括到用户源文件中. .例如:例如:在调用标准输入输出库函数时,文件开头应该有:在调用标准输入输出库函数时,文件开头应该有: #include #include “stdio.h“stdio.h” 或:或: #include stdio.h#include 头文件 3.3.1 字符数据的输入输出字符数据的输入输出1.1.字符输出函数字符输出函数o一般形式:一般形式:putcharputchar(chch) o函数作用:向终端输出一个字符函数作用:向终端输出一个字符 字符型变量整型变量3.3.1字符数据

20、的输入输出 例:输出单个字符。例:输出单个字符。#includestdio.h#include void main()void main() char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(nputchar(a);putchar(b);putchar(c);putchar(n);); 运行结果:BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);运行结果:B O Y3.3.1字符数据的

21、输入输出 2.2.字符输入函数字符输入函数o一般形式:一般形式:getchargetchar()() o函数作用:从终端(或系统隐含指定的输入设备)输入一个字函数作用:从终端(或系统隐含指定的输入设备)输入一个字符。符。o函数值:函数值: 从输入设备得到的字符。从输入设备得到的字符。 4.4 字符数据的输入输出 例:输入单个字符。例:输入单个字符。#includestdio.h#include void main()void main() char c; char c; c=getchar c=getchar();(); putchar(c putchar(c);); putchar(n pu

22、tchar(n);); 运行程序:运行程序:从键盘输入字符从键盘输入字符aa按按EnterEnter键键屏幕上将显示输出的字符屏幕上将显示输出的字符aaa aa a3.3.2 格式输入与输出函数格式输入与输出函数1.1.格式输出函数格式输出函数o函数作用:向终端(或系统隐含指定的输出设备)输出函数作用:向终端(或系统隐含指定的输出设备)输出若干个任意类型若干个任意类型的的数据。数据。o一般格式:一般格式:printfprintf(格式控制,输出表列)(格式控制,输出表列)printf(“a=%4d,b=%4d”,a,b);普通字符格式说明输出表列(1)“格式控制格式控制”是用双引号括起来的字符

23、串,也叫是用双引号括起来的字符串,也叫“格式控制格式控制字符串字符串”,它包括三种信息:,它包括三种信息:o格式说明,格式说明,由由%和格式字符组成,用来确定输出内容格式。和格式字符组成,用来确定输出内容格式。如如%d、%c等,它总是由等,它总是由“%”字符开始的。字符开始的。o普通字符,普通字符, 这些字符在输出是按原样输出,主要用于输出提示这些字符在输出是按原样输出,主要用于输出提示信息。如上面信息。如上面printf函数中双引号内的逗号、空格等。函数中双引号内的逗号、空格等。o转义字符,转义字符,转义字符指明特定的操作,如转义字符指明特定的操作,如“n”表示换行,表示换行,“r”表示回车

24、。表示回车。(2)“输出列表输出列表”列出要输出的数据或表达式,它可以是零个或列出要输出的数据或表达式,它可以是零个或多个,每个输出项之间用逗号分隔,输出的数据可以是任何类多个,每个输出项之间用逗号分隔,输出的数据可以是任何类型。型。 【例【例3.7】格式输出。】格式输出。#include void main() int a=88,b=89; printf (%d %dn ,a, b); printf (%d, %dn ,a, b); printf (%c, %cn ,a, b); printf (a=%d,b=%d, a, b); 其运行结果为:88 8988,89X,Ya=88,b=892

25、printf()函数中的格式说明()函数中的格式说明 o printf函数格式说明的一般形式为:函数格式说明的一般形式为: %标志标志输出最小宽度输出最小宽度.精度精度长度长度类型类型 (1)标志)标志 标志为可选择的标志字符,常用标志字符有标志为可选择的标志字符,常用标志字符有-、+、#、空格四种。、空格四种。标志格式字符标志格式字符标志格式意义标志格式意义-结果左对齐,右边填空格(默认为右对齐输出)结果左对齐,右边填空格(默认为右对齐输出)+正数输出加号(正数输出加号(+),负数输出减号(),负数输出减号(-)#在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导0,0 x空格空格

26、正数输出空格代替加号(正数输出空格代替加号(+),负数输出减号(),负数输出减号(-)o (2)输出最小宽度)输出最小宽度 用十进制正整数来表示输出值的最少字符个数。用十进制正整数来表示输出值的最少字符个数。 若实若实际位数多于定义的宽度,则按实际位数输出,际位数多于定义的宽度,则按实际位数输出, 若实际位数若实际位数少于定义的宽度则补以空格。少于定义的宽度则补以空格。 o (3)精度)精度精度格式符以小数点精度格式符以小数点“.”开头,后跟十进制整数来表示。开头,后跟十进制整数来表示。o (4)长度)长度o 长度格式符有长度格式符有h和和l两种,两种,h表示按短整型数据输出,表示按短整型数据

27、输出,l表示表示按长整型或双精度型数据输出。按长整型或双精度型数据输出。 3.3.2 格式输入与输出函数格式输入与输出函数几种常见的格式符的修饰符:L:用于长整型整数,可加在格式符d,o,x,u前面M(代表一个正整数):数据最小宽度N(代表一个正整数):对实数,表示输出n位小数; 对字符串,表示截取的字符个数:输出的数字或字符在域内向左靠3.3.2 格式输入与输出函数格式输入与输出函数(1)格式符格式符。用来输出十进制整数。用来输出十进制整数。几种用法:几种用法: : :按十进制整型数据的实际长度输出。按十进制整型数据的实际长度输出。 d:d:为指定的输出字段的宽度。如果数据的位数小于,为指定

28、的输出字段的宽度。如果数据的位数小于, 则左端补以空格,若大于,则按实际位数输出。则左端补以空格,若大于,则按实际位数输出。 例例: : printf(“%4d,%4d”,a,b); printf(“%4d,%4d”,a,b); 若若a=123, d=12345, a=123, d=12345, 则输出结果为则输出结果为 123, 12345123, 12345 ld:ld:输出长整型数据。输出长整型数据。 例例: : long a=135790; / long a=135790; /* * 定义定义a a为长整型变量为长整型变量* */ / printf(“%ld”,a printf(“%l

29、d”,a););3.3.2 格式输入与输出函数格式输入与输出函数(2)(2)格式符。以八进制整数形式输出。格式符。以八进制整数形式输出。输出的数值不带符号,符号位也一起作为八进制数的一部分输出。输出的数值不带符号,符号位也一起作为八进制数的一部分输出。例:例:intint a=-1; a=-1; printf(%d printf(%d,%o%o,a a,a); a); 在内存单元中的存放形式(以补码形式存放)如下:在内存单元中的存放形式(以补码形式存放)如下: 11111111111111111111111111111111 输出为输出为: : ,不会输出带负号的八进制整数。对长整数(型)可以

30、不会输出带负号的八进制整数。对长整数(型)可以用用“”格式输出。还可以格式输出。还可以指定字段宽度指定字段宽度,例例: :( ,),); ; 输出为输出为: 177777: 177777。 ( (数字前有数字前有2 2个空格个空格) )3.3.2 格式输入与输出函数格式输入与输出函数(3)(3)格式符。以十六进制数形式输出整数。同样不会出格式符。以十六进制数形式输出整数。同样不会出现负的十六进制数。现负的十六进制数。例:例: intint; printfprintf(,);,); 输出结果为输出结果为: : ffff ffff,可以用可以用“”输出长整型数,也可以输出长整型数,也可以指定输出字

31、段的宽度指定输出字段的宽度例例: : “ “”3.3.2 格式输入与输出函数格式输入与输出函数(4)格式符格式符,用来输出unsigned型数据. 一个有符号整数(int型)也可以用u格式输出; 一个unsingned型数据也可以用d格式输出。 unsingned型数据也可用o或x格式输出。(5)格式符格式符,用来输出一个字符。如:char d; printf(,d); 输出字符. 一个整数,只要它的值在范围内,可以用“”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。 3.3.2 格式输入与输出函数格式输入与输出函数例例4.3

32、4.3 无符号数据的输出。无符号数据的输出。#includestdio.h#include void main()void main() unsigned intunsigned int a=65535;int b=-2; a=65535;int b=-2;printf(“aprintf(“a=%d,%o,%x,%un”,a,a,a,a);=%d,%o,%x,%un”,a,a,a,a);printf(“bprintf(“b=%d,%o,%x,%un”,b,b,b,b);=%d,%o,%x,%un”,b,b,b,b); 运行结果:a=-1,177777,ffff,65535b=-2,177776

33、,fffe,65534 3.3.2 格式输入与输出函数格式输入与输出函数例:字符数据的输出。例:字符数据的输出。#includestdio.h#include void main()void main() char c=a;char c=a;intint i=97; i=97;printf(“%c,%dn”,c,cprintf(“%c,%dn”,c,c););printf(“%c,%dn”,i,iprintf(“%c,%dn”,i,i);); 运行结果:a,97a,97指定输出字数的宽度,指定输出字数的宽度,printf(“%3c”,c);printf(“%3c”,c);则输出:则输出: a

34、a3.3.2 格式输入与输出函数格式输入与输出函数(6)s s格式符格式符 输出字符串. 。例如: printf(,) 输出字符串“CHINA”(不包括双引号)。 %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长 小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m.ns,输出占m列,只取字符串中左端n个字符,输出在m列的 右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格,若nm,m自 动取n值。3.3.2 格式输入与输出函数格式输入与输出函数例例: :字符串的输出。字符串的输出。#includestdio.h#include void m

35、ain()void main() printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);“CHINA”, “CHINA”); 运行结果:CHINA, CH ,CHIN,CHI 3.3.2 格式输入与输出函数格式输入与输出函数(7)格式符。格式符。用来以小数形式输出实数(包括单双精度)有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字

36、都是有效数字。单精度实数的有效位数一般为位。.。指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。.与.基本相同,只是使输出的数值向左端靠,右端补空格。 3.3.2 格式输入与输出函数格式输入与输出函数例:输出实数时的有效位数。输出实数时的有效位数。#include stdio.h#include void void ()() ,;,;(,);,); 运行结果:. 3.3.2 格式输入与输出函数格式输入与输出函数例:输出双精度数时的有效位数。输出双精度数时的有效位数。#include stdio.h#include void void ()() ,;,;x=111111111

37、1111.111111111;x=1111111111111.111111111; y=2222222222222.222222222; y=2222222222222.222222222;printf(“%fprintf(“%f”,x+y);x+y); 运行结果:3333333333333.333010 3.3.2 格式输入与输出函数格式输入与输出函数例例: : 输出实数时指定小数位数。输出实数时指定小数位数。#include stdio.h#include void void ()() float f=123.456; float f=123.456; printf(“%f%10f%10.

38、2f%.2f%-10.2f printf(“%f%10f%10.2f%.2f%-10.2fn”n”,f f,f f,f f,f f,f);f); 运行结果:123.455994 123.455994 123.46 123.46 123.46 3.3.2 格式输入与输出函数格式输入与输出函数(8)格式符格式符,以指数形式输出实数。可用以下形式:可用以下形式: 。不指定输出数据所占的宽度和数字部分的小数位数。不指定输出数据所占的宽度和数字部分的小数位数. .例例: : printf(“%e”,123.456); printf(“%e”,123.456);输出:输出: 1.2345601.23456

39、0 e+002e+002 6 6列列 5 5列列所输出的实数共占所输出的实数共占1313列宽度。列宽度。( (注:不同系统的规定略有不同注:不同系统的规定略有不同) ) 3.3.2 格式输入与输出函数格式输入与输出函数 m.ne和-m.ne。、和“”字符的含义与前相同。 此处指拟输出的数据的小数部分(又称尾数)的小数位数。 若,则:printf(%e %10e %10.2e %.2e %-10.2e,f,f,f,f,f); 输出如下:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列说明:未指

40、定,自动使.超过给定的列,乃突破列的限制,按实际长度输出。第3个数据共占列,小数部分占列。只指定,未指定,自动使等于数据应占的长度。第5个数据应占列,数值只有列,由于是“”,数值向左靠,右补一个空格。(注:有的C系统的输出格式与此略有不同) 3.3.2 格式输入与输出函数格式输入与输出函数(9) )格式符格式符,用来输出实数. 它根据数值的大小,自动选格式或格式(选择输出时占宽度较小的一种),且不输出无意义的零。例:若,则( ,);输出如下:123.468000 1.234680e+002 123.468 10列 13列 10列说明:用格式输出占列,用格式输出占列,用格式时,自动从上面两种格式

41、中选择短者(今以格式为短)故占列,并按格式用小数形式输出,最后3个小数位为无意义的,不输出,因此输出123.468,然后右补3个空格。格式用得较少。 3.3.2 格式输入与输出函数格式输入与输出函数说明:说明:o 除了除了X,E,G外,其他各式字符必须用小写。外,其他各式字符必须用小写。o 可以在可以在printf函数中的函数中的“格式控制格式控制”字符串中包含转义字符串中包含转义字符。字符。o 一个格式说明必须以一个格式说明必须以“%”开头,以开头,以9个格式字符之一为个格式字符之一为结束,中间可以插入附加格式字符。结束,中间可以插入附加格式字符。o 想输出想输出%,则应该在格式控制字符串中

42、用连续两个,则应该在格式控制字符串中用连续两个%表表示示 3.3.2 格式输入与输出函数格式输入与输出函数(一)(一). .格式输入函数格式输入函数o 函数作用:按规定格式从键盘输入若干任意类型的数据给地址函数作用:按规定格式从键盘输入若干任意类型的数据给地址所指的单元,可以是变量的地址也可以是字符串的首地址。所指的单元,可以是变量的地址也可以是字符串的首地址。o 一般格式:一般格式:scanfscanf(格式控制,地址表列)(格式控制,地址表列)同同printf函数函数是由若干个地址组成的表列,可以是变量的是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址地址,或字符串的首地址 3

43、.3.2 格式输入与输出函数格式输入与输出函数例:用例:用scanfscanf函数输入数据。函数输入数据。#includestdio.h#include void main()void main() intint a,b,c; a,b,c;scanf(“%d%d%d”,&a,&b,&cscanf(“%d%d%d”,&a,&b,&c););printf(“%d,%d,%dn”,a,b,cprintf(“%d,%d,%dn”,a,b,c);); 运行情况:3 4 5 (输入a,b,c的值)3,4,5 (输出a,b,c的值)a a在内存中的地在内存中的

44、地址址& &是地址运算符是地址运算符 3.3.2 格式输入与输出函数格式输入与输出函数说明:说明:o对对unsigned型变量所需要的数据,可以用型变量所需要的数据,可以用%u,%d或或%o,%x格式输入。格式输入。o可以指定输入数据所占的列数,系统自动按它截取所需数据。可以指定输入数据所占的列数,系统自动按它截取所需数据。o如果在如果在%后有一个后有一个“*”附加说明符,表示跳过它指定的列数。附加说明符,表示跳过它指定的列数。o输入数据时不能规定精度。输入数据时不能规定精度。3.3.2 格式输入与输出函数格式输入与输出函数 使用使用scanfscanf函数时应注意的问题函数时

45、应注意的问题 : :(1 1)格式符的个数必须与输入项的个数相等,数据类型必须)格式符的个数必须与输入项的个数相等,数据类型必须 从左至右一一对应。从左至右一一对应。 (2 2)用户可以指定输入数据的域宽,系统将自动按此域宽截取)用户可以指定输入数据的域宽,系统将自动按此域宽截取 所读入的数据所读入的数据 。(3 3)输入实型数据时,用户不能规定小数点后的位数。)输入实型数据时,用户不能规定小数点后的位数。 (4 4)输入实型数据时,可以不带小数点,即按整型数方式输入。)输入实型数据时,可以不带小数点,即按整型数方式输入。 (5 5)在输入数据时,遇以下情况时认为该数据结束。)在输入数据时,遇

46、以下情况时认为该数据结束。 遇空格,或按遇空格,或按“回车回车”或或“跳格跳格”(TabTab)键;)键; 按指定的宽度结束,如按指定的宽度结束,如“3d”3d”,只取列;,只取列; 遇非法输入。遇非法输入。 (6 6)在使用)在使用%c%c格式符时,输入的数据之间不需要分隔符标志;格式符时,输入的数据之间不需要分隔符标志;空格、回车符、空格、回车符、 转义字符都将作为有效字符读入。转义字符都将作为有效字符读入。 (7 7)如果格式控制字符串中除了格式说明之外,还包含其它字)如果格式控制字符串中除了格式说明之外,还包含其它字符,则输入数据时,这些普通字符要原样输入。符,则输入数据时,这些普通字

47、符要原样输入。 (8 8)格式说明)格式说明“% %* *”表示跳过对应的输入数据项不予读入。表示跳过对应的输入数据项不予读入。 (9 9)在标准输入中不使用)在标准输入中不使用%u%u格式符,对格式符,对unsignedunsigned型数据以型数据以%d%d,%x%x,%o%o格式输入。格式输入。(1010)scanfscanf函数中的函数中的“格式控制格式控制”后面应当是变量地址,而不后面应当是变量地址,而不应是变量名。应是变量名。3.4 顺序结构程序设计在顺序结构程序中,一般包括两部分内容:在顺序结构程序中,一般包括两部分内容:o (1)编译预处理命令)编译预处理命令 在编写程序的过程

48、中,如果要使用在编写程序的过程中,如果要使用C语言标准库函语言标准库函数中的函数,应该使用编译预处理命令,将相应的数中的函数,应该使用编译预处理命令,将相应的头文件包含进来。头文件包含进来。o (2)函数)函数 在函数体中,包括顺序执行的各条语句;主要有:在函数体中,包括顺序执行的各条语句;主要有:本函数中用到的变量的说明部分(包括类型的说本函数中用到的变量的说明部分(包括类型的说明)、数据的输入部分、数据运算部分以及数据的明)、数据的输入部分、数据运算部分以及数据的输出部分。输出部分。 3.4 顺序结构程序设计举例顺序结构程序设计举例例:输入三角形的三边长,求三角形面。假设:三个边长a,b,

49、c能构成三角形。已知面积公式:area=s=(a+b+c)*0.5c)b)(sa)(ss(s开始输入三边长计算s计算面积结束3.4 顺序结构程序设计举例顺序结构程序设计举例#includestdio.h#include #include#includevoid main()void main()float a,b,c,s,area;float a,b,c,s,area;scanf(“%f,%f,%f,&a,&b,&cscanf(“%f,%f,%f,&a,&b,&c););s=1.0/2s=1.0/2* *(a+b+c);(a+b+c);area=

50、sqrt(sarea=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c);(s-c);printf(“aprintf(“a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn”,a,b,c,s);=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn”,a,b,c,s);printf(“areaprintf(“area=%7.2fn”,area);=%7.2fn”,area); 数学函数库因为要用到其中的sqrt函数运行情况:运行情况:3 3,4 4,6 6a= 3.00, b= 4.00, c= 6.00, s= 6.50a= 3.

51、00, b= 4.00, c= 6.00, s= 6.50area= 5.33area= 5.333.4 顺序结构程序设计举例顺序结构程序设计举例例:例: 从键盘输入一个大写字母,要求改用小写字母输出。从键盘输入一个大写字母,要求改用小写字母输出。#include void main()char c1,c2; c1=getchar(); c2=c1-32; printf(“%c,%c”,c1,c2);运行情况: , 3.4 顺序结构程序设计举例顺序结构程序设计举例例:例: 求求axax2 2b bc c方程的根。方程的根。 a a,b b,c c由键盘输入,设由键盘输入,设 。众所周知,一元二

52、次方程式的根为众所周知,一元二次方程式的根为x1= x2= x1= x2= 可以将上面的分式分为两项:可以将上面的分式分为两项:p= p= , q= x1=p+qq= x1=p+q, x2=p-qx2=p-qacb42aacbb242aacbb242ab2aacb242 3.4 顺序结构程序设计举例顺序结构程序设计举例 #include stdio.h#include #include #include void main ( ) void main ( ) float a,b,c,disc,x1,x2,p,q; float a,b,c,disc,x1,x2,p,q; scanf(a scanf(a=%f,b=%f,c=%f,&a,&b,&c);=%f,b=%f,c=%f,&a,&b,&c); disc=b disc=b* *b-4b-4* *a a* *c;c; p=-b/(2 p=-b/(2* *a);a); q=sqrt(disc)/(2 q=sqrt(disc)/(2* *a);a); x1=p+q;x2=p-q; x1=p+q;x2=p-q; printf(nnx1=%5.2fnx2=%5.2fn,x1,x2); printf(nnx1=%5.2fnx2=%5.2fn,x1,x2); 运行情况:运行情况:,


文档来源:https://www.renrendoc.com/paper/212499510.html

文档标签:

下载地址