C语言课件:第四章 数据的输入和输出_第1页
C语言课件:第四章 数据的输入和输出_第2页
C语言课件:第四章 数据的输入和输出_第3页
C语言课件:第四章 数据的输入和输出_第4页
C语言课件:第四章 数据的输入和输出_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、共 25 页 第 1 1 页共 25 页 第 2 2 页 掌握C语言中输入输出数据的方法 掌握各种格式的使用 共 25 页 第 3 3 页 数据输入输出的概念数据输入输出的概念l 输出:从计算机向显示器、打印机等外部设输出:从计算机向显示器、打印机等外部设备输出数据。备输出数据。l输入:从标准输入设备键盘、鼠标等向计算输入:从标准输入设备键盘、鼠标等向计算机输入数据。机输入数据。lC语言不提供输入输出语句,输入输出操作语言不提供输入输出语句,输入输出操作是由是由C函数库中的函数实现。函数库中的函数实现。两个基本的输出两个基本的输出( (输入输入) )函数:函数:即:格式输出即:格式输出( (输

2、入输入) )函数函数 字符输出字符输出( (输入输入) )函数函数共 25 页 第 4 4 页1.函数的基本功能函数的基本功能 格式:格式:printf(格式控制字符串,输出表列)格式控制字符串,输出表列) 功能:从标准输出设备上,按指定的格式输出对应功能:从标准输出设备上,按指定的格式输出对应 的变量。的变量。2. 函数说明函数说明: (1) 格式控制字符串由双引号括起来,由格式说明格式控制字符串由双引号括起来,由格式说明符和符和普通字符(即需要原样输出的字符)组成。普通字符(即需要原样输出的字符)组成。 (2)(2)输出表列是需要输出的一些数据,可以是常量、输出表列是需要输出的一些数据,可

3、以是常量、变量或表达式。变量或表达式。(3)(3)输出表列的类型必须与格式说明符在类型、个数输出表列的类型必须与格式说明符在类型、个数和位置上一一对应。和位置上一一对应。共 25 页 第 5 5 页例例: #include main( ) int a=3, b=4; printf(“a=%d b=%d”,a,b);运行结果运行结果:a=3 b=4格式说明符格式说明符普通字符普通字符输出表列输出表列%d%d: : 输出带符号的输出带符号的十进制十进制整数整数% %u u:输出:输出无符号无符号整数整数% %o o:输出:输出八进制八进制无符号整数无符号整数% %x x:输出:输出十六进制十六进制

4、无符号整数(小写)无符号整数(小写)%X%X:输出:输出十六进制十六进制无符号整数(大写)无符号整数(大写)% %f f:以:以小数形式小数形式输出单、双精度实数输出单、双精度实数% %e: e: 以以指数形式指数形式输出单、双精度实数输出单、双精度实数% %g: g: 自动选用自动选用%f%f和和%e%e中输出宽度较小的一种格式中输出宽度较小的一种格式% %c: c: 输出一个输出一个字符字符%s%s: : 输出输出字符串字符串%:输出百分号:输出百分号% %基本格式说明符基本格式说明符3.格式说明符的修饰格式说明符的修饰 可以在可以在%和一般格式中间插入以下列表的格和一般格式中间插入以下列

5、表的格式修饰符,用于修饰输出格式。式修饰符,用于修饰输出格式。l 修饰修饰d,u,o,x格式符时,用于输出格式符时,用于输出long型数据。型数据。- 输出的数字或字符输出的数字或字符左对齐左对齐,右边补空格右边补空格. (若省略,系统默认是右对齐)(若省略,系统默认是右对齐)m 输出数据占输出数据占m列字符。列字符。n 输出数据占输出数据占n位小数位小数m.n 输出数据占输出数据占m列字符,列字符,n位小数。位小数。共 25 页 第 8 8 页 (1)(1) %d格式符格式符: 输出带符号的十进制整数。输出带符号的十进制整数。 %d 按整型数据的实际长度输出。按整型数据的实际长度输出。 %m

