第5章用屏幕和键盘交互——简单的输出和输入.ppt

上传人:s****8 文档编号:93912326 上传时间:2023-07-17 格式:PPT 页数:30 大小:152KB
返回 下载 相关 举报
第5章用屏幕和键盘交互——简单的输出和输入.ppt_第1页
第1页 / 共30页
第5章用屏幕和键盘交互——简单的输出和输入.ppt_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《第5章用屏幕和键盘交互——简单的输出和输入.ppt》由会员分享,可在线阅读,更多相关《第5章用屏幕和键盘交互——简单的输出和输入.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章 用屏幕和键盘交互简单的输出和输入 计算机主要功能就是获取输入,根据输入的数据,计算处理后,输出结果。类似的过程,人类也是一样的处理流程。计算机的输入,最常见的是通过键盘和鼠标,输出,最常见的是显示器。本章介绍如何显示字符和字符串到显示器屏幕,以及如何接受用户的键盘输入。5.1 输入处理输出:这就是程序 工厂的生产车间生产出来的产品是最终的输出。比如某药厂生产的保健药,号称是经历了80多道工序。这些工序,当然是从输入原材料开始,每道工序处理一件事情,最终出来包装精美的保健药品。第一道工序,清洗,输入的是刚刚采摘下来的药材,有不少的烂叶子、烂根,清洗工序处理这些东西,处理完毕后,输出来的是

2、干净的有用的药材。第二道工序,榨汁,输入的是干净有用的药材,榨汁工序处理时,添加纯净水,榨出药汁。接着说萃取工序,将药汁中的有用的部分萃取出来80多道工序就这样一一处理完毕,保健药就制作完毕。从进场时的原材料,到最终出产的保健药,就是一个“输入处理输出”的过程。深入到药厂中的处理部分,80多道工序,每个工序也是一个“输入处理输出”的过程。没有输入,就没有处理的素材,也就没有输出。5.2 向屏幕输出printf函数详解 printf函数已经接触过,功能是在电脑屏幕上按照指定的格式显示数据。printf其中的f代表单词format,就是格式化的意思。所谓格式化,是该函数预先给程序员定义了一批显示格

3、式,如对齐、显示宽度、按什么类型显示等,程序员可以选择其中的某些格式,遵守这些格式,printf函数就可以按照指定的格式来显示数据了。注意:printf函数只能在控制台程序中使用,在Windows系统中,有窗口界面的程序无法通过printf函数在窗口中显示数据。5.2.1 printf函数的一般形式 printf函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中。printf函数的一般格式是:printf(“格式控制字符串”,输出列表);(1)格式控制字符串(2)输出列表 格式控制字符串后跟着的就是输出列表,注意输出列表和格式控制字符串之间的逗号。输出列表可以有多个数据,用

4、逗号“,”分隔。5.2.2 格式字符串一般形式 格式字符串的一般形式为:%标志输出最小宽度.精度长度转换说明符 其中方括号中的项为可选项,即可根据需要加上,也可以不加。转换说明符用以表示输出数据的类型,其格式符和意义如所示:5.2.3%d十进制形式输出带符号整数 用得最多的格式符。以十进制形式输出带符号整数,正数不输出符号。printf(“%d”,10);输出结果为:10 printf(“%d”,0 x10);输出结果为:16 因为0 x10是十六进制,转换成十进制就是16了。printf(“%d”,0 xffffffff);输出结果为:-15.2.4%最小宽度d格式符 在d前,可以添加数字,

5、表示输出最小宽度。比如%4d,表示显示一个整数,最小占用4个字符的宽度,如果这个数只有3位,则在前面用空格填充。如果这个数的位数大于4,则按实际位数输出。如:Int x=-1,y=100001;Printf(“%4d,%4d”,x,y);输出结果:-1,100001 Int x=-100000,y=20000,z=30000;Printf(“%4d,%4d,%4d”,x,y,z);结果:-100000,20000,30000;5.2.5%ld格式符以长整型方式输出 以长整型方式输出。如果后面的数据是一个长整型,而格式符是%d,则格式符和数据的类型不匹配,会丢失数据。当然一般在现在的计算机上,i

6、nt和long数据长度一样,所以出错的可能性比较低。但是记住,对long型数据,需要使用%ld,这样无论在什么机器上编译运行都不会错。一个位数小于long的整型数据,都可以用ld的形式输出。同样地,也可以对长整型输出格式指定最新宽度。如%10ld。long x=0 x10001;int y=-200;printf(“%8ld,%10ld”,x,y);输出为:65537,-200 需要注意的是,%d系列的格式符要求后面的数据都必须是整型数据。如果数据为实型数据,则显示错误的值。如:long x=0 x10001;float y=-200;printf(%8ld,%10ld,x,y);输出结果:6

