第三章输入与输出_第1页
第三章输入与输出_第2页
第三章输入与输出_第3页
第三章输入与输出_第4页
第三章输入与输出_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 输入与输出本章主要介绍C语言中的输入与输出函数的使用。所谓数据输入输出是以计算机为主体而言的。所谓数据输入输出是以计算机为主体而言的。C语言本身不提供输入输出语句,输入和输出操作是由函语言本身不提供输入输出语句,输入和输出操作是由函数实现的。数实现的。C语言函数库中有一批语言函数库中有一批“标准输入输出函数标准输入输出函数”,它是以标准的输入输出设备为输入输出对象的。其中有:它是以标准的输入输出设备为输入输出对象的。其中有:putchar(输出字符),(输出字符),getchar(输入字符),(输入字符),printf(格式输出),(格式输出),scanf(格式输入),(格式输入),p

2、uts(输(输出字符串),出字符串),gets(输入字符串)。(输入字符串)。在使用在使用C语言的库函数时,要用预编译命令语言的库函数时,要用预编译命令“#include”将有关的将有关的“头文件头文件”包括到用户源文件中。头文件中包含包括到用户源文件中。头文件中包含了与函数有关的信息。了与函数有关的信息。例如使用标准输入输出函数时,要用到例如使用标准输入输出函数时,要用到“ stdio.h”文件,文件,文件开头应有一个预编译命令:文件开头应有一个预编译命令: #include 或或 #include “stdio.h”3.1、单字符输入、输出函数、单字符输入、输出函数 1、单字符输出函数(p

3、utchar)1)putchar()函数的格式: putchar(ch); 其中ch可以是一个字符变量或常量,也可以是一个转义字符。2)putchar()函数的作用:向终端输出一个字符。 (1)putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。 (2)在程序中使用putchar()函数,务必牢记:在程序(或文件)的开头加上编译预处理命令(也称包含命令),即: #include stdio.h (3)putchar()函数有参数,无返回值。参数就是它要输出的那个字符,可以是字符变量或字符常量。例 putchar() 函数的格式和使用方法。#include main() cha

4、r ch1=N, ch2=E, ch3=W; putchar(ch1); putchar(ch2); putchar(ch3); putchar(n); putchar(ch1); putchar(n); putchar(E); putchar(n); putchar(ch3); putchar(n); 程序运行结果如下:程序运行结果如下: NEW N E W2、单字符输入函数getchar()1)getchar()函数的格式:getchar(); 2)getchar()函数的作用:从系统隐含的输入设备(如键盘)输入一个字符。 getchar()函数只能用于单个字符的输入,一次输入一个字符。

5、程序中要使用getchar()函数,必须在程序(或文件)的开头加上编译预处理命令: #include “stdio.h”getchar()函数没有参数,但有返回值,返回的就是输入的那个字符。getchar()函数同样将空格和回车键等字符都会作为有效字符输入。在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。程序最后两行可用下面两行的任意一行代替:main() char c; c=getchar(); putchar(c);putchar(getchar();printf(%c,getchar();例例 说明说明getchar()函数的格式和作用。

6、函数的格式和作用。#include stdio.hmain()char ch; ch=getchar(); putchar(ch);putchar(n); putchar(getchar(); putchar(n);程序运行情况如下:程序运行情况如下: ab a b3.2、格式输出函数(、格式输出函数(printf)printf()函数的作用:函数的作用: 向计算机系统默认的输出设备(一般指终端或显示器)向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。输出一个或多个任意类型的数据。printf()函数的一般格式如下:函数的一般格式如下: printf(“格式字符串

7、格式字符串” ,输出表列,输出表列); “格式控制字符串格式控制字符串”是用双引号括起来的字符串,是用双引号括起来的字符串,也称也称“转换控制字符串转换控制字符串”,它可以是两种信息:格式说明,它可以是两种信息:格式说明或普通字符。或普通字符。 格式说明。是由格式说明。是由“%”字符开始和格式字符组成,如字符开始和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为指定的格式等。它的作用是将输出的数据转换为指定的格式输出。输出。普通字符。即需要原样输出的字符,包括转义字符。例如普通字符。即需要原样输出的字符,包括转义字符。例如printf函数中双引号内的逗号、空格和换行符等。函数中双引号

