第四章-数据的输入输出_第1页
第四章-数据的输入输出_第2页
第四章-数据的输入输出_第3页
第四章-数据的输入输出_第4页
第四章-数据的输入输出_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第四章数据的输入输出

在C语言中,无I/O语句,数据的I/O是通过函数实现的,函数以文件的形式存放在系统库的stdio.h头文件中。§1输出函数

一.字符输出函数1.格式

putchar(c)2.功能向标准的输出设备输出一个字符

注意:1.在C语言中,除printf和scanf两个函数外,使用其它I/O函数时,都必须在源文件的开始处加上预编译命令:#include"stdio.h"意义:将标准I/O函数库中的函数包含到所在文件中来。2.其中,参数c可以是整型或字符型变量或常量。例如:putchar(97);putchar('a');都输出字符a,charc='b';putchar(c);输出字符b。

例1:

#include<stdio.h>

main()

{

inta;

charb;

a=66;

b=‘B';

putchar(a);

putchar(b);

}

若无文件包含编译预处理,在编译连接时系统将指出:

LinkingError:Undefinesymbol‘_putchar’inmoduel

BB例2:#include"stdio.h"main(){ chara,b,c; a='B'; b='O'; c='Y'; putchar(a); putchar(b); putchar(c);}运行结果:BOY另:putchar()函数还可以输出控制字符如:'\n'或'\012'

'\a'或'\007'

'\r'或'\015'

'\’'

换行响铃回车字符’

例3:#include"stdio.h"main(){inti;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)输出表列:需要桉格式说明所指定的格式输出的数据,可以是常量、变量、表达式。

例如: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时数据左边补空格>m时按数据的实际位数输出。例:main(){inta=3,b=25;printf("a=%3d,b=%1d\n",a,b);}运行结果:a=__3,b=25(3)%ld:输出长整型数据①对于长整型数据只能按长整型的格式说明符输出,否则,输出的数据有误.②在长整型格式说明中,还可指出其输出宽度.例4main(){longa=134579;printf("a=%ld\n",a);}结果:a=134579例5main(){longa=134579;printf("a=%8ld\n",a);}结果:a=____134579(134579)10=(406663)8000000000000001000001101101100112.o格式符,输出八进制数特点:无论是正是负,输出的都是不带符号的数例6:main(){inta=-1;longb=-1;printf("a=%d,oa=%o,lob=%lo\n",a,a,b);}结果:a=-1,oa=0177777,lob=0x37777777777111111111111111111111111111111111111111111111111a=-1b=-13.x格式符,输出十六进制数特点:无论数据是正是负,输出的都是不带符号的数例7:main(){inta=-1;longb=-1;printf("xa=%#x,oa=%#o,a=%d,b=%ld,lxb=%lx\n",a,a,a,b,b);}结果:xa=0xffff,oa=177777,a=-1,b=-1,lxb=oxffffffff4.u格式符,输出无符号十进制数据(1)无符号类型的数据可用%d,%u,%o,%x格式输出。(2)带符号的char和int整型数据可用%u格式输出。(3)单、双精度实型数据用%u格式输出时,则得到错误的结果。例8main(){unsignedinta=65535;intb=-2;printf("a=%d,%o,%x,%u\n",a,a,a,a);printf("b=%d,%o,%x,%u\n",b,b,b,b);}运行结果:a=-1,177777,ffff,65535b=-2,177776,fffe,65534

11111111111111111111111111111110数值有效位符号位5.C格式符,输出一个字符字符型数据:占一个字节,数据表示范围:0~255对于整型数据,若用字符格式输出,由于整型数据占两个字节,如果整型数据的值在0~255之间时,则输出对应的字符,若其值在256~32767之间时,则截取其低8位,然后输出对应的字符。例9main(){charc='a';inti=97,j=355,k=232;输出355的低8位

printf("%c,%c,%c,%c\n",c,i,j,k);printf("%d,%d,%d,%d\n",c,i,j,k);}输出结果:a,a,c,ф

97,97,355,232000000010110001101100011j=355对应字符C6.f格式符,输出单、双精度实数Fixedpointnumber

(1)%f:单精度浮点输出,有效位7位,通常小数点后有6位数字。%lf:双精度浮点输出,有效位16位,通常小数点后有6位数字。例10