6、d m为指定的输出字段的宽度为指定的输出字段的宽度.若输出数据的位数若输出数据的位数大于大于m,则按实际位数输出。若输出数据的位数小于则按实际位数输出。若输出数据的位数小于m,则左端补空格则左端补空格; %ld 输出长整型数据输出长整型数据.(在在Vc+系统中系统中%d和和%ld没有区没有区别别)例:int a=1234; printf(“%3d”,a); printf(“%5dn”,a); printf(“%-5d”,a);1234 1234实际实际 左补空左补空1234 左对齐,右补空左对齐,右补空共 25 页 第 9 9 页以下程序运行后的输出结果是?以下程序运行后的输出结果是?main

7、()int x,y,z; x=y=1; z=x+,y+,+y;printf(%d,%d,%d,x,y,z);A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1共 25 页 第 1010 页(2)(2)o o格式符格式符 输出八进制无符号的整数。输出八进制无符号的整数。 将内存单元中的各位的值将内存单元中的各位的值(0或或1)按八进制形式输出按八进制形式输出,输出的数值不带符号输出的数值不带符号,将符号也作为八进制数的一部分将符号也作为八进制数的一部分输出。输出。 例如例如,-1在内存单元中在内存单元中(以补码形式存放以补码形式存放)如下如下: int a=-1; -1: print

8、f(“%d,%o”,a,a); 输出输出Tc系统系统: 1 1 11 11 11 11 11 11 11VC+下-1,177777(3)(3) x格式符格式符,以十六进制数无符号形式输出整数。以十六进制数无符号形式输出整数。(4)(4) u格式符格式符,以十进制形式输出无符号型数据。以十进制形式输出无符号型数据。 例例 #include main() unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“b=%d,%o,%x,%un”,b,b,b,b); 输出输出Tc系统系统: a=-1,177777

9、,ffff,65535 b=-2,177776,fffe,65534VC+下共 25 页 第 1212 页(5)(5) c 格式符格式符 输出一个字符。输出一个字符。 整数的值在整数的值在3333126126范围内范围内, ,也可以用字符形式输也可以用字符形式输出可显示字符。在输出前出可显示字符。在输出前, ,将该整数转换成相应的将该整数转换成相应的ASCIIASCII字符字符; ;字符数据也可以用整数形式输出。字符数据也可以用整数形式输出。例例 #include main( ) char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i

10、); 输出输出: a,97 a,97共 25 页 第 1313 页(6) s格式符格式符 输出一个字符串。输出一个字符串。说明:说明: 若不指定字符宽度和对齐方式若不指定字符宽度和对齐方式,则输出全部字符串则输出全部字符串. 例如例如: printf(%s, CHINA); 程序运行结果:程序运行结果: CHINA 若指定宽度若指定宽度m,实际字符个数大于,实际字符个数大于m,按实际宽度输出按实际宽度输出;如果实际字符个数小于如果实际字符个数小于m,字符右对齐,左边填空格。字符右对齐,左边填空格。 例如例如: : printf(s1=%s,s2=%3s,s3=%-5.2s,s4=%.3sn,

11、abcd, abcd, abcd, abcd) ; 程序运行结果:程序运行结果: s1=abcd,s2=abcd,s3=ab ,s4=abcs1=abcd,s2=abcd,s3=ab ,s4=abc共 25 页 第 1414 页(7) f格式符格式符 以小数形式输出实数以小数形式输出实数(包括单、双精度包括单、双精度)。1) %f , 不指定字段宽度不指定字段宽度,由系统自动指定由系统自动指定,使整数部使整数部分全部输出分全部输出,并输出并输出6位小数(输出双精度数据,位小数(输出双精度数据,也是也是6位,但误差降低)。位,但误差降低)。2) %m.nf , 指定输出的数据共占指定输出的数据共

