《c语言健盘输入与屏幕输出.ppt》由会员分享,可在线阅读,更多相关《c语言健盘输入与屏幕输出.ppt(38页珍藏版)》请在三一办公上搜索。
1、本章学习内容,字符输出函数putchar()字符输入函数getchar()数据的格式化输出函数printf()数据的格式化输入函数scanf(),第4章 键盘输入和屏幕输出,4.1单个字符的输入/输出,通过调用标准库函数来实现#include 字符输出函数putchar(ch)输出一个字符ch字符输入函数getchar()无参数函数值为从输入设备接收的字符,【例4.1】大小写英文字母转换,Press a key and then press Enter:Bb,printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。printf()函数的一般格式
2、:printf(格式控制字符串,输出项表);,4.2数据的格式化屏幕输出,1格式控制字符串。可以包含以下三种字符:(1)输出项的格式说明。格式说明的一般形式如下:%FlagsWidth.prech|L格式指示符,Flags为选择的标志字符。常用的有:-:为左对齐,否则右对齐+:正数输出+,负数输出-空格:正数输出空格,负数输出-,Width为宽度指示符。用十进制数来设置输出值的最少输出位数。数据宽度大于Width,按实际宽度输出 数据宽度小于Width时,补空格,.prec为精度指示符。用小数点加十进制正整数构成,用来限制输出数的精度。,h|L为长度修饰符:h短整型数据的值 L长整型数据的值,
3、格式指示符:用来进行格式转换,(2)转义字符(3)普通字符除格式指示符和转义字符之外的其它字符。格式字符串中的普通字符,原样输出。2输出项表 输出项表是可选的。如果要输出的数据不止1个,相邻2个之间用逗号分开。下面的printf()函数都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%f b=%5dn,a,b);必须强调:“格式字符串”中的格式指示符,必须与“输出项表”中、输出项的数据类型一致,否则会引起输出错误。,【例4.2】大小写英文字母转换,Press a key and then press Enter:B
4、b,98,printf()的格式修饰符,Format for float:%f General format:%.f,Example:printf(Value is:%10.4f,32.6784728);,Value is:32.6785,printf()的格式修饰符,Example:printf(Value is:%10f,32.6784728);,Value is:32.678473,Example:printf(Value is:%.3f,32.6784728);,Value is:32.678,printf()的格式修饰符,Input r:5.3printf WITHOUT width
5、 or precision specifications:circumference=33.300854,area=88.247263printf WITH width and precision specifications:circumference=33.30,area=88.25,【例4.3】计算圆的周长和面积,在程序中给变量提供数据,可以用赋值语句,也可以用输入函数。scanf()函数的作用:通过键盘输入,同时提供一个或多个任意类型的数据。scanf()函数的一般格式:scanf(“格式控制字符串”,输入项首地址表);1、格式控制字符串:包含3种类型的字符(1)格式说明:格式说明的一
6、般形式为:%*宽度 h|l 类型字符*本输入项在读入后不赋给相应的变量 宽度n 该项输入数据所占列数为n。,4.3数据的格式化键盘输入,换句话说,读取输入数据中相应的n位,但按需要的位数赋给相应的变量,多余部分被舍弃。例如,scanf(%3c%3c,假设输入“1234567”,则系统将读取12赋给变量ch1;将读取345赋给变量ch2,所以printf()函数的输出结果为:ch1=12,ch2=345。类型修饰符h、l。其含义与printf()中的一样,分别为短整型和长整型(双精度)。,格式指示符 格式指示符是必须的,表示输入后转换的数据类型。与printf函数格式中的格式指示符相同。,(2)
7、空白字符:(空格、Tab键和回车键):作为相邻2个输入数据的缺省分隔符;(3)非空白字符(又称普通字符):普通字符不是显示的而是规定在输入有效数据时,必须原样一起输入的字符。如:scanf(“ch=%d,f=%fn,若要使ch值为3,f的值为56.6,则应怎样输入?,2、输入项首地址表由若干个表示内存首地址的项组成,相邻2个项之间,用逗号分开。内存首地址,可以是变量的首地址,也可以是字符数组名或指针变量。变量首地址的表示方法:&变量名其中“&”是地址运算符。“&ch”是指变量ch在内存中的首地址,其意思是将整数3存放到以&ch为内存地址的内存空间中。,#include main()int a,
8、b;printf(Please input a and b:);scanf(%2d%*2d%2d,Please input a and b:,a=12,b=56,a+b=68,123456,跳过一个输入项,输入数据的格式控制,#include main()int a,b;scanf(%d%d,问题1:当要求程序输出结果为 a=12,b=34时,用户应该如何输入数据?,12 34,输入数据的格式控制例4.4,#include main()int a,b;scanf(%d%d,问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为:12,34时,应修改程序中的哪条语句?怎样修改?,输入数据的格
9、式控制例4.4,#include main()int a,b;scanf(%d%d,问题3:语句scanf(%d%d,时,用户应该如何输入数据?,a=12,b=34,输入数据的格式控制例4.4,#include main()int a,b;scanf(%d%d,问题4:限定用户输入数据为以下格式 1234 同时要求程序输出结果为a=12,b=34,%2d%2d,输入数据的格式控制例4.4,#include main()int a,b;scanf(%d%d,问题5:限定用户输入数据为以下格式1234 同时要求程序输出结果为a=12,b=34,%d,b=%d,输入数据的格式控制例4.4,#incl
10、ude main()int a,b;scanf(%d%d,问题6:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其他)作为分隔符进行数据的输入,输入数据的格式控制例4.4,#include main()int a,b;scanf(%d%d,问题7:输入123456时程序的输出结果是什么?,输入数据的格式控制例4.4,a=12,b=56,#include main()int a,b;scanf(%d%d,问题8:如果用户输入了非法字符,例如输入了12 3a,那么程序运行结果如何?,输入数据的格式控制例4.4,12 3a a=12,b=3,#include main()int a,b;
11、scanf(%d%d,问题9:如果用户输入的是123a,那么结果又会如何呢?,输入数据的格式控制例4.4,123a a=123,b=-858993460,#include main()int a,b;scanf(%d%d,问题10:如果程序第5行语句修改为.,那么结果又会如何呢?,输入数据的格式控制例4.4,#include main()int data1,data2;char op;printf(Please enter the expression data1+data2n);scanf(%d%c%d,Please enter the expression data1+data2,第1次测
12、试,12+3,12 4199288=4199300,C格式符的问题及解决例4.5,#include main()int data1,data2;char op;printf(Please enter the expression data1+data2n);scanf(%d%c%d,Please enter the expression data1+data2,第2次测试,12 3,12 3=15,C格式符的问题及解决例4.5,#include main()int data1,data2;char op;printf(Please enter the expression data1+data
13、2n);scanf(%d%c%d,Please enter the expression data1+data2,第3次测试,12+3,12+3=15,C格式符的问题及解决例4.5,#include main()int a;char b;float c;printf(Please input an integer:);scanf(%d,Please input an integer:,希望得到的运行结果,12,Please input an character:,a,Please input a float number:,3.5,integer:12,character:a,float nu
14、mber:3.500000,C格式符的问题及解决例4.6,#include main()int a;char b;float c;printf(Please input an integer:);scanf(%d,Please input an integer:,结果好像很奇怪呀!,12,Please input an character:,character:,Please input a float number:,3.5,integer:12,float number:3.500000,C格式符的问题及解决例4.6,#include main()int a;char b;float c;
15、printf(Please input an integer:);scanf(%d,Please input an integer:,程序修改后得到的运行结果,12,Please input an character:,a,Please input a float number:,3.5,integer:12,character:a,float number:3.500000,C格式符的问题及解决例4.6,#include main()int a;char b;float c;printf(Please input an integer:);scanf(%d,C格式符的问题及解决例4.6,使用空白字符(空格属于空白字符)会使scanf()函数在读操作中略去输入中的一个或多个空白字符,#include main()int data1,data2;char op;printf(Please enter the expression data1+data2n);scanf(%d%c%d,12+3,12+3,12+3,再回头来看例4.5 如何以任意分隔符输入加法算式?,格式输入函数常见错误,scanf(%d,%fn,几点忠告不要拘泥于细节不要死记硬背在使用中慢慢掌握,注意!,Questions and answers,