数据的输入输出(p35).ppt

上传人:牧羊曲112 文档编号:6578788 上传时间:2023-11-14 格式:PPT 页数:34 大小:242KB
返回 下载 相关 举报
数据的输入输出(p35).ppt_第1页
第1页 / 共34页
数据的输入输出(p35).ppt_第2页
第2页 / 共34页
数据的输入输出(p35).ppt_第3页
第3页 / 共34页
数据的输入输出(p35).ppt_第4页
第4页 / 共34页
数据的输入输出(p35).ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《数据的输入输出(p35).ppt》由会员分享,可在线阅读,更多相关《数据的输入输出(p35).ppt(34页珍藏版)》请在三一办公上搜索。

1、2023/11/14,1,第3章 数据的输入和输出,C语言中I/O操作由函数实现#include 使用较多的函数:格式输出printf()格式输入scanf()字符输出函数putchar()字符输入函数getchar()字符串输出函数puts()字符串输入函数gets(),2023/11/14,2,3.1 字符数据的输入和输出,格式:putchar(c)输入参数:c为字符常量、变量或表达式,不能少功能:把字符c输出到显示器上(一个字符的输出)返值:正常,为显示的代码值;,#include 或#include“stdio.h”字符输出函数,putchar(A);/*将大写字母A输出到屏幕*/pu