main(){floatx1,y1;doublex2,y2;x1=111111.111;y1=222222.222;x2=1111111111.111111;y2=2222222222.222222;printf("x1+y1=%f,x2+y2=%lf\n",x1+y1,x2+y2);}运算结果:x1+y1=333333.328125,x2+y2=3333333333.333333例11main(){floatx1,y1;doublex2,y2;x1=1111111111111.111111;y1=2222222222222.222222;/*13+6*/x2=1111111111111.111111;y2=2222222222222.222222;printf("x1+y1=%f\nx2+y2=%lf\n",x1+y1,x2+y2);}运行结果:x1+y1=3333333319680.000000x2+y2=3333333333333.333010(2)%m.nf:输出数据共占m列,其中小数占n位,当数据长度<m时,左补空格。(3)%-m.nf:输出数据占m列,其中小数占n位,当数据长度<m时,右补空格。例12main(){floatf=123.456;printf("%f,%10f,%10.2f,%.2f,%-10.2f\n",f,f,f,f,f);}运行结果:123.456001,123.456001,____123.46,123.46,123.46____7.e格式,以指数形式输出实数(1)%e:小数点前有一位数字,小数点后有6位数字;指数部分为5位

例13main(){floata=1.23456e38;doubleb=1.23456e308;printf("a=%e,b=%le\n",a,b);}运行结果:a=1.234560e+038,b=1.234560e+308(2)%m.ne:m为输出数据的列数,n是小数的位数.<数据长度,数据按实际长度输出

m>数据长度,数据靠右输出,左端补空格(3)%-m.ne:m为输出数据的列数,n是小数的位数.<数据长度,数据按实际长度输出m>数据长度,数据靠左输出,右端补空格在Tc中的n:指在e左边的数字个数,不包括小数点.例14main(){floatf=123.456;printf("%e,%10e,%10.2e,%.2e,%-10.2e\n",f,f,f,f,f,);}运行结果:1.234560e+002,1.23456e+002,_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.功能输入一字符

#include"stdio.h"main(){charc;c=getchar();等待键盘输入

putchar(c);}

注意:1.getch()2.在C语言中,除printf和scanf两个函数外,使用其它I/O函数时,都必须在源文件的开始处加上预编译命令:#include"stdio.h"意义:将标准I/O函数库中的函数包含到所在文件中来。

例15#include"stdio.h"main(){charc;c=getchar();putchar(c);putchar(getchar());printf("%c\n",getchar());}输入:abc输出:abc二.scanf函数1.基本格式scanf(格式控制,地址表列)

用户数据区┆20003i20026j20049k┆30102000ip30122002jp30142004kp

1.格式控制:为字符串,包含的内容有:①格式说明:由%和格式字符d,f,e,c,s,o,x中之一组成。②普通字符:需原样输入的字符③转义字符:\n,\t用来实现换行和制表输入2.地址表列:&后加变量名,表示将输入的数据存入变量所指定的存储单元内,字符数组前不加&

例如:

scanf("%4d%4d",&a,&b)12345678

a=1234,b=5678三、格式说明以%开始,以一个格式符(d,f,e,c,s,o,x)结束,中间可插普通字符。附加格式说明符有:%ld,%lo,%lx:用于输入长整型数据(十、八、十六进制数)%lf,%le:用于输入双精度类型数据%hd,%ho,%hx:用于输入十、八、十六进制短整型数据域宽n:指出输入数据所占的列数n。*:本输入项读入后不赋给任何变量。1.指出输入数据所占列数,系统自动按其截取数据。例16main(){inta,b;scanf("%3d%3d",&a,&b);printf("a=%d,b=%d\n",a,b);}输入:123456789输出:a=123,b=4562.字符型数据若指出n位宽度,则只将第一个字符赋给变量。例17main(){charch;scanf("%3c",&ch);printf("%c\n",ch);}输入:abcd输出:a3.%后加*,表示跳过相应数据例18main(){inta,b;scanf("%2d%*3d%2d",&a,&b);printf("a=%d,b=%d\n",a,b);}输入:12_345_678输出:a=12,b=674.格式说明中不能规定精度,编译虽不指出错误,但结果不对例19main(){floata;scanf("%6.2f",&a);printf("a=%f\n",a);}输入:系统通过,不让输入数据输出:a=0.0000005.o,x格式输入例20main(){inta,b,c;scanf("%o,%x,%c",&a,&b,&c);printf("%d,%d,%d\n",a,b,c);}输入:12,12,12输出:10,18,49四、使用sacnf函数应注意的问题1.地址表列指的是变量的地址,而不是变量名。如:scanf("%d",&a);2.格式字符串中除格式说明外,还可有其它字符,在输入时,除空格字符外,其它字符应原样输入。3.用%c格式输入字符时,空格和转义字符都作有效字符输入。例21main(){inta,b;floatc,d;chare,f;scanf("%d%d\n",&a,&b);scanf("c=%f,d=%f\n",&c,&d);scanf("%c%c",&e,&f);printf("a=%d,b=%d,c=%f,d=%f,e=%c\n",a,b,c,d,e,f);}输入:1_2

c=3.5,d=4.6ab输出:a=1,b=2,c=3.500000,d=4.600000,e=a,f=b4.输入数据遇到下列情况时,表示数据结束:①遇空格、回车、Tab;②遇结束宽度,如%3d

温馨提示

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

评论

0/150

提交评论