格式:putchar(c)参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上返值:正常,为显示的代码值;出错,为EOF(-1)第三章数据输入与输出C语言无I/O语句,I/O操作由函数实现#includestdio.h§3.1数据输出字符输出函数/*ch3_1.c*/#includestdio.hmain(){intc;chara;c=65;a='B';putchar(c);putchar('\n');putchar(a);}运行结果:AB例格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)格式输出函数输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%[修饰符]格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符d,ix,Xoucse,Efg%%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出例main(){unsignedintu=65535;printf(”u=%d\n,u);}输出结果:u=-1例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);输出结果:34a=3,b=4111111111111111165535附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l例inta=1234;floatf=123.456;charch=‘a’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);运行1234,1234结果:123.456000,123.456000,123.5,123.46,1.23e+02a例staticchara[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);运行结果:Hello,world!Hello,world!HelloHelloHel例m.n例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%8d,%-8d\n”,a,a);printf(“%10.2f,%-10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);运行结果:1234,1234123.46,123.5Hello,Hel例-例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“0+10.2f\n”,f);例0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);例#例longa=65536;printf(“%d,%8ld\n”,a,a);例l00000000000000010000000000000000//00001234//0000123.46//000+1234//000+123.56//173,0173,7B,0X7B//0,65536格式:getchar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)§3.2数据输入字符输入函数例/*ch3_4.c*/#includestdio.hmain(){intc;printf(Enteracharacter:);c=getchar();printf(%c---hex%x\n,c,c);}运行结果:Enteracharacter:AA---hex41格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);输入:10则a=10例scanf(“%x”,&a);输入:11则a=17附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入19991015则1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);输入12345678765.43则123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);输入1234567则12a,67b例scanf(“%3c%2c”,&c1,&c2);输入abcde则‘a’c1,‘d’c2输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);输入123123123输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);输入12:30:45则12h,30m,45s例scanf(“%d,%d”,&a,&b)输入3,4则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入a=12,b=24,c=36说明:用“%c”格式符时,空格和转义字符作为有效字符输入如scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc则ac1,c2,bc3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);若输入1234a123o.26则1234a,‘a’b,123c输入函数留下的“垃圾”:例intx;charch;scanf(“%d”,&x);ch=getchar();printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”例intx;charch;scanf(“%d”,&x);scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);§3.3程序举例/*ch3_12.c*/#includemath.h#includestdio.hmain(){floata,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n,a,b,c,s);printf(area=%7.2f\n,area);}例输入三角形边长,求面积输入:3,4,6输出:a=3.00,b=4.00,c=6.00s=6.50area=5.33文件包含预处理命令变量定义输入数据输出数据例从键盘输入大写字母,用小写字母输出/*ch3_13.c*/#includestdio.hmain(){charc1,c2;c1=getchar();printf(%c,%d\n,c1,c1);c2=c1+32;printf(%c,%d\n,c2,c2);}输入:A输出:A,65a,97/*ch3_14.c*/#includestdio.h#includemath.hmain(){floata,b,c,disc,x1,x2,p,q;scanf(a=%f,b=%f,c=%f,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(\n\nx1=%5.2f\nx2=%5.2f\n,x1,x2);}输入:a=1,b=3,c=2输出:x1=-1.00x2=-2.00