基本输入、输出和顺序程序设计.ppt
《基本输入、输出和顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《基本输入、输出和顺序程序设计.ppt(45页珍藏版)》请在三一办公上搜索。
1、第4章:基本输入输出和顺序程序设计,学习的意义,程序对数据的处理流程:程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。,数据处理,数据输入,数据输出,C程序中如何实现数据输入?,C程序中如何实现数据输出?,程序的结构:写文章有文章的结构 建房子有房子的结构 制造机械产品由机械产品的结构 那么编写程序是否有程序的结构呢?,学习的意义,YES!,本章讨论,第5章讨论,第6章讨论,格式化输出printf 格式化输入scanf 字符数据的非格式化输入、输出 程序的控制结构 顺序程序设计举例 本章小结,学习目标,掌握各种类型数据的格式化输入输出方法;掌握字符数据的非
2、格式化输入输出方法;理解三种程序控制结构的流程图;学会简单顺序程序的设计;养成良好的程序设计习惯;,学习内容,4.1 格式化输出printf,一般格式,printf(格式控制字符串,表达式1,表达式2,表达式n);,功能,按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符:常规字符:包括可显示字符和用转义字符表示的字符。格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%修饰符格式转换字符,例:long int x=0 x8AB6;printf(“The Val
3、ue of x is%ldn”,x);,常规字符,常规字符(转义符),格式控制符(修饰符),格式控制符(格式转换符),printf使用时的注意事项,(1)格式控制字符串可以不包含任何格式控制符。(2)当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:从左到右的格式控制符对应从左到右的表达式。(3)如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。(4)不同类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输
4、出,其结果可能是不一样的。,printf(“how are you?n”);/只有一个字符串参数,输出为:how are you?printf(“how old are you?n”,20);/带有两个参数,20没有意义,输出为:how old are you?,char ch=A;printf(ch=%c,ch);/输出结果:ch=A(以字符形式输出)printf(ch=%d,ch);/输出结果:ch=65(以A字符的ASCII码形式输出),printf函数中的格式转换字符及其含义,printf函数中的格式转换字符及其含义,1.整数的输出,有符号整数的输出,一般形式:,:表示可选项,可缺省。
5、:表示输出的数据左对齐,缺省时是右对齐。:输出正数时,在数的前面加上号。数字0:右对齐时,如果实际宽度小于width,则在左边的空位补0。width:无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了width,则按照实际宽度输出。.precision:无符号整数,表示至少要输出precision位。若整数的位数大于precision,则按照实际位数输出,否则在左边的空位上补0。字母l:如果在d的前面有字母l(long),表示要输出长整型数据。字母h:如果在d的前面有字母h(short),表示要输出短整型数据。,说明:,【例】有符号整数的格式化输出,#include vo
6、id main()int a=123;long L=65537;printf printf(a=%d-(a=%d)n,a);printf(a=%6d-(a=%6d)n,a);printf(a=%+6d-(a=%+6d)n,a);printf(a=%-6d-(a=%-6d)n,a);printf(a=%-06d-(a=%-06d)n,a);printf(a=%+06d-(a=%+06d)n,a);printf(a=%+6.6d-(a=%+6.6d)n,a);printf(a=%6.6d-(a=%6.6d)n,a);printf(a=%-6.5d-(a=%-6.5d)n,a);printf(a=%
7、6.4d-(a=%6.4d)n,a);printf(L=%ld-(L=%ld)n,L);printf(L=%hd-(L=%hd)n,L);,a=123-(a=%d)a=123-(a=%6d)a=+123-(a=%+6d)a=123-(a=%-6d)a=123-(a=%-06d)a=+00123-(a=%+06d)a=+000123-(a=%+6.6d)a=000123-(a=%6.6d)a=00123-(a=%-6.5d)a=0123-(a=%6.4d)L=65537-(L=%ld)L=1-(L=%hd),运行结果:,L是一长整型数65537,其值为十六进制0X00010001,所以要将其转换
8、成短整型,即取低16位0 x0001,将其输出,故输出为1。,Why?,1.整数的输出,无符号整数的输出,一般形式:,:表示可选项,可缺省。|:表示互斥关系。#:表示当以八进制形式输出数据(%o)时,在数字前输出0;当以十六进制形式输出数据(%x或%X)时,在数字前输出0 x或0X。.precision的含义与前面介绍的相同,但要注意,在TC和BC下,precision所指定的位数也包含了0 x或0X所占的位数,可在VC下,则不包含0 x或0X所占的位数。其它字段的含义与前面介绍的相同。,说明:,【例】无符号整数的格式化输出,#include void main()int a=-1;unsig
9、ned u=32767;unsigned long L=-32768;printf(a=%d,a=%u-(a=%d,a=%u)n,a,a);printf(a=%hx,a=%X-(a=%hx,a=%X)n,a,a);printf(u=%o,u=%X-(u=%o,u=%X)n,u,u);printf(u=%#010X-(u=%#010X)n,u);printf(u=%#10.10X-(u=%#10.10X)n,u);printf(L=%lX-(L=%lX)n,L);printf(L=%-#14.10X-(L=%-#14.10X)n,L);,a=-1,a=65535-(a=%d,a=%u)a=fff
10、f,a=FFFF-(a=%hx,a=%X)u=77777,u=7FFF-(u=%o,u=%X)u=0X00007FFF-(u=%#010X)u=0X00007FFF-(u=%#10.10X)L=FFFF8000-(L=%lX)L=0X00008000-(L=%-#14.10X),运行结果(在BC3.1下):,a=-1,a=4294967295-(a=%d,a=%u)a=ffff,a=FFFFFFFF-(a=%hx,a=%X)u=77777,u=7FFF-(u=%o,u=%X)u=0X00007FFF-(u=%#010X)u=0X0000007FFF-(u=%#10.10X)L=FFFF8000
11、-(L=%lX)L=0X00FFFF8000-(L=%-#14.10X),运行结果(在VC6.0下):,2.实数的输出,一般形式:,:表示可选项,可缺省。|:表示互斥关系。#:必须输出小数点。.precision:规定输出实数时,小数部分的位数。l:输出double型数据(缺省时也是输出double型数据)。L:输出long double型数据。其它字段的含义与前面介绍的相同。,说明:,【例】实数的格式化输出,#include void main()double f=2.5e5;printf printf(f=%15f-(f=%15f)n,f);printf(f=%015f-(f=%015f)
12、n,f);printf(f=%-15.0f-(f=%-15.0f)n,f);printf(f=%#15.0f-(f=%#15.0f)n,f);printf(f=%+15.4f-(f=%+15.4f)n,f);printf(f=%15.4E-(f=%15.4E)n,f);,f=250000.000000-(f=%15f)f=00250000.000000-(f=%015f)f=250000-(f=%-15.0f)f=250000.-(f=%#15.0f)f=+250000.0000-(f=%+15.4f)f=2.5000E+005-(f=%#15.4E),运行结果:,3.字符和字符串的输出,一般
13、形式:,:表示可选项,可缺省。.precision:表示只输出字符串的前precision个字符。其它字段的含义与前面介绍的相同。,说明:,【例】字符及字符串的格式化输出,#include void main()char ch=A;printf printf(ch=%c-(ch=%c)n,ch);printf(ch=%4c-(ch=%4c)n,ch);printf(ch=%-4c-(ch=%-4c)n,ch);printf(ch=%04c-(ch=%04c)n,ch);printf(st=%s-(st=%s)n,CCNU);printf(st=%6s-(st=%6s)n,CCNU);print
14、f(st=%06.3s-(st=%06.3s)n,CCNU);,ch=A-(ch=%c)ch=A-(ch=%4c)ch=A-(ch=%-4c)ch=000A-(ch=%04c)st=CCNU-(st=%s)st=CCNU-(st=%6s)st=000CCN-(st=%06.3s),运行结果:,4.辅助格式控制符(修饰符)小结,4.辅助格式控制符(修饰符)小结,此外,在使用printf函数时还要注意以下几点:格式控制字符串后面表达式的个数一般要与格式控制字符串中的格式控制符的个数相等。格式转换符中,除了X、E、G以外,其它均为小写。表达式的实际数据类型要与格式转换符所表示的类型相符,printf
15、函数不会进行不同数据类型之间的自动转换。象整型数据不可能自动转换成浮点型数据,浮点型数据也不可能自动转换成型数数据,【例】错误的格式化输出,#include void main()int a=10,b=100;float f=2;printf(a=%d,b=%dn,f,b);printf(a=%f,b=%dn,a,b);printf(a=%ld,b=%dn,120,b);,Why?,如何修改?,printf(a=%f,b=%dn,f,b);printf(a=%f,b=%dn,(float)a,b);printf(a=%ld,b=%dn,120L,b);或printf(a=%d,b=%dn,12
16、0,b);,4.2 格式化输入scanf,一般格式,scanf(“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中。,格式控制符与后续参数中的变量地址的对应关系,scanf函数的格式控制符,%*width l|h Type,一般形式:,说明:,:表示可选项,可缺省。|表示互斥关系。width:指定输入数据的域宽,遇空格或不可转换字符则结束。Type:各种格式转换符(参照printf)。*:抑制符,输入的数据不会赋值给相应的变量。l:用于d、u、o、x|X前,指定输入为lo
17、ng型整数;用于e|E、f前,指定输入为double型实数。h:用于d、u、o、x|X前,指定输入为short型整数。,使用scanf函数注意事项,(1)如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。(2)格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。(3)为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。(4)当格式控制字符串中指定了输入数据的域宽width时
18、,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。,例如:scanf(%d%d,假设给num1输入12,给num2输入36,则正确的输入操作为:1236 或者 12 36 使用“”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。,例如:scanf(%d:%d:%d,假设给h输入12,给m输入30,给s输入10,正确的输入操作为:12:30:10,例如:scanf(num1=%d,num2=%dn,假设给num1输入12,给num2输入36,正确的输入操作为:num1=12,num2=36n,例如:将scanf(num1=%d,num2=%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 输入 输出 顺序 程序设计
链接地址:https://www.31ppt.com/p-5952356.html