C语言知识学习数据的输入输出.ppt

上传人:小** 文档编号:3687452 上传时间:2020-10-16 格式:PPT 页数:48 大小:182.02KB
返回 下载 相关 举报
C语言知识学习数据的输入输出.ppt_第1页
第1页 / 共48页
C语言知识学习数据的输入输出.ppt_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《C语言知识学习数据的输入输出.ppt》由会员分享,可在线阅读,更多相关《C语言知识学习数据的输入输出.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章 数据的输入与输出(2),3.4.3 字符输入输出函数 3.4.4 格式化输入输出函数的一般使用,数据输入输出的概念,所谓输入输出是以计算机主机为主体而言的。 输出:从计算机向外部输出设备(显示器,打印机)输出数据。输入:从输入设备(键盘,鼠标,扫描仪)向计算机输入数据 C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的 例如: 字符输入函数:getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数:gets 字符串输出函数:puts,3.4.3字符输入输出函数,putchar(x)函数:有参数 例:pu

2、tchar(ch); putchar(A); putchar(65); 每句只能输出一个字符数据。 getchar( )函数:无参数 从键盘读入一个字符(空格回车都算)。 程序执行到 getchar函数时,等待输入字符,直到按回车才结束,回车前的所有输入字符都将逐个显示在屏幕上。但只有第一个字符被getchar函数接收。 c=getchar();按回车符才可送出 当使用这两个函数时, 在程序的开头一定要加上: #include ,字符输入输出函数,getch() 函数: 无参数。 getch()的作用与getchar类似,都是从标准输入设备(通常指键盘)读入一个字符。其调用形式分别为: get

3、ch( ); 但getch函数读入的字符不会回显在屏幕上, 它与getchar函数不同之处在于:getch函数不必输入回车才结束, 只要输入任意一个键, 该字符立即被接收, 程序继续执行下一条语句。利用这一特点, 这两个函数经常用于交互输入的过程中实现暂停功能, 或直接查看程序运行结果。,字符输入输出函数,补充例题 #include main() char ch; ch=getchar(); putchar(ch); putchar(n); printf(%c,%dn,ch,ch); getch(); /* 等待按任一键程序结束 */ ,当屏幕输入12345回车时屏幕输出的结果是什么?,此语句