8、内的逗号、空格和换行符等。 “printf(”abc=%fn“, abc);”语句中的语句中的“abc=”就是就是普通字符。普通字符。 2输出表列输出表列 输出表列是可选的。如果要输出的数据不止一个,相邻两个数输出表列是可选的。如果要输出的数据不止一个,相邻两个数据之间用逗号分开。据之间用逗号分开。 下面的下面的printf()函数都是合法的:函数都是合法的: (1)printf(I am a student.n); (2)printf(%d,3+2); (3)printf(a=%d b=%5dn, a, a+3);注意:注意:“格式字符串格式字符串”中的格式指示符,必须与中的格式指示符,必须

9、与“输出项表输出项表”中、中、输出项的数据类型一致,否则会引起输出错误。输出项的数据类型一致,否则会引起输出错误。在在Turbo CTurbo C中,中,printfprintf函数输出表列中的求值顺序是从右到左函数输出表列中的求值顺序是从右到左进行的。进行的。2.格式控制字符串在Turbo C中printf函数格式控制字符串以%开始,以一个格式字符结束,中间可以插入附加的字符。一般形式为:说明:方括号中的项为可选项,可以省略说明:方括号中的项为可选项,可以省略。%m.nh/l格式字符开始符标志字符 宽度指示符 精度指示符长度修正符格式转换字符格式字符格式字符说明说明d,i以带符号的十进制形式

10、输出整数(正数不输出符号)以带符号的十进制形式输出整数(正数不输出符号)o以八进制无符号形式输出整数(不输出前导符以八进制无符号形式输出整数(不输出前导符0)x,X以十六进制无符号形式输出整数(不输出前导符以十六进制无符号形式输出整数(不输出前导符0 x),用),用x则输出十则输出十六进制数的六进制数的af时以小写形式输出;用时以小写形式输出;用X时,则以大写字母输出时,则以大写字母输出AFu以无符号十进制形式输出整数以无符号十进制形式输出整数c以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符s输出字符串输出字符串f以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐

11、含输出6位小数。位小数。e,E以指数以指数“e”或或“E”形式输出实数。(如形式输出实数。(如1.2e+02或或1.2E+02)g,G选用选用%f或或%e格式中输出宽度较短的一种格式,不输出无意义的格式中输出宽度较短的一种格式,不输出无意义的0。用。用G时,若以指数形式输出,则指数以大写表示时,若以指数形式输出,则指数以大写表示标志字符标志字符标志字符包括标志字符包括-、+、#、0等等4种,具体含义参见表种,具体含义参见表2-6所示。所示。表2-6 printf标志字符字符意义-输出结果左对齐,右边填空格;缺省则输出结果右对齐,左边填空格或零+输出值为正时冠以“+”号,为负时冠以“-”号,缺省

12、则为正时冠以空格,为负时冠以“-”号#八进制输出时加前缀0;十六进制输出时加前缀0 x,对c、s、d、u类无影响,对e、g、f类当结果有小数时才给出小数点0输出在数据前的多余空格处加前导0printf(%dn,888);/* 888(按实际需要宽度输出)*/printf(%6dn,888);/* 888(输出右对齐,左边填空格)*/printf(%fn,888.88);/* 888.880000(按实际需要宽度输出)*/printf(%12fn,888.88);/* 888.880000(输出右对齐,左边填空格)*/printf(%gn,888.88);/* 888.88(%g格式比采用%f格

13、式输出宽度小)*/printf(%8gn,888.88);/* 888.88(输出右对齐,左边填空格)*/printf(%.5dn,888);/* 00888(数字前补0)*/printf(%.0dn,888);/* 888 */ printf(%8.3fn,888.88);/* 888.880 */printf(%8.1fn,888.88);/* 888.9 */printf(%8.0fn,888.88);/* 889 */printf(%.5sn,abcdefg);/* abcde(截去超过的部分)*/printf(%5sn,abcdefg);/* abcdefg(宽度不够,按实际宽度输出

14、)*/长度修正符 常用的长度修正符为h和l两种,h表示输出项按短整型输出,l表示输出项按长整型输出。3.3、scanf()函数函数scanf()函数是用来从外部输入设备向计算机主机输入数据的。函数是用来从外部输入设备向计算机主机输入数据的。1scanf()函数的功能:从键盘上接收格式化输入。函数的功能:从键盘上接收格式化输入。2. scanf()函数的一般格式函数的一般格式 scanf(“格式控制字符串格式控制字符串”, 地址表列地址表列);(1)格式控制字符串。)格式控制字符串。 格式控制字符串可以包含格式控制字符串可以包含3种类型的字符:格式指示符、种类型的字符:格式指示符、空白字符(空格

15、、空白字符(空格、Tab键和回车键)和非空白字符(又称普通键和回车键)和非空白字符(又称普通字符)。字符)。 格式指示符与格式指示符与printf()函数的相似,空白字符作为相邻函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。须原样一起输入。(2)地址表列)地址表列由若干个输入项首地址组成,相邻由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。个输入项首地址之间,用逗号分开。输入项首地址表中的地址,可以是变量的首地址,也输入项首地址表中的地址,可以是变量的首地址,也可以是字符