7、5537,05.2.6%o格式符以八进制形式输出整数 O是octal(八进制的)的第一个字母。%o是以八进制形式输出整数。注意因为是将内存单元中的数值按八进制的形式输出,所以不区分符号位,也就是将符号位也当作八进制数的一部分。可以看作是将内存中保存的二进制数据按八进制的形式转换后打印出来。例如-1在内存中以补码形式存放,二进制为1111 1111 1111 1111 1111 1111 1111 1111。虽然最高为1,表示负号,但是转换成八进制表示,就是37777777777。如果用4个字节来存储整数,可以说-1就是等于0 xffffffff。因为它们在内存中的形式一模一样。int x=-1

8、;printf(“n%d,%o”,x,x);输出结果-1,377777777775.2.7%x格式符以十六进制的形式输出整数%x格式符是以十六进制的形式输出整数。同八进制一样也不会显示负号,只是将内存中的二进制数据转换成十六进制显示出来。一般经常用十六进制查看内存中的数据。至于得到数据后如何解释,则根据情况不同有不同的解释了。如:int x=-1;printf(“%d,%o,%x”,x,x,x);输出结果:-1,37777777777,ffffffff 通过显示出来的结果,可以看出-1在内存中的表示用十六进制表示就是ffffffff。对于无符号型整数,也可以用%x和%o输出。同样地,也是将内存

9、中二进制数据转换成十六进制后输出来。如:unsigned int x=0 xffffffff;printf(%x,%d,x,x);输出结果:ffffffff,-15.2.8%u格式符以十进制形式输出unsigned型数据%u格式符以十进制形式输出unsigned型数据,即无符号数。在输出的时候,printf函数把数据当作无符号型数据,而不管这个变量当初声明的时候是什么类型。也就是先取变量的值,从内存中把数据的二进制数据取出来,然后将数据按照unsigned形式显示出来。一个有符号整数如int型,也可以用%u的格式输出。如:int x=-1;printf(%u,x);输出结果:429496729

10、5 变量x在内存中的值是0 xffffffff。%u格式控制符表示,忽视这个数据的具体类型,按照指定的无符号格式解释,0 xffffffff用十进制表示,就是4294967295。unsigned型数据也可以用%x和%o格式输出。如:unsigned int x=-1;printf(%x,%d,x,x);输出结果:ffffffff,-15.2.9%c格式符%c格式符用来输出一个字符。如:char c=c;printf(“%c”,c);输出结果:c 这里出现了好几个c,请读者注意分辨:char c=c;第一个c,是变量名,表示这个变量的名字是c。c,是一个字符常量,在内存中用ASCII码99表示

11、。这一行是声明了一个变量c,并且给该变量赋初值为c。变量c中内存中的数值是99,因为存储的是c的ASCII码。printf(“%c”,c);第一个c,是和%一起,%c,表示的是一个格式控制字符,意思是把后面的数据用字符的形式显示出来。逗号后的那个c,是一个字符变量。因为这个变量中内存中存储的是c的ASCII码。所以按照%c的方式打印,则打印出99对应的字符为c,结果就打印出来c。printf(“%c”,99);结果:c5.2.10%s格式符输出字符串%s格式符用来输出字符串。后面的输出列表中的数据必须是字符串。用%s格式输出字符串,可以在%和s之间,添加其他的一些辅助格式,如最小宽度,对齐方式

12、等。(1)%s格式,最简单的情况,如:printf(“%s”,”hello world”);输出结果:hello world(2)%ms 同样地,也可以指定字符串占用的最小宽度,通过%ms的方式,其中的m是一个整数,指明这个字符串的最小宽度。如果字符串本身的宽度不足指定的最小宽度,则前面用空格补齐。如hello world只占用11个字符宽度,但是如果指定宽度为20,则会补在前面9个空格:printf(“%20s”,”hello world”);输出结果:hello world(3)%-ms格式%-ms中的m,也是指定最小宽度,是一个整数;“-”表示是左对齐,就是如果字符串长度比指定的最小宽度

13、还小,则在右边补空格,不像%ms那样子左边补空格。(4)%m.ns%m.ns中的m,还是指定最小宽度,而n,是指显示的时候,只显示字符串中前n个字符。如hello world前3个字符是hel,前7个字符是hello w。如:printf(“%20.7s”,”how are you?”);显示结果 how are(5)%-m.ns%-m.ns中的“-”,同样是指左对齐,如果显示的字符串宽度小于指定的最小宽度,则在右边补空格。如:printf(“%-20.70s|-”,”how are you?”);输出结果:how are you?|-5.2.11%f格式符输出实型数据%f格式符,用来输出实型

