第03章 标准设备的输入/输出.ppt_第1页
第03章 标准设备的输入/输出.ppt_第2页
第03章 标准设备的输入/输出.ppt_第3页
第03章 标准设备的输入/输出.ppt_第4页
第03章 标准设备的输入/输出.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 标准设备的输入输出,李俊 计算机基础教学部 南京航空航天大学信息科学与技术学院 2007.8.,本章内容,3.1 输入输出的基本概念 3.2 格式化输入输出函数的使用 3.3 常用的字符输入输出函数 3.4 顺序结构程序设计举例,3.1 输入输出的基本概念,输入输出是对计算机而言的。 本章给出标准输入输出设备(键盘和显示器)输入输出操作的实现。 C语言自身没有提供输入输出语句,输入输出是通过函数实现的。,3.2 格式化输入输出函数的使用,3.2.1 格式化输出函数printf( ) 一般格式: int printf( , 输出量1 , 输出量2 ) 功能:按照格式控制字符串规定的要求将

2、后面的输出量的内容输出到标准输出设备上。 用于输出各种类型的数据。 在输出时,不同的数据类型,对应的输出格式字符不同,在表3-1中给出了C语言中用于输出的格式字符。,例: int i=3, j=4; printf(i=%d, j=%dn, i, j);,在格式控制 字符串中,格式说明: 用“%”和格式字符组成。 其他字符: 原样输出。,如上例输出:i=3, j=4,3.2.1 格式化输出函数printf( ),例3.1 输出格式字符的常规使用 #include main( ) int i=3, j=6; float x=4.5; double y=4.9; char c1=A, c2=*; p

3、rintf(“%d, %dn”, i, j); /* 输出整型量 */ printf(“%f, %f n”, x, y); /* 输出实型量 */ printf(“%c, %cn”, c1, c2); /* 输出字符型量 */ ,3.2.1 格式化输出函数printf( ),用 f 和 lf 格式都可输出double型量。 但经常用lf 格式输出double型量。,输出结果如下: 3, 6 4.500000, 4.900000 A, *,例3.2 整型量的输出(d、i、u、o、x、X 格式的使用) #include main( ) char c = -2; int i = -5; long y

4、=65536; printf(c=%d, i=%d, y=%dn, c, i, y); /* A */ printf(c=%u, i=%u, y=%un, c, i, y); /* B */ printf(c=%x, i=%x, y=%xn, c, i, y); /* C */ ,A行,将变量c、i、y的值转换成int型数据,再按d 格式输出。,输出结果如下: c=-2, i=-5, y=0 c=65534, i=65531, y=0 c=fffe, i=fffb, y=0,解释 A,3.2.1 格式化输出函数printf( ),例3.2 整型量的输出(d、i、u、o、x、X 格式的使用) #

5、include main( ) char c = -2; int i = -5; long y=65536; printf(c=%d, i=%d, y=%dn, c, i, y); /* A */ printf(c=%u, i=%u, y=%un, c, i, y); /* B */ printf(c=%x, i=%x, y=%xn, c, i, y); /* C */ ,B行,将变量c、i、y的值转换成unsigned int型数据后,再按照u格式输出。,输出结果如下: c=-2, i=-5, y=0 c=65534, i=65531, y=0 c=fffe, i=fffb, y=0,解释

6、B,3.2.1 格式化输出函数printf( ),例3.2 整型量的输出(d、i、u、o、x、X 格式的使用) #include main( ) char c = -2; int i = -5; long y=65536; printf(c=%d, i=%d, y=%dn, c, i, y); /* A */ printf(c=%u, i=%u, y=%un, c, i, y); /* B */ printf(c=%x, i=%x, y=%xn, c, i, y); /* C */ ,C行,将变量c、i、y的值转换成unsigned int型数据后,再按照x格式输出(输出内存内容)。,输出结果

7、如下: c=-2, i=-5, y=0 c=65534, i=65531, y=0 c=fffe, i=fffb, y=0,解释 C,3.2.1 格式化输出函数printf( ),-2的补码:,1111 1111 1111 1110,c 的值:,1111 1110,-5 的补码:,1111 1111 1111 1100,i 的值:,1111 1111 1111 1100,65536 的补码(即y 的值):,0000 0000 0000 0001 0000 0000 0000 0000,将y 的值转换成整型量后,保留低16位,输出0。,返回A 返回B 返回C,3.2.1 格式化输出函数print

8、f( ),例3.3 整型量的输出(c格式的使用) #include main( ) char c1=65, c2=B; int m=35, n=$; printf(“%c%c%c%cn”, c1, c2, m, n); /* 转换成char型量输出* / printf(%d, %d, %d, %dn, c1, c2, m, n); /* 转换成int型量* / ,若以c 格式输出,就是将输出量的值看成ASCII 码值,输出对应的字符。若以d 格式输出,并且输出量是char 型量,则输出该字符的ASCII 码值。,输出结果如下: AB#$ 65, 66, 35, 36,3.2.1 格式化输出函数

9、printf( ),输出格式说明的完整描述为:,参见表3-2 ,解释!,3.2.1 格式化输出函数printf( ),例3.4 附加格式字符的使用 #include main( ) int i=152; long j=135790; printf(%2d,%6d,%-6d, i, i, i); printf(%ldn, j); /* % 和 d 之间是附加格式小写字母 l */ ,输出结果如下: 152,152,152,135790,解释,3.2.1 格式化输出函数printf( ),例3.5 附加格式字符的使用(e、f 格式的使用) #include main( ) float x=1234