2、tchar(48);/*将ASCII码为48的字符输出到屏幕*/putchar(x);/*将变量X的值当成ASCII码值,并将此ASCII码对应的字符输出到屏幕,这里X可以是字符型或整型变量*,2023/11/14,3,#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);,运行结果:A B,例,1)putchar每次只能输出1个字符;2)可以为字符变量、字符常量、转义字符3)在程序最前必须包含一条预编译指令:#include stdio.h“这条预编译指令的作用是告诉编译器,putchar()函数是在std

3、io.h这个头文件中进行了说明。如果不进行事先说明的话,一个函数是不会被编译器所识别的。,2023/11/14,4,字符输入函数:,格式:getchar()功能:从终端(键盘)读入一字符输入参数:无返值:正常,返回读取的代码值;注意:只接受一个字符,空格、回车符为有效字符需读入 读入操作开始于ENTER的键入。,例,#include main()int c;printf(Enter a character:);c=getchar();printf(%c,c);,运行结果:Enter a character:AA,putchar(getchar();,2023/11/14,5,#include

4、main()int c;printf(Enter a character:);c=getchar();printf(%c-%dn,c,c);,运行结果:Enter a character:AA-65,2023/11/14,6,3.2 格式输出函数,格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;,输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息:格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出,printf(%c-%dn,c,c);,A-65,2023/11/14,7,int a=65;

5、printf(“%d”,a);,int a=65;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=65;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,65,41,101,65,A,ABC,5.67789e+02,567.789000,567.789,%,说明

6、 格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出,例 main()unsigned int u=65535;printf(u=%dn,u);输出结果:u=-1,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=4,2023/11/14,8,附加格式说明符(修饰符),2023/11/14,9,格式指示符1类

7、型转换字符d以带符号的十进制整数形式输出。案例 类型转换字符d的使用。,#include void main()int num1=123;long num2=123456;printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1);,运行结果:num1=123,num1=123,num1=123,num1=123,2023/11/14,10,#include void main()int num1=123;long num2=123456;printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,n

8、um2,num2);,运行结果:num2=123456,num2=123456,num2=123456,2023/11/14,11,#include void main()int x=-1;printf(x=%o,x=%d,x,x);,运行结果:x=177777,x=-1,2%o格式符。它的作用是将其对应的表达式的值按照八进制整数方式输出。这个格式符不会输出负数形式。它将符号位也做为八进制的一部分输出。,附加的格式说明符也可以和%o一起使用,看下面几个例子。例子:printf(“x=%5o”,077);运行结果:77printf(“x=%lo”,0 xFFFFF);运行结果:3777777pr

9、intf(“x=%11lo”,0 xfffff);运行结果:3777777printf(“x=%-11lo”,0 xfffff);运行结果:3777777,2023/11/14,12,3%x格式符。它的作用是将其对应的表达式的值按照十六进制整数方式输出。,printf(x=%x,0 xffff);运行结果:x=ffffprintf(x=%8x,0 xffff);运行结果:x=ffffprintf(x=%lx,0 x7ffff);运行结果:x=7ffffprintf(x=%8lx,0 x7ffff);运行结果:x=7ffffprintf(x=%-8lx,0 x7ffff);运行结果:x=7fff

10、f,2023/11/14,13,4.%u格式符。它的作用是将其对应的表达式的值按照十进制无符号整数方式输出。也可以和上面的m,l,-三种附加格式符组合使用。,printf(x=%u,-1);运行结果:x=65535 printf(x=%d,%o,%x,%un,-2,-2,-2,-2);运行结果:x=-2,177776,fffe,65534 printf(y=%d,%o,%x,%u,(unsigned int)65535,-1,-1,-1);运行结果:y=-1,177777,ffff,65535,(-2)=1111 1111 1111 1110(65535)=1111 1111 1111 111

11、1,2023/11/14,14,5%c格式符。它的作用是将其对应的表达式的值按照字符方式进行输出。如果一个整数的数值范围在0到255之间,也可以用字符方式输出 其对应的ASCII码字符。可以和附加格式符组合,printf(x=%c,A);运行结果:x=A printf(x=%c,66);运行结果:x=Bprintf(x=%5c,66);运行结果:x=B,2023/11/14,15,6s输出一个字符串。案例 类型转换字符s的使用。#include void main()printf(%s,%5s,%-10s,Internet,Internet,Internet);printf(%10.5s,%-

12、10.5s,%4.5sn,Internet,Internet,Internet);程序运行结果如下:Internet,Internet,Internet,Inter,Inter,Inter,2023/11/14,16,7f以小数形式、按系统默认的宽度,输出单精度和双精度实数。,#include void main()float f=123.456;double d1,d2;d2=2222222222222.222222222;printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f);printf(d1+d2=%fn,d1+d2);,运行结果:123.4560

13、01,123.456001,123.46,123.46,123.46 d1+d2=3333333333333.333010,m:显示数据占有的列宽;.n:保留小数位数,存在四舍五入,(1)这个格式符将对应表达式的值的整数部分全部输出,并且输出6位小数。,本案例程序的输出结果中,数据123.456001和3333333333333.333010中的01和010都是无意义的,因为它们超出了有效数字的范围。,16位有效位,2023/11/14,17,8%e格式符。它的作用是将其对应的表达式的值按照指数方式进行输出。,(1)这种方式输出的数据,以规范化浮点数形式输出,尾数(7位含小数点):整数部分只有

14、1位且不能为0,小数位数占5 位;指数(4位):字母e占1位,指数的符号位占1位,指数占2位。例如:Printf(“x=%e”,123.456);运行结果:x=(1.23456e+02)(2)这个格式符也可以和m,.n,-三种附加格式符一起使用。含义与%f格式符中这三种附加格式符的含义一样。例如:printf(x=%7e,123.456);运行结果:x=(1.23456e+02)printf(x=%8.2e,123.456);运行结果:x=(1.2e+02)printf(x=%-8.2e,123.456);运行结果:x=(1.2e+02),m:表示以m列宽显示;.n:取的是尾数部分除小数点外的

15、数据位数。,2023/11/14,18,9.%g格式符。它的作用是将其对应的表达式的值按照实数与指数方式中较短的一种方式进行输出。并且不输出多余的0。,printf(“%g,%e,%f”,123.321,123.321,123.321);运行结果:123.321,1.23321e+02,123.321000,2023/11/14,19,使用说明(1)printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。例如,printf(“str=%s,f=%d,i=%fn”,“Internet”,1.0/2.0,3+5,“C

16、HINA”);是错误的。(2)格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。(3)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。例如,“printf(”c=%c,f=%fn“,c,f);”中的第一个c和f,都是普通字符。,2023/11/14,20,例 m.n,例 float f=123.456;char ch=a;printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f);printf(“%3cn”,ch);

17、,运行结果:123.456001,123.456001,123.5,123.46,1.2e+02 a,例 static char a=“Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);,运行结果:Hello,world!Hello,world!Hello Hello Hel,2023/11/14,21,例 float f=123.456;static char c=“Hello,world!”;printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);,运行结果

18、:123.46,123.5 Hello,Hel,例-,2023/11/14,22,例 int a=1234;float f=123.456;printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“%0+10.2fn”,f);,例 0、+,例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);,例#,例 long a=65536;printf(“%d,%8ldn”,a,a);,例 l,/0000123.46,/+0001234,/+000123.46,/173,0173,7B,0X7B,/0,65536,2023/11/

19、14,23,3.3 格式输入函数,格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数,(1)格式字符串。格式字符串可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。(2)输入项首地址表由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。变量

20、首地址的表示方法:&变量名 其中“&”是地址运算符。,例 scanf(“%d”,输入:10 则 a=10,例 scanf(“%x”,输入:11 则 a=17,2023/11/14,24,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”,输入 20031015 则2003yy,10 mm,15 dd,例 scanf(“%3d%*4d%f”,则123k,8765.43f,例 scanf(“%3c%2c”,输入 abcde 则ac1,d c2,2023/11/14,25,使用格式控制参数时需要注意的问题:1、必须按格式控制参数规定的格式输入;2、在格式控制中,格式说明的类型应一一对应

21、匹配,否则可能得不到正确的数据,例如在输入long整数和输入double型整数时,在%后必须加1;3、格式说明的个数应该与输入项的个数相同。4、不可以对实数指定小数位的宽度,如scanf(“%7.2f”,&a)是错误的;,2023/11/14,26,scanf函数如何分隔数据项,当用户在终端键入一串字符时,系统如何知道哪几个字符算作一个数据项?(1)遇到空格,或者回车键,或者Tab键。(2)遇到输入域宽度结束。例如“%3d”,只取3列。(3)遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。,如 scanf(“%c%c%c”,若输入a

22、bc 则ac1,b c2,cc3,如 scanf(“%d%c%f”,若输入1234a123o.26 则 1234 a,a b,123 c,2023/11/14,27,常见的输入分隔符的指定:一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”,输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45 则12 h,30 m,45 s,例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 b,例 scanf(“a=%d,b=%d,c=%d”,输入 a

23、=12,b=24,c=36,2023/11/14,28,2.scanf是一个函数,它有返回值,这个返回值就是成功匹配的项数。,void main()int a=1,b=2,c=3;printf(“%dn”,scanf(“%3d-%2d-%4d”,若输入:123-45-6789 则输出:,若输入:12-345-6789 则输出:,2a=12,b=34,c=3,3a=123,b=45,c=6789,2023/11/14,29,在顺序结构程序中,程序从上到下一条语句一条语句地执行。一般包括以下几个部分:1程序开头的编译预处理命令。在程序中要使用标准函数(又称库函数),除printf()和scanf(

24、)外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:(1)变量类型的说明。(2)提供数据部分(输入语句、赋值语句)。(3)运算部分。(4)输出部分。,3.4 顺序结构程序设计,2023/11/14,30,程序举例,/*ch3_1.c*/#include#include void main()float radius,length,area,pi=3.1415926;radius=1.5;length=2*pi*radius;/*求圆周长*/area=pi*radius*radius;/*求圆面积*/printf(“r