14、数据,包括单精度和双精度数据。以小数形式输出。(1)%f%f没有指定整数和小数的位数,由系统自动指定,整数部分全部如数输出,但只输出6位的小数。注意,即使实际的数据没有6位小数,输出的时候也会有6位,如:float x=21111111.11;float y=32221111.22;printf(%f,x+y);输出结果:53332224.000000(2)%m.nf%m.nf中的m指示整个实数,包括整数、小数点和小数共只能占用m个字符的宽度。如果实际占用的宽度小于m,则在左边补空格。n是指定实数输出来时,只输出n位小数。如:double x=111.11;double y=222.22;pr

15、intf(%20.1f,x+y);输出结果:333.3(3)%-m.nf%-m.nf和%m.nf基本相同,只是在如皋实际输出的数据宽度小于指定的m宽度,在右边补空格。如:float x=123.456;printf(%f-%10f-%10.2f-%.2f-%-10.2f,x,x,x,x,x);输出结果:123.456001-123.456001-123.46-123.46-123.465.2.12%e格式符以指数形式输出实数%e格式符是以指数形式输出实数。所谓指数形式就是类似1.234e+002之类的形式。(1)%e 不指定输出来的数据在屏幕中所占的字符个数宽度,也不指定数字部分和小数部分位数

16、,由系统自动指定,给出6位小数,指数5位,如e+002,其中e占一位,+或者-占一位,指数占3位。数值按标准化指数形式输出,所谓标准化指数形式是指整数部分有且仅有一位非零数字,如:float x=123.456;printf(%e,x);输出结果:1.234560e+002(2)%m.ne、%-m.ne 同样地,可以指定整个数据输出来占用的字符个数宽度,用m指定,可以通过n来指定数据的数字部分的小数位数。如:float x=1234567890123456789.456;printf(%e-%10e-%10.2e-%20.10e,x,x,x,x);输出结果:1.234568e+018-1.23

17、4568e+018-1.23e+018-1.2345679396e+0185.2.13%g格式符自动现有%f或者%e形式输出%g格式符用来输出实数。%g根据实数值的大小,自动选择%f格式或者%e格式,选择标准为输出时占用宽度较小的一种。且不输出没有意义的0,如:float x=1234567890123456789.456;printf(%e-%f-%g,x,x,x);输出结果:1.234568e+018-1234567939550609400.000000-1.23457e+0185.2.14 printf函数小结 printf函数的重点在格式字符串上。格式字符串的一般形式为:%标志输出最小

18、宽度.精度长度转换说明符 其中的标志包括对齐标志,“-”,如果使用了“-”,表示左对齐,通过补空格使得字符串输出对齐。标志还可以使用数字0,表示在输出数字的时候,可以在左边填充0。如:int x=123;printf(%010d-,x);输出结果:0000000123-输出最小宽度指示了输出后占用的字符个数。精度对于实数来说,指示小数位数;对字符串来说,指示了截取的字符个数。长度用l表示,主要显示长整型数据。5.3 字符输出putchar和字符串输出puts 有些时候,仅仅为了打印一个字符在显示器屏幕上,此时动用功能强大的printf函数,则颇有高射炮打蚊子之嫌,C提供了一个库函数putcha

19、r来完成这个简单的任务。而有些时候又仅仅是为了输出一个字符串,使用printf函数也稍显麻烦,可以使用C提供的一个库函数puts函数。5.3.1 putchar函数(字符输出函数)putchar 函数是字符输出函数,其功能是在显示器上打印单个字符。putchar函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中。putchar函数的一般格式是:putchar(字符数据);其中的putchar是函数名称。(1)字符数据可以是一个字符型变量,如:char c_var=a;putchar(c_var);(2)字符数据也可以是一个字符常量,如:putchar(a);输出结果:a(3

20、)字符数据还可以是一个整数。整数可以是十进制整数,如:putchar(65);输出结果:A(4)字符数据还可以是一个表达式,只要结果是255以内的整数即可。如:putchar(a+25);输出结果:z(5)字符数据可以是转义字符。如:putchar(n);结果输出一个换行。putchar(0101);5.3.2 puts函数(字符串输出函数)puts函数功能非常单一,在显示器屏幕上输出一个字符串,并换行。一般形式:puts(字符串);如:puts(“hello world”);输出结果:hello world I5.4 接收键盘输入scanf函数详解 同printf函数一样,scanf函数名称