12、占m列列,其中有其中有n位小位小数数.若数据长度小于若数据长度小于m,则左端补空格。则左端补空格。 例:例:float x=15.3,y=222.225111; printf(“%f,%6.2fn”,x,y);按四舍五入按四舍五入共 25 页 第 1515 页(8) e格式格式 以指数形式输出实数。以指数形式输出实数。 1) %e 不指定输出数据所占的宽度和数字部分小数不指定输出数据所占的宽度和数字部分小数位数位数,由系统自动指定给出由系统自动指定给出6位小数位小数,指数部分占指数部分占5位位,其其中中“e”占一位占一位,指数指数符号占一位符号占一位,指数指数占占3位位.数值按标数值按标准化指

13、数形式输出准化指数形式输出(小数点前有小数点前有1位非零数字)。位非零数字)。 例如例如: printf(“%e”,123.456); 输出输出:1.234560e+002 e格式输出的实数共占格式输出的实数共占13列宽度列宽度. 3位位6位位共 25 页 第 1616 页(9)g格式符格式符:根据数值的大小输出实数根据数值的大小输出实数,自动选自动选 f 格式或格式或 e 格式格式(选择输出时占宽度较小的一种选择输出时占宽度较小的一种),且不输出无意且不输出无意义的零。义的零。 例如:例如: f=123.468; printf(“%f %e %g”,f,f,f); 输出如下输出如下:123.

14、468002 1.234680e+002 123.46810列列13列列10列列共 25 页 第 1717 页1. 1. 格式说明符与变量表要一一对应,即:格式说明符与变量表要一一对应,即:类型相同类型相同,个数相等个数相等2. 2. 格式说明符号用小写字母(格式说明符号用小写字母(%X%X除外)除外)3. 3. 格式说明符号之外的符号均照原样显示格式说明符号之外的符号均照原样显示4. 4. 若需显示百分号,格式为:若需显示百分号,格式为:%5. 5. 如果实际数据所占字符位大于指定的域宽,如果实际数据所占字符位大于指定的域宽,按实际按实际输出输出共 25 页 第 1818 页例例: :分析程

15、序的执行结果分析程序的执行结果main( )main( ) int int a=16;char e= a=16;char e=A A; ; unsigned b; unsigned b; long c; long c; float d; float d; b=65535;c=123456;d=123.45; b=65535;c=123456;d=123.45; printf( printf(”a a=%d,%4d,%-6d,c=%ldn=%d,%4d,%-6d,c=%ldn”, a, a, a, c);, a, a, a, c); printf( printf(”%o, %x, %un%o,

16、%x, %un”, b, b, b);, b, b, b); printf( printf(”%f%f, %e, %13.3e, %gn, %e, %13.3e, %gn”, d, d, d, d);, d, d, d, d); printf(printf(”%c,%s,%7.3sn%c,%s,%7.3sn”,e,e,”ChinaChina”, ,”BeijingBeijing”);); 这里这里7指输出宽度,指输出宽度,3表示输表示输出该字符串的前出该字符串的前3个字符。个字符。共 25 页 第 1919 页格式:格式: putchar(字符变量)字符变量)功能功能 :在标准输出设备上,输出

17、指定的字符。:在标准输出设备上,输出指定的字符。说明说明:* 一次调用只能输出一次调用只能输出一个字符一个字符* 加上分号成为加上分号成为字符输出语句字符输出语句* 使用时在程序开头用编译预处理命令使用时在程序开头用编译预处理命令#include”stdio.h”或或: #include编译预处理编译预处理请详见附录请详见附录E共 25 页 第 2020 页例例:#include main( ) char a,b,c; a=B;b=O;c=Y; putchar(a);putchar(b);putchar(c);输出:输出:BOY注意:头文件声明不可少!注意:头文件声明不可少!共 25 页 第

18、2121 页#includemain( ) char c= a ; putchar( c);思考思考怎样输出多个字符?怎样输出多个字符?多个字符怎样排列?多个字符怎样排列?char c1,c2,c3;c1= a ;c2= b ;c3= c ;putchar(c1);putchar(c2);putchar(c3);abcabcputchar( n );与与putchar(97);putchar(98);putchar(99);等效等效与与printf(“%c%c%c”,c1,c2,c3);等效等效char c1,c2,c3;c1= a ;c2= b ;c3= c ;putchar(c1); pu