4、可否用:scanf(“%c“,例:输出单个字符 #include stdio.h main() char a,b,c; a=A; b=B; c=C; clrscr(); putchar(a);putchar(b);putchar(c);putchar(n); putchar(a);putchar(n);putchar(b);putchar(n);putchar(c); ,每次只能输出一个字符putchar( ); 输出空格,运行结果:ABC A B C,字符输入输出函数,putchar (101); A,例 输入单个字符。#include stdio.hmain() char c; c=get

5、char(); putchar(c); putchar(n);,字符输入输出函数,3.4.4格式输入函数与格式输出函数,printf函数是格式化输出函数, 用于向标准输出设备(通常指定为屏幕)按规定格式输出数据。 printf函数的调用格式为: printf(格式控制字符串, 输出列表); 其中格式化字符串包括两部分内容:一是普通字符按原样输出,转义字符输出它所代表的字符;二是“输出格式说明”, 以“%”开始,后跟格式字符, 用来指定输出数据的格式。如 %d 输出int型数据 输出列表是若干个需要输出的数据项, 称为函数的参数, 可以是常量、变量或表达式, 各参数之间用,分开。,格式化输出函数

6、printf(),printf函数的输出格式说明 每个格式说明都必须用%开头,以一个格式字符作为结束,在此之间根据需要可以插入宽度说明、长度修饰符l和L等。 (1)格式字符:格式字符用于规定输出不同的数据类型,格式字符和它们的作用如下表,可详见附录D。,格式化输出函数printf(),格式化输出函数printf(),(2) 长度修饰符: 长度修饰符加在%和格式字符之间。,从上表可知:双精度实型数据的输出不要用%lf, 只要用%f即可。但长双精度实型数据的输出必须加长度修饰符L, 例如%Lf、%Le等。,(3)#修饰符: 使用%#o、%#x ,在输出的八进制或十六进制前加前导“0”。 例如: m

7、ain() unsigned c=65535; printf(%#on,c); printf(%#xn,c); ,格式化输出函数printf(),输出结果如下: 0177777 0 xffff,格式化输出函数printf(),(4) 在输出的数字前加+号 使用%+格式字符 (如%+d、%+f等), 可在输出的数字前加+号, 例如 printf(%+d,%+10.2f,123,12345.678); 输出结果如下: +123, +12345.68。 例:int x=1234,y=123,z=12; printf(%4d+%3d+%2d, x, y, z) 输出结果:1234+123+12,格式化

8、输出函数printf(),(5) 输出数据所占的宽度 整型数据的输出宽度 %md、%mu、%mo、%mx, 按m宽度输出数据,不足m个位数,左补空格(数据右对齐)。 实型数据的输出宽度 %m.nf、%m.ne、%m.ng,数据输出的总宽占m列,其中小数部分占n列, 若数据自身宽度小于m列,则左补空格。 字符串的输出宽度 %ms 输出宽度占m列,若字符串宽度小于m列,左补空格,若字符串宽度大于m列则原样输出字串。,整型数据的输出宽度,main() int a=34,b=12345; clrscr(); printf(%dn,a); printf(%10dn,a); printf(%-10dn,a

9、); printf(%4dn,b); ,实型数据的输出宽度,main() float a=123.456; clrscr(); printf(a=%fn,a); printf(a=%4fn,a); printf(a=%15fn,a); printf(a=%.2fn,a); printf(a=%.5fn,a); ,格式化输出函数printf(), 字符数据的输出宽度 %mc输出宽度占m列, 左补m-1个空格。在输出宽度m前加一个负号,则右补m-1个空格。表2.11举例说明字符型数据的输出。,格式化输出函数printf(),格式符。用来输出十进制整数。 几种用法: :按十进制整型数据的实际长度输出

10、。 :为指定的输出字段的宽度。如果数据的位数小于, 则左端补以空格,若大于,则按实际位数输出。 例: (,); 若,则输出结果为 , :输出长整型数据。 例: ;/* 定义a为长整型变量*/ (,); 输出结果为,格式化输出函数printf(),(2) 格式符。以八进制整数形式输出。 输出的数值不带符号,符号位也一起作为八进制数的一部分输出。 例:int a=-1; printf(%d,%o,a,a); 在内存单元中的存放形式(以补码形式存放)如下: 1111111111111111 输出为: , 不会输出带负号的八进制整数。对长整数(型)可以 用“”格式输出。还可以指定字段宽度, 例:(,)

11、; 输出为: 177777。 (数字前有2个空格),格式化输出函数printf(),(3)格式符。以十六进制数形式输出整数。同样不会出 现负的十六进制数。 例: ; (,); 输出结果为: ffff, 可以用“”输出长整型数,也可以指定输出字段的宽度 例: “” 输出为: ffff。 (数字前有8个空格),格式化输出函数printf(),(4)格式符,用来输出型数据. 一个有符号整数(型)也可以用格式输出; 一个型数据也可以用格式输出。 型数据也可用或格式输出。 (5)格式符,用来输出一个字符。 如:d; (,d); 输出字符. 一个整数,只要它的值在范围内,可以用“” 使之按字符形式输出,在

12、输出前,系统会将该整数作为ASCII码 转换成相应的字符;一个字符数据也可以用整数形式输出。,格式化输出函数printf(),例 无符号数据的输出。 #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); ,运行结果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534,格式化输出函数printf(),例:字符数据的输出 #include main() char c=a; int i=97;

13、 clrscr(); printf(%c,%dn,c,c); printf(%c,%dn,i,i); getch(); ,运行结果:a,97a,97,格式化输出函数printf(),(6)s格式符 输出字符串. 。例如: (,) 输出字符串“”(不包括双引号)。 %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长 小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m. ns,输出占m列,只取字符串中左端n个字符,输出在m列的 右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格,若nm,m自 动取n值。,main() clrscr(); prin

14、tf(*%s*n , china); printf(*%8s*n , china); printf(*%-8s*n , china“); printf(*%5.3s*n , china“); printf(*%7.2s*n , china“); printf(*%.4s*n , china“); ,运行结果: *china* * china* *china * * chi* * ch* *chin*,格式化输出函数printf(),(7)格式符。用来以小数形式输出实数(包括单双精度) 有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度,使整数 部分全部输出,并输出位小数。应当注意,在输

15、出的数字中 并非全部数字都是有效数字。单精度实数的有效位数一般为位。 .。指定输出的数据共占列,其中有位小数。如果 数值长度小于,则左端补空格。 .与.基本相同,只是使输出的数值向左端 靠,右端补空格。,格式化输出函数printf(),例:输出单精度有效位数 #include stdio.h main() float x,y; x=111111.111; y=222222.222; clrscr(); printf(%f,x+y); ,运行结果: 333333.328125,格式化输出函数printf(),例:输出双精度有效位数 #include stdio.h main() float x,

16、y; x=1111111111111.111111111; y=2222222222222.222222222; clrscr(); printf(%f,x+y); ,运行结果: 3333333333333.333010,double x,y;,格式化输出函数printf(),例 输出实数时指定小数位数。#include stdio.hmain() float a=123.456; clrscr(); printf(*%f*,*%10f*,*%10.2f*n,a,a,a); printf(*%-10.2f*,*%.2f*n,a,a);,运行结果:*123.456001* *123.456001

17、* * 123.46* *123.46 * *123.46*,main() float a=123.456; clrscr(); printf(a=%en,a); printf(a=%10en,a); printf(a=%10.2en,a); printf(a=%-10.2en,a); printf(a=%.2en,a); ,(8)格式符,以指数形式输出实数,格式化输出函数printf(),格式化输出函数printf(),(9)格式符,用来输出实数. 它根据数值的大小,自动选格式或格式(选择输出时占宽度 较小的一种),且不输出无意义的零。 例:若a=123.456,则 printf(%f,a)

18、; 123.456001 printf(%g,a); 123.456,格式化输出函数printf(),(二)调用printf函数的注意事项 1、格式说明与输出项从左到右,类型必须一一对应,若类型不匹配,系统不会给错误提示,#include stdio.h main() int a=34; float b=5.3; clrscr(); printf(%d,%dn,a,b); ,运行结果: 34,0 0是错误,系统不给提示,格式化输出函数printf(),2、格式说明与输出项个数相同,若不同,格式说明多,输出不定值;输出项多无用; printf(“%d %f”,a); 左右两侧必须匹配,而且个数相

19、同 3、除格式说明外,其它合法字符“原样输出”; 4、如需要输出%,则用两个连续的“%”输出,main() int a=34; float b=5.3; clrscr(); printf(%dn,a); ,运行结果: %d a 不起作用,格式化输入函数scanf(),scanf函数的功能是从标准输入流中按指定格式接收输入的数据; scanf函数的调用格式为: scanf(格式控制字符串, 地址列表); 格式控制字符串同printf 地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址,格式化输入函数scanf(),例:用scanf函数输入数据 #include stdio.h

20、main() int a,b,c; clrscr(); scanf(%d%d%d, ,a在内存中的地址 clrscr(); printf(“input:a,b,cn“); scanf(%d%d%d,scanf(“input:a,b,c:%d%d%d,格式化输入函数scanf(),说明: 1、TC环境下,输入long整数时,用%ld;输入double时,用lf; 2、格式说明的类型和输入项类型,应该一一匹配; float a;scanf(“%d”, 不合法,格式化输入函数scanf(),4、在用“”格式输入字符时,无需间隔符,在这里,回车、Tab、空格字符和“转义字符”都作为有效字符输入,#in

21、clude stdio.h main() char a,b,c; clrscr(); printf(input:n); scanf(%c%c%c, ,#include stdio.h main() char a,b,c; printf(input:n); scanf(%c,%c, %c, ,键盘输入:abc,键盘输入:a, b, c,格式化输入函数scanf(),例:以下程序的运行结果是什么?,#include stdio.h main() char c1,c2; int a,b; clrscr(); scanf(%d%c%d%c, ,键盘输入:1 x 2 y 会是什么结果?,正确输入:1x

22、2y,5、在格式输入串中,格式说明符的个数应该与输入项的个数相同,若格式符个数少于输入项,scanf函数按格式符的项目结束输入,多余的输入项没有得到新的数据;若格式符的个数多于输入项,scanf函数按输入项的数据结束输入,多余的格式符不起作用;,格式化输入函数scanf(),main() int a,b,k,i; clrscr(); scanf(%d%d, ,6、当输入数据少于输入项时,程序等待输入,直到满足要求为止,当输入的数据多于输入项时,多余数据并不消失,而是留做下一个输入操作的输入数据;,格式化输入函数scanf(),输入时个数不够,会到下一行取,太多个则放在缓冲区,如 scanf(%

23、d%d, 输入4 后, 程序运行结果是:a=1,b=2,k=5852,i=3 printf与scanf对实数处理时的区别:,格式化输入函数scanf(),格式化输入函数scanf(),注意%c 用法: 读1个字符(空格,回车键也算)。 char c1,c2,c3; scanf(%c%c%c, 才行。,格式化输入函数scanf(),例3.9用scanf函数输入数据 #include void main() int i,j; float x,y,z; printf(Input two integers i and j separated by a space:); /*提示语句*/ scanf(%d%d, ,课 堂 练 习,1已有如下定义和输入语句, int a; char c1,c2; scanf(%d%c%c, 3函数putchar( ) 的功能是向终端输出( )。 (A) 一个字符 (B) 多个字符 (C) 一个关系表达式 (D) 一个实型变量值,4、已有定义:int x;执行下面语句的输出结果是( ) x=11/3;y=5;printf(“%d,%dn”,x,y); 5、有以下程序段 int a=0,b=0,c=0; scanf(“%d”, 执行语句时从键盘键入:226.59 则变量a中的值是 ,b中的值是 , c中的值是 .,课 堂 练 习,

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

当前位置:首页 > 教育专区 > 教案示例

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

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