25、adius=%fn”,radius);/*输出圆半径*/printf(“length=%7.2f,area=%7.2fn”,length,area);/*输出圆周长、面积*/,案例3.1 已知圆半径radius=1.5,求圆周长和圆面积。,radius=1.500000 length=9.42,area=7.07,2023/11/14,31,程序举例,/*ch3_2.c*/#include#include main()float a,b,c,s,area;scanf(%f,%f,%f,案例3.2 输入三角形边长,求面积,输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.

26、50 area=5.33,2023/11/14,32,案例3.3 从键盘输入大写字母,用小写字母输出,并输出其 ASCII码值。,/*ch3_3.c*/#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);,输入:A 输出:A,65 a,97,2023/11/14,33,课堂练习,1、编写一个程序,输入一个3位正整数,要求逆序输出对应的数,如输入123,则输出321。关键:怎样将3位数每一位都取出来?提示:用n保存输入的3位正整数,m表示逆转后的3位正整数;n整除100得到百位数,除掉百尾数余下的数整除10得到十位数,再除掉十位数后余下的一位数便是个位数,反向显示它们即可。2、编写一个程序解鸡兔同笼问题:已知鸡兔总数为a,鸡兔腿数为b,计算鸡兔各多少只?提示:根据题目鸡兔数各为x和y只,列出方程,求解。,2023/11/14,34,1、#include void main()int n,i,j,k,m;printf(“input a number:”);scanf(“%d”,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号