19、tchar( n );putchar(c2); putchar( n );putchar(c3);共 25 页 第 2222 页阅读并上机练习阅读并上机练习第四章例第四章例4-1,4-2,4-3,4-4,4-5目的:掌握输出函数目的:掌握输出函数共 25 页 第 2323 页 格式字符格式字符指定输入数指定输入数据格式据格式输入数据输入数据地址表列地址表列非格式字符非格式字符输入数据以输入数据以,分隔分隔没有时用没有时用空格空格、Tab或或回车回车分隔分隔共 25 页 第 2424 页%d%d: : 输入输入十进制十进制整数整数% %o o:输入:输入八进制八进制整数整数% %x x:输入:输

20、入十六进制十六进制整数整数% %f f: : 以以小数形式小数形式输入实数输入实数% %e e:以:以指数形式指数形式输入实数输入实数% %c: c: 输入一个输入一个字符字符%s%s: : 输入输入字符串字符串scanf()函数说明符函数说明符共 25 页 第 2525 页m 表示数据占用的宽度表示数据占用的宽度l 加在加在d、o、x、u前:输入长整型前:输入长整型 加在加在f、e 前:输入双精度型前:输入双精度型L 加在加在f、e 前:输入前:输入long double型型h 加在加在d、o、x 前前:输入短整型输入短整型* 本输入项在读入后不赋给相应的变量本输入项在读入后不赋给相应的变量

21、共 25 页 第 2626 页 说明:说明: * * scanf scanf 函数中的函数中的“格式控制格式控制”后面必须是后面必须是变量地址变量地址而不是变量名。而不是变量名。 * * 输入数据时输入数据时, ,在两个数据之间以在两个数据之间以一个一个或或多个空格多个空格间隔间隔, ,也可以用也可以用回车回车键、键、跳格键跳格键tabtab分隔分隔。共 25 页 第 2727 页 * * 输入时可以指定域宽输入时可以指定域宽, ,不允许规定精度不允许规定精度. .int a,b ;scanf(“%3d%3d”,&a,&b); float x; scanf(“%8.2f ”,&x);* * 输

22、入输入时,遇下列情况结束时,遇下列情况结束* 回车,空格回车,空格* 宽度结束宽度结束* 非法输入非法输入输入输入123456123456系统自动将系统自动将123123赋给赋给a,456a,456赋给赋给b b如:如:int k; scanf(“%3d”,&k);输入:输入:123456789k为:为:123例:例: main( ) int a ,b,c; scanf(%d%d%d,&a,&b,&c); printf(%d ,%d ,%dn,a ,b,c); 以下三种数据输入方法都可以:以下三种数据输入方法都可以: 121516 12 1516 12(按按tab键键)15 16 * * 格式

23、控制字符串中若包含格式控制字符串中若包含普通字符普通字符,则输入时必须,则输入时必须照原样输入普通字符,否则将导致输入结束。照原样输入普通字符,否则将导致输入结束。 如:如:int a,b,cint a,b,c; ; scanf(“%d scanf(“%d, ,%d%d, ,%d”,&a,&b,&c%d”,&a,&b,&c);); 输入:输入:1 1, ,2 2, ,33 * * 数值型数据和字符型数据混合输入方法数值型数据和字符型数据混合输入方法 main()main() int a,b,c,d,e int a,b,c,d,e; ;scanf(“%d%c%c%c%d”,&a,&b,&c,&d

24、,&e); scanf(“%d%c%c%c%d”,&a,&b,&c,&d,&e); printf(“a=%d,b=%c,c=%c,d=%c,e=%d”,a,b, printf(“a=%d,b=%c,c=%c,d=%c,e=%d”,a,b, c,d,ec,d,e);); 输入:输入:123123a ab bc c789789 输出:输出:a=123,b=a,c=b,d=c,ea=123,b=a,c=b,d=c,e=789=789注意格式说明符以注意格式说明符以外的其他字符外的其他字符* *在用在用“%c”%c”格式输入字符时格式输入字符时, ,空格字符和空格字符和“转转义字符义字符”都作为有效字