16、数组名或指针变量。可以是字符数组名或指针变量。变量首地址的表示方法:变量首地址的表示方法: &变量名变量名其中其中“&”是地址运算符。是地址运算符。例如,例如,scanf(“%d”,&a);中的中的“&a”是指变量是指变量a在在内存中的首地址。内存中的首地址。 3、格式指示符 格式指示符的一般形式为:格式指示符的一般形式为: % * 宽度宽度m h|l 格格式字符式字符 1)格式字符)格式字符: 与与printf中的类型字符含义相同。中的类型字符含义相同。 2)宽度)宽度m 指定该项输入数据所占列数为指定该项输入数据所占列数为m。 换句话说,读取输入数据中相应的

17、换句话说,读取输入数据中相应的m位,但按需要位,但按需要的位数赋给相应的变量,多余部分被舍弃。的位数赋给相应的变量,多余部分被舍弃。 例如例如:char ch1,ch2; scanf(%3c%3c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); 假设输入假设输入“abcdefg”,则系统将读取的,则系统将读取的“abc”中中的的“a”赋给变量赋给变量ch1;将读取的;将读取的“def”中的中的“d”赋给变赋给变量量ch2,所以,所以printf()函数的输出结果为:函数的输出结果为:ch1=a,ch2=d。 3)抑制字符)抑制字符* 表示

18、本输入项对应的数据读入后,不赋给相应的变量(该表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。变量由下一个格式指示符输入)。 例如:例如:scanf(%2d%*2d%3d,&num1,&num2); printf(num1=%d,num2=%dn,num1,num2); 假设输入假设输入“123456789”,则系统将读取,则系统将读取“12”并赋值并赋值给给num1;读取;读取“34”、但舍弃掉(、但舍弃掉(“*”的作用);读取的作用);读取“567”并赋值给并赋值给num2。所以,。所以,printf()函数的输出结果为:函数的输出结果为:n

19、um1=12,num2=567。4、注意事项注意事项scanf函数中的函数中的“格式控制字符串格式控制字符串”后面应当是变量地址,后面应当是变量地址,而不应是变量名。而不应是变量名。例如,如果例如,如果a、b为整型变量,则为整型变量,则scanf(%d,%d,a,b);是错误的,应将是错误的,应将“a,b”改为改为“&a,&b”。scanf函数没有计算功能,因此输入的数据只能是常量,而函数没有计算功能,因此输入的数据只能是常量,而不能是表达式。不能是表达式。在输入多个整型数据或实型数据时,可以用一个或若干个空在输入多个整型数据或实型数据时,可以用一个或若干个空格、格、Enter

20、键或制表符(键或制表符(Tab)作为间隔;但在输入多个字符型)作为间隔;但在输入多个字符型数据时,数据之间分隔符和数据时,数据之间分隔符和“转义字符转义字符”都认为是有效字符。例都认为是有效字符。例如:如:scanf(%c%c%c,&c1,&c2,&c3);如输入:如输入:abc 则字符则字符a赋予变量赋予变量c1,字符,字符赋予变量赋予变量c2,字符,字符b赋予变量赋予变量c3,因为,因为%c只要求读入一个字符,后面不需要用只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此空格作为两个字符的间隔,因此作为下一个字符赋予变量作为下一个字符赋予变量c2。输入格式