21、中的f代表单词format,就是格式化的意思。所谓格式化,是该函数预先给程序员定义了一批输入格式,程序员可以选择其中的某些格式,遵守这些格式,scanf函数就可以按照指定的格式来接收键盘的输入数据了。scanf函数只能在控制台程序中使用,有窗口的界面程序无法通过scanf接收按键。当控制台中出现闪烁的光标时,表示程序在等待用户输入数据。在控制台程序中,一般以回车键代表数据输入完毕,下达命令,指示程序开始工作。scanf函数可以接收多个任意类型的数据。5.4.1 一般形式 scanf函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中声明。scanf函数的一般形式为:scanf

22、(“格式控制字符串”,地址表列);其中,格式控制字符串同printf一样,也是用%引导的一批格式字符。地址表列中给出各变量的地址。先看:代码 演示scanf函数简单使用Scanf/*本程序演示scanf函数的简单使用*/#include void main(void)int i_number=0;printf(nPlease input a number:);scanf(%d,&i_number);printf(nI got the number you inputed,it is%d,i_number);5.4.2 scanf函数工作原理 现在对进行分析:int i_number=0;程序首

23、先声明变量i_number为int型,并赋初值为0。此时读者心里应该马上意识到,i_number是一个变量名称,代表了一个整型变量,将在内存中占据4个字节的存储单元,变量的值存储在这4个字节的内存单元中。该变量有一个地址,具体地址不用太在意,由计算机管理,程序可以用求地址运算符&来得到。此时,变量i_number在内存中,如所示:5.4.3 多数据输入分隔规则 看看输入多个数据的情况,如所示:代码 演示scanf函数,输入多个数据Scanf2/*本程序演示scanf函数,输入多个数据*/#include void main(void)int i_var1=0;int i_var2=0;int

24、i_var3=0;printf(nPlease input 3 numbers,separate by space:);scanf(%d%d%d,&i_var1,&i_var2,&i_var3);printf(nYour inputed is%d,%d,%d,i_var1,i_var2,i_var3);5.4.4 格式字符 scanf函数的格式字符串由以下三类字符组成:(1)格式符 和printf函数类似,scanf函数的格式字符串以%开始,以一个格式字符结束,中间可以插入附加的字符。格式符告诉了scanf函数该读取什么样的数据。(2)空白符 空白符可以是空格(space,用空格键输入)、制表

25、符(tab,用Tab键输入)和新行符(newline,用回车键输入),或者它们的组合,如:都是表示空白。(3)非空白符 除去格式说明符合空白符之外,就是非空白符。非空白符在用户输入的时候,也必须一并输入。非空白符使scanf()在缓冲区中读一个匹配的字符并将这个字符忽略。例如,%d,%d使scanf()先读入一个整数,接着必须要读入一个逗号,读入到逗号后,表示格式匹配,将读入的逗号丢弃,而不像读入的整数存储到某个内存空间。读入逗号后,接着读入另一个整数。如发现不能匹配格式字符串,比如没有读到逗号,scanf()返回,读入失败。5.4.5 scanf使用说明 下面对scanf函数的使用进行解说。

26、(1)标准C(本书没有涉及到C99)在scanf中部使用%u格式符。对unsigned类型的数据,以%d、%o、%x格式说明。(2)可以指定输入的数据所占据的字符个数,scanf函数自动按照指示截取所需长度的数据。如:int i_width,i_length;scanf(%3d%3d,&i_width,&i_length);用户输入:1234567(3)%后面的*格式符,用来表示在解析时,将读入的数据忽略不赋给任何变量。如:int i_width,i_length;scanf(“%d%*d%d”,&i_width,&i_length);(4)输入数据时不能指定精度。如:float f_radi

27、o;scanf(“%7.2f”,&f_raido);输入 12345675.4.6 scanf函数使用注意 在使用scanf函数时,有些需要注意的地方。(1)注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。所以在写代码时千万要记住&符号。(2)如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。否则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。(3)在用%c格式符时,空格字符和转义字符都被当作有效字符输入,如:char c1,c2

28、,c3;scanf(%c%c%c,&c1,&c2,&c3);printf(n%c%c%c,c1,c2,c3);输入:(4)以回车作为下达开始解析命令。整个输入以回车结束。如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。(5)scanf解析数据,下列情况认为解析出来一个数据:读入非字符型数据时,遇到空白字符。有宽度指示时,读入到相应的宽度。如%3d,则只解析3个数字即认为读入这个整数完毕。5.5 字符输入函数getchar 有些时候,仅仅为了从键盘得到一个字符输入,此时动用功能强大的scanf函数,则同样有高射炮打蚊子之嫌,C提供了一个库函数getchar来完成这个简单的任务。这个函数和前面介绍的putchar函数刚好相反。getchar 函数是得到字符输入函数,其功能是得到用户输入的一个字符。getchar函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中。getchar函数的一般格式是:char ch;ch=getchar();用户输入的字符就赋给了ch变量。如:char ch;ch=getchar();printf(“%c”,ch);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