25、符输入都作为有效字符输入. .如,如,scanf(%c%c%c,&a,&b,&cscanf(%c%c%c,&a,&b,&c););输入:输入:x xy yz zx x字符赋给字符赋给a,a,空格字符赋给空格字符赋给b, yb, y字符赋给字符赋给c c共 25 页 第 3030 页l输入输入doubledouble型数据型数据, ,必须用格式说明符必须用格式说明符%lf%lf或或%le%le,l输入输入longlong型数据,必须用型数据,必须用%ld%ld。(。(vc+6.0vc+6.0不受限制不受限制 )l标准标准C C在在scanfscanf中不使用中不使用%u%u说明符说明符, ,对对

26、unsignedunsigned型数据型数据, ,以以%d%d或或%o%o、%x%x格式格式输入。输入。l% %后的后的“* *”为附加说明符为附加说明符, ,用来表示跳过它对应的数据。用来表示跳过它对应的数据。l输入时格式控制符中不能加输入时格式控制符中不能加“n”n”。l在在scanfscanf函数的格式控制字符串中尽量不要出现普通字符,函数的格式控制字符串中尽量不要出现普通字符,尤其不能将输入提示放在其中。需要显示输入提示应该调尤其不能将输入提示放在其中。需要显示输入提示应该调用用printfprintf函数实现。函数实现。提示注意:提示注意: 例:例:double a; int b;

27、float c; scanf( %f,%2d,%*d,%5f ,&a,&b,&c);printf( a=%fnb=%dnc=%fn ,a,b,c);输入:输入:5.3,12,456,1.23456回车回车原因是格式符用错了原因是格式符用错了.应该用应该用lf或或le格式格式双精度变量双精度变量a输入时输入时必须用必须用%lf格式格式双精度变量输出可以用双精度变量输出可以用%f格式格式或或%lf格式格式共 25 页 第 3232 页#include main() int a; float b,c; scanf(“%2d%3f%4f”,&a,&b,&c); printf(“a=%d,b=%f,c=

28、%fn”,a,b,c); 输入:输入:12345678987654321输出输出?例例:共 25 页 第 3333 页4.2. 2 getchar函数函数(字符输入函数字符输入函数)一般形式:一般形式:getchar( ) -没有参数没有参数功能:从键盘输入一个字符。功能:从键盘输入一个字符。说明:说明:1)只能输入一个字符)只能输入一个字符 2)可以将获得的字符赋给)可以将获得的字符赋给int 型或型或char型的变量型的变量 例例 #include main() char c; c=getchar( ); putchar(c); 运行时键入字符运行时键入字符a,必须要回车必须要回车则输出为

29、:则输出为:a 注意:输入字符时不要带撇号注意:输入字符时不要带撇号也可改成也可改成int c;共 25 页 第 3434 页#include stdio.h main() int c;c=getchar();putchar(c-1);putchar(c);putchar(c+1);不要丢掉头文件不要丢掉头文件共 25 页 第 3535 页当执行程序时,按下列方式输入数据:当执行程序时,按下列方式输入数据:1234则输出结果是A) 1234 B) 12 C)12 D) 12 3 34 练习:练习:例例:输入三角形的三边长输入三角形的三边长,求三角形面积求三角形面积.为简单起见为简单起见,设输入

30、的三边长设输入的三边长a,b,c能构成三角形能构成三角形.#include math.h main()float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn ,a,b,c,s); printf(area=%7.2fn,area); 输入输入:3,4,6 输出如下输出如下:a= 3.00, b= 4.00, c= 6.00, s= 6.50area= 5.33注意:此例调用了函数库中注意:此例调用了函数库中的函数的函数sqrt,必须在程序开,必须在程序开头加上头加上include命令,把头文命令,把头文件件

温馨提示

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

评论

0/150

提交评论