21、中,除格式说明符之外的普通字符应原样输入。输入格式中,除格式说明符之外的普通字符应原样输入。例如:例如:scanf(x=%d,y=%d,z=%d,&x,&y,&z);应使用以下形式输入:应使用以下形式输入:x=12,y=34,z=56 输入实型数据时,不能规定精度,即没有输入实型数据时,不能规定精度,即没有“%m.n”的的输入格式。输入格式。例如:例如:scanf(%7.2f,&f);这种输入格式是不合法的,不能企图用这样的这种输入格式是不合法的,不能企图用这样的scanf函数并输入以下数据而使函数并输入以下数据而使f的值为的值为12345.67。1234567

22、 在输入数据时,如果遇到以下情况,则认为是该数据输入结束:遇到空格符、换行符或制表符(Tab)。例如:scanf(%d%d%d%d,&i,&j,&k,&m);如果输入:1234则i、j、k、m变量的值分别为1、2、3、4。遇到给定的宽度结束。例如:scanf(%2d,&i);如果输入:1234567 则i变量的值为12。遇到非法字符输入,例如:scanf(%d%c%f,&i,&c1,&f1);如果输入:123x45y.6789则 i的值为123,c1的值为x,f1的值为45.0。若输入的数据与输出的类型不一致,虽然编译能够若输入的

23、数据与输出的类型不一致,虽然编译能够通过,但结果不正确。通过,但结果不正确。【例例2-9】输入数据与输出数据类型不一致的情况。输入数据与输出数据类型不一致的情况。main()int a;printf(input a numbern);scanf(%d,&a);printf(%ld,a); 提高人机交互性建议:为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。例如,将 scanf(num1=%d,num2=%dn,&num1,&num2);改为: printf(num1=); scanf

24、(%d,&num1); printf(num2=); scanf(%d,&num2); scanf,printf,getchar和putchar函数的特点 scanf和getchar函数是输入函数,接收来自键盘的输入数据。 scanf是格式输入函数,可按指定的格式输入任意类型数据;getchar函数是字符输入函数,只能接收单个字符。 printf和putchar函数是输出函数,向显示器屏幕输出数据。 printf是格式输出函数,可按指定格式显示任意类型的数据;putchar是字符显示函数,只能显示单个字符 只使用scanf和printf函数可以在程序中不包含头文件#includ

25、e 使用getchar和putchar函数在程序中一定要包含头文件#include3.4 程序举例 【例 3.4】设圆半径r=1.5,圆柱高h=3,输出圆周长、圆面积、圆球表面积、圆球体积、圆柱体积,要求小数点后面保留两位小数。 解题思路: 利用相关的计算公式来完成问题的求解; 其中:圆周长 l=2*PI*r 圆面积 s=PI*r*r 圆球表面积 sq=4*PI*r*r 圆球体积 vq=4.0/3.0*PI*r*r*r 圆柱体积 vz= PI*r*r*h PI 为符号常量,代表3.1415926;源程序: #include #define PI 3.1415926 main( ) float

26、r,h,l,s,sq,vq,vz; /*变量定义*/ printf(please input r,h:n); /*输入提示信息*/ scanf (%f,%f, &r, &h);/*从键盘输入圆半径r、圆柱高h 的值*/ l=2*PI*r; /*计算圆周长*/ s=PI*r*r; /*计算圆面积*/ sq=4*PI*r*r; /*计算圆球表面积*/ vq=4.0/3.0*PI*r*r*r; /*计算圆球体积*/ vz= PI*r*r*h; /*计算圆柱体积*/ printf(%6.2fn,l); /*输出各计算结果,小数点后面保留两位小数*/ printf(%6.2fn,s); printf(%6.2fn,sq); printf(%6.2fn,vq); printf(%6.2fn,vz); 【例 3.5】编写一个程序,从键盘输入一个小写字母,将其转换为大写字母后输出。 解题思路: 在 C 语言中,字母以其ASCII 码值形式存放在内存中,如65 是大写字母A的ASCII码值。仔细分析ASC

温馨提示

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

评论

0/150

提交评论