版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章数据的输入输出 在C语言中,无I/O语句,数据的I/O是通过函数实现的,函数以文件的形式存放在系统库的 stdio.h 头文件中。1 输出函数 一.字符输出函数 1.格式 putchar(c) 2.功能 向标准的输出设备输出一个字符 注意:1.在C语言中,除printf 和 scanf 两个函数外,使用其它I/O函数时,都必须在源文件的开始处加上预编译命令:#includestdio.h意义:将标准I/O函数库中的函数包含到所在文件中来。2.其中,参数c可以是整型或字符型变量或常量。例如:putchar(97) ; putchar(a) ; 都输出字符 a, char c=b ; put
2、char ( c ) ; 输出字符 b。例1: #includemain() int a; char b; a=66; b=B; putchar(a); putchar(b);若无文件包含编译预处理,在编译连接时系统将指出:Linking Error:Undefine symbol _putchar in moduel BB例2:#include stdio.hmain()char a,b,c;a=B;b=O;c=Y;putchar(a); putchar(b);putchar(c);运行结果:BOY另:putchar( )函数还可以输出控制字符如: n或012 a或 007 r 或 015
3、换行 响铃 回车 字符 例3:#include stdio.hmain()int i; for(i=1;i=10;i+) putchar(007); /* 007 和a效果一样*/结果是什么?二.printf函数I/O函数应包含的信息 1.外部设备 2.格式 3.数据1.基本格式 printf(格式控制,输出表列)(1)格式控制:由双引号括起来的一串字符,包括输出数据的格式说明和普通字符。 格式说明:由%和格式字符(c, d, u, f, e, o, x, s, g)组成。 普通字符:需要原样输出的字符。(2)输出表列:需要桉格式说明所指定的格式输出的数据,可以是常量、变量、表达式。 例如:
4、a=3;b=4; printf(%d,%d,a,b);格式控制输出表列结果:结果:3,4格式字符 1.d格式符 2.o格式符 3.x格式符 4.u格式符 5.c格式符 6.f格式符 7.e格式符 8.g格式符1.d 格式符:输出十进制整数 (1)%d:按十进制数据的实际长度输出。 (2)%md :m为指定输出字段的宽度。当数据位数 m时 按数据的实际位数输出。例: main( ) int a=3,b=25; printf (a=%3d,b=%1dn,a,b);运行结果:a=_ _ 3,b=25 (3)%ld:输出长整型数据 对于长整型数据只能按长整型的格式说明符输出,否则,输出的数据有误. 在
5、长整型格式说明中,还可指出其输出宽度.例4main( )long a=134579; printf (a=%ldn,a);结果:a=134579例 5main( ) long a=134579; printf (a=%8 ldn, a); 结果:a=_ _ _ _134579(134579)10=(406663)80000000000000010 00001101101100112.o格式符,输出八进制数特点:无论是正是负,输出的都是不带符号的数例6:main ( )int a=-1;long b=-1;printf (a=%d, oa=%o,lob=%lon,a,a,b);结果:a=-1,o
6、a=0177777,lob=0 x377777777771 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1a=-1b=-13.x格式符,输出十六进制数特点:无论数据是正是负,输出的都是不带符号的数例7:main( )int a=-1;long b=-1;printf (xa=%#x,oa=%#o,a=%d,b=%ld,lxb=%lxn,a,a,a,b,b); 结果:xa=0 xffff,oa=177777,a=-1,b=-1,lxb=oxffffffff4.
7、u格式符,输出无符号十进制数据(1)无符号类型的数据可用%d,%u,%o,%x 格式输出。(2)带符号的char 和 int 整型数据可用%u格式输出。(3)单、双精度实型数据用%u格式输出时,则得到错误的结果。例8main( )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,65535 b=-2,177776,fffe,65534 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1
8、1 1 1 1 1 1 1 1 1 1 1 0数值有效位符号位5.C格式符,输出一个字符字符型数据:占一个字节,数据表示范围:0255对于整型数据,若用字符格式输出,由于整型数据占两个字节,如果整型数据的值在0255之间时,则输出对应的字符,若其值在25632767之间时,则截取其低8位,然后输出对应的字符。例9main() char c=a; int i=97,j=355,k=232; 输出355的低8位 printf (%c,%c,%c,%cn,c,i,j,k); printf (%d,%d,%d,%dn,c,i,j,k);输出结果:a,a,c, 97,97,355,2320 0 0 0
9、0 0 0 1 0 1 1 0 0 0 1 10 1 1 0 0 0 1 1j=355对应字符C6. f格式符,输出单、双精度实数Fixed point number (1)%f:单精度浮点输出,有效位7位,通常小数点后有6位数字。 %lf:双精度浮点输出,有效位16位,通常小数点后有6位数字。例10 main( )float x1,y1; double x2,y2;x1=111111.111; y1=222222.222;x2=1111111111.111111; y2=2222222222.222222;printf (x1+y1=%f,x2+y2=%lfn,x1+y1,x2+y2);运算
10、结果:x1+y1=333333.328125,x2+y2=3333333333.333333例11main( )float x1,y1;double x2,y2;x1=1111111111111.111111; y1=2222222222222.222222; /*13+6*/x2=1111111111111.111111; y2=2222222222222.222222;printf (x1+y1=%fnx2+y2=%lfn,x1+y1,x2+y2);运行结果:x1+y1=3333333319680.000000 x2+y2=3333333333333.333010(2) %m. nf:输出
11、数据共占m列,其中小数占n位,当数据长度m时,左补空格。(3)%-m. nf:输出数据占m列,其中小数占n位,当数据长度m时,右补空格。例12 main( )float f=123.456;printf (%f, %10f, %10.2f, % .2f, %-10.2fn,f,f,f,f,f);运行结果:123.456001, 123.456001, _ _ _ _123.46, 123.46, 123.46_ _ _ _7.e格式,以指数形式输出实数(1)% e:小数点前有一位数字,小数点后有6位数字;指数部分为5位 例13main( )float a=1.23456e38; double
12、b=1.23456e308;printf(a=%e,b=%len,a,b);运行结果:a=1.234560e+038,b=1.234560e+308(2)%m.ne: m为输出数据的列数,n是小数的位数. 数据长度,数据靠右输出,左端补空格(3) %-m.ne: m为输出数据的列数,n是小数的位数. 数据长度,数据靠左输出,右端补空格在Tc中的n:指在e左边的数字个数,不包括小数点.例14main( )float f=123.456;printf (%e,%10e,%10.2e,% .2e,% -10.2en,f,f,f,f,f,);运行结果:1.234560e+002, 1.23456e+0
13、02,_ 1.23e+002, 1.23e+002,1.23e+002_ print 函数的使用说明:函数的使用说明:1.由%和格式字符d, f, e, g, u, c, s, o, x构成格式输出符号2.除了E,G格式符外,其它用小写字母而不能用大写字母,如%d 而不是%D。3.格式控制的字符串中可包含转义字符,如:n, t, b, r, 377, x414.定义数据类型与格式符说明要一致,否则将输出错误结果。2 输入函数 一.字符输入函数1.格式 c=getchar()2.功能 输入一字符 #includestdio.h main() char c; c=getchar(); 等待键盘输入
14、 putchar(c); 注意:1.getch()2. 在C语言中,除printf 和 scanf 两个函数外,使用其它I/O函数时,都必须在源文件的开始处加上预编译命令:#includestdio.h意义:将标准I/O函数库中的函数包含到所在文件中来。 例15#include stdio.hmain( ) char c; c=getchar( ); putchar( c); putchar (getchar( ) ); printf (%c n,getchar ( ) );输入:abc输出:abc二.scanf函数 1.基本格式 scanf(格式控制,地址表列) 用户数据区 2000 3 i
15、2002 6 j2004 9 k 3010 2000 i p3012 2002 j p3014 2004 k p 1.格式控制:为字符串,包含的内容有:格式说明:由%和格式字符 d, f, e, c, s, o, x中之一组成。普通字符:需原样输入的字符转义字符: n, t 用来实现换行和制表输入2.地址表列:&后加变量名,表示将输入的数据存入变量所指定的存储单元内,字符数组前不加& 例如: scanf(%4d%4d,&a,&b)12345678a=1234,b=5678三、格式说明以%开始,以一个格式符(d, f, e, c, s, o, x)结束,中间可插普通字符。附加格式说明符有:%ld
16、, %lo, %lx :用于输入长整型数据(十、八、十六进制数)%lf, %le: 用于输入双精度类型数据%hd, %ho, %hx:用于输入十、八、十六进制短整型数据域宽n :指出输入数据所占的列数n。* :本输入项读入后不赋给任何变量。1. 指出输入数据所占列数,系统自动按其截取数据。例16main( )int a,b; scanf (%3d %3d,&a,&b);printf (a=%d,b=%dn,a,b); 输入:123456789 输出:a=123,b=4562.字符型数据若指出n位宽度,则只将第一个字符赋给变量。例17main( )char ch; scanf (%3c,&ch)
17、;printf (%cn,ch); 输入:abcd 输出:a3.%后加*, 表示跳过相应数据例18main( )int a,b; scanf (%2d %*3d %2d,&a,&b);printf (a=%d,b=%dn,a,b);输入:12 _ 345 _ 678 输出:a=12,b=674.格式说明中不能规定精度,编译虽不指出错误,但结果不对例19main( )float a; scanf (%6.2f,&a); printf (a=%fn,a); 输入:系统通过,不让输入数据输出:a=0.0000005.o, x格式输入例20main ( )int a,b,c; scanf (%o,%x
18、,%c, &a,&b,&c);printf (%d, %d, %dn,a,b,c);输入:12,12,12 输出:10,18,49四、使用sacnf 函数应注意的问题1.地址表列 指的是变量的地址,而不是变量名。 如:scanf (%d, &a);2.格式字符串中除格式说明外,还可有其它字符,在输入时,除空格字符外,其它字符应原样输入。3.用%c格式输入字符时,空格和转义字符都作有效字符输入。例21main( )int a,b; float c,d; char e,f; scanf (%d %dn,&a,&b);scanf (c=%f,d=%fn,&c,&d); scanf (%c %c,&e,&f);printf (a=%d, b=%d, c=%f, d=%f, e=%cn,a,b,c,d,e,f); 输入:1_ 2 c=3.5,d=4.6 ab 输出:a=1,b=2,c=3.500000,d=4.600000,e=a,f=b4.输入数据遇到下列情况时,表示数据结束:遇空格、回车、Tab;遇结束宽度,如%3d,只取3列;遇非法输入。例22main( )int a; char b; double c; scanf(%d%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度公务员(国考)高频难、易错点题及参考答案详解(预热题)
- 2024-2025学年度施工员测试卷及答案详解(名校卷)
- 2024-2025学年度注册电气工程师高频难、易错点题附答案详解【综合题】
- 2024-2025学年四川交通职业技术学院单招《英语》试题预测试卷及完整答案详解(易错题)
- 2024-2025学年制冷与空调作业考前冲刺练习试题【典优】附答案详解
- 2024-2025学年度执法资格复习提分资料含答案详解(A卷)
- 2024-2025学年度火电电力职业鉴定综合提升测试卷及一套参考答案详解
- 2024-2025学年度法律职业资格考试考前冲刺练习试题带答案详解(模拟题)
- 2024-2025学年度化验员模拟试题含答案详解(A卷)
- 2024-2025学年度施工员自我提分评估附完整答案详解(夺冠)
- 2026江苏苏州海关驻吴中办事处招聘编外人员2人考试参考题库及答案解析
- 2025-2026学年八年级下册语文教学计划及进度表
- 2026年南京铁道职业技术学院单招职业技能测试题库附答案详解(考试直接用)
- 统编版2025-2026学年语文四年级下册 语文园地一 教学课件
- 2026年内蒙古机电职业技术学院单招职业技能测试题库附参考答案详解(b卷)
- 线路施工班组考核制度
- 2026年南京城市职业学院单招职业适应性考试题库及一套完整答案详解
- 2026四川能投综合能源有限责任公司招聘19人备考题库及答案详解(基础+提升)
- 2025年河南农业职业学院单招职业技能考试题库附答案解析
- 公共浴池卫生管理制度
- 《四川省老旧小区物业服务标准》
评论
0/150
提交评论