10、567.1234; double y=1234567.1234; printf(%f, %en, x, x); printf(%12.2f, %.3fn, y, y); ,输出结果如下: 1234567.125000, 1.23457e+06 1234567.12, 1234567.123,解释,3.2.1 格式化输出函数printf( ),例3.8 转义字符在输出格式中的应用 #include main( ) double m1=100, rate1=0.25, m2=200, rate2=0.18; printf(%.2ft%.0f%t%fn, m1, rate1*100, m1*rate

11、1); /* 输出量可以是表达式 */ printf(%.2ft%.0f%t%fn, m2, rate2*100, m2*rate2); ,输出结果如下: 100.0025%25.000000 200.0018%36.000000,解释 t 和 % 等,3.2.1 格式化输出函数printf( ),3.2.2 格式化输入函数scanf( ),3.2.2 格式化输入函数scanf( ) 一般格式: int scanf( 格式控制字符串 , 地址1 , 地址2 ); 功能:从标准输入设备上输入数据并转换成内存存储格式存放到与变量对应的内存空间中 。 用于输入各种类型的数据。 格式控制字符串的组成与

12、printf函数的类似。 地址一般表示变量的地址。,例: int i, j; float x, y; scanf(%d%d%f%f, ,将4个输入数据转换成2个int型量和2个float型量的内存表示形式,分别存入4个变量对应的内存储空间中。 输入数据之间用空格分隔。,输入: 358.29.3,3.2.2 格式化输入函数scanf( ),输入格式说明的完整描述为:,3.2.2 格式化输入函数scanf( ),参见表3-2 。,例3.9 输入格式字符的常规使用 #include main( ) int i; long j; float x; double y; scanf(%d%ld, ,运行状

13、况如下: 368.29.97 i=3,j=6 x=8.200000, y=9.970000, y=9.970000,解释,3.2.2 格式化输入函数scanf( ),3.2.2 格式化输入函数scanf( ),在输入数据时,数值之间的分隔符可以是一个或多个空白字符。 C语言中的空白字符可以是: 空格,键和键 上例亦可按下述方式输入: 35 8.2 9.97,例3.10 输入格式控制字符串中非格式控制字符的处理 #include main( ) int i, j; scanf(i=%d,j=%d, ,该程序的运行情况如下: i=6,j=8 ii=6,jj=8,其他字符原样输入,3.2.2 格式化

14、输入函数scanf( ),例3.11 指定输入宽度,使用输入抑制符 #include main( ) int i; float x; scanf(%3d%*4d%2f, ,该程序的运行情况如下: 1234567893 i=123,x=89.000000,解释,3.2.2 格式化输入函数scanf( ),例3.12 输入字符型数据。 #include main( ) char c1, c2, c3; scanf(%c%c%c, ,在输入字符型数据时,字符之间不需要分隔符。,3.2.2 格式化输入函数scanf( ),若输入abc 则c1= a, c2=b, c3=c,若输入abc 则c1= a,

15、 c2=, c3=b,若输入ab 则c1= a, c2=n, c3=b,分别输出?,例3.14 scanf( )函数的返回值 #include main( ) int i, j, k, num; num = scanf(%d%d%d, ,运行状况1: 123 i=1, j=2, k=3 num=3,scanf( )函数的返回值是正确输入数据的个数。,3.2.2 格式化输入函数scanf( ),运行状况2: 12x i=1, j=2, k=-858993460 num=2,k是一个不确定的值,3.3 常用的字符输入输出函数,getchar( )和putchar( )用于字符数据的输入和输出。 它

16、们实际上是系统提供的“宏” 。 在本章,读者可将它们看成函数,按规定的形式使用即可。 getchar( )和putchar( )除了可以输入输出一般的可打印字符外,也可以用于输入输出控制字符。,3.3 常用的字符输入输出函数,例3.15 putchar( )的使用。 #include main( ) int i=66; char c=Y; putchar(i); /* 输出字母B */ putchar(O); /* 输出字母O */ putchar(c); /* 输出字母Y */ putchar(n); /* 输出控制字符:换行 */ putchar(i-1); /* 输出字母A */ put

17、char(i); /* 输出字母B */ putchar(n); /*输出控制字符:换行*/ ,输出结果为: BOY AB,解释,3.3 常用的字符输入输出函数,例3.16 getchar( )的使用。 #include main( ) char c1, c2; int i; c1 = getchar( ); c2 = getchar( ); i = getchar( ); putchar(c1); putchar(c2); putchar(i); putchar(n); ,若输入abc 则c1= a, c2=b, i=c,若输入abc 则c1= a, c2=, i=b,若输入ab 则c1=

18、a, c2=n, i=b,本例与例3.12类似,3.4 顺序结构程序设计举例,所有的语句都是按顺序执行的, 每条语句都必须被执行, 称为顺序控制结构。,例3.17 输入三角形的三边长,求出并输出三角形面积。设a、b、c为三个边长,则三角形的面积为: Area= 其中 s=(a+b+c)/2。,3.4 顺序结构程序设计举例,#include #include main( ) float a, b, c, s, area; scanf(%f,%f,%f, ,注意数学库函数sqrt( ) 的使用,运行状况如下: 3,4,5 area=6.00,3.4 顺序结构程序设计举例,例3.18 求一元二次方程ax2+bx+c的根。 假定输入的a、b、c的值满足 b2-4ac0, 则方程有两个不相等的实根,它们是:,3.4 顺序结构程序设计举例,#include #include main( ) float a, b, c, x1, x2, p, q; scanf(%f%f%f, ,运行状况如下: 1.260.5 x1=-0.08 x2=-4.92,3.4 顺序结构程序设计举例,例3.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论