资源描述
第第5章章 C/C+的输入输出的输入输出5.1C的输入输出5.2C+的输入输出12024/11/2周六5.1 C的输入输出的输入输出5.1.1有关数据输入输出的概念5.1.2用printf函数输出数据5.1.3用scanf函数输入数据5.1.4字符数据的输入输出22024/11/2周六5.1.1 有关数据输入输出的概念有关数据输入输出的概念l几乎每一个C程序都包含输入输出l输入输出是程序中最基本的操作之一(1)所谓输入输出是以计算机主机为主体而言的l从计算机向输出设备(如显示器、打印机等)输出数据称为输出l从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入32024/11/2周六5.1.1 有关数据输入输出的概念有关数据输入输出的概念(2)语言本身不提供输入输出语句l输入和输出操作是由C标准函数库中的函数来实现的lprintf和scanf不是语言的关键字,而只是库函数的名字lputchar、getchar、puts、gets42024/11/2周六5.1.1 有关数据输入输出的概念有关数据输入输出的概念(3)在使用输入输出函数时,要在程序文件的开头用预编译指令#include或#includestdio.h52024/11/2周六5.1.2 用用printf函数输出数据函数输出数据l在C程序中用来实现输出和输入的,主要是printf函数和scanf函数l这两个函数是格式输入输出函数l用这两个函数时,必须指定格式62024/11/2周六5.1.2 用用printf函数输出数据函数输出数据1.printf函数的一般格式printf(“一串字符”);printf(格式控制字符串,输出表列);例如:printf(“i=%d,c=%cn”,i,c);72024/11/2周六5.1.2 用用printf函数输出数据函数输出数据1.printf函数的一般格式printf(格式控制字符串,输出表列)例如:printf(”i=%d,c=%cn”,i,c);82024/11/2周六5.1.2 用用printf函数输出数据函数输出数据1.printf函数的一般格式printf(格式控制字符串,输出表列)例如:printf(”i=%d,c=%cn”,i,c);可以是常量、变量或表达式可以是常量、变量或表达式,代入的是该常量、变量或表达代入的是该常量、变量或表达式的值式的值92024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符l格式符。用来输出一个有符号的十进制整数l%d输出int型数据l%ld输出long型数据l格式符。用来输出一个字符charch=a;printf(”%c”,ch);输出字符输出字符:a格式符。用来输出一个字符串printf(”%s”,”CHINA”);输出字符串输出字符串:CHINA102024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符lf格式符。用来输出实数,以小数形式输出不指定数据宽度和小数位数,用%f例3.6用%f输出实数,只能得到位小数。doublea=1.0;printf(”%fn”,a/3);112024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符lf格式符。用来输出实数,以小数形式输出指定数据宽度和小数位数。用%m.nfprintf(%20.15fn,1/3);printf(%.0fn”,10000/3.0);122024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符lf格式符。用来输出实数,以小数形式输出#includevoidmain(void)printf(%6d%6.2lfn,15,23.6);printf(%6d%6.2lfn,123,3.156);printf(%-6d%6.2lfn,15,23.6);%6d:输入的数据共占:输入的数据共占6位,右对齐;位,右对齐;%-6d:输出的数据共占:输出的数据共占6位,左对齐;位,左对齐;%6.2lf:输出的数据共占:输出的数据共占6位,含小数点位,小数点后位,含小数点位,小数点后2位,右对齐位,右对齐132024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符lf格式符。用来输出实数,以小数形式输出floata;a=10000/3.0;printf(%fn,a);142024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符le格式符。指定以指数形式输出实数l%e,C给出小数位数为位指数部分占5列小数点前必须有而且只有1位非零数字printf(”%e”,123.456);输出:1.234560e+002152024/11/2周六5.1.2 用用printf函数输出数据函数输出数据2.常用格式字符le格式符。指定以指数形式输出实数l%m.neprintf(”%13.2e”,123.456);输出:1.23e+002(前面有4个空格)162024/11/2周六5.1.3 用用scanf函数输入数据函数输入数据1.scanf函数的一般形式scanf(格式控制,地址表列)172024/11/2周六5.1.3 用用scanf函数输入数据函数输入数据1.scanf函数的一般形式scanf(格式控制,地址表列)182024/11/2周六5.1.3 用用scanf函数输入数据函数输入数据2.scanf函数中的格式声明l与printf函数中的格式声明相似l以开始,以一个格式字符结束,中间可以插入附加的字符scanf(a=%f,b=%f,c=%f,&a,&b,&c);192024/11/2周六5.1.3 用用scanf函数输入数据函数输入数据3.使用scanf函数时应注意的问题scanf(”%f%f%f”,a,b,c);错scanf(”%f%f%f”,&a,&b,&c);对对于scanf(a=%f,b=%f,c=%f,&a,&b,&c);132错a=1,b=3,c=2对a=1b=3c=2错202024/11/2周六5.1.3 用用scanf函数输入数据函数输入数据3.使用scanf函数时应注意的问题对于scanf(”%c%c%c”,&c1,&c2,&c3);abc对abc错212024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出1.用putchar函数输出一个字符l从计算机向显示器输出一个字符lputchar函数的一般形式为:putchar(c)222024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出例先后输出BOY三个字符。l解题思路:l定义3个字符变量,分别赋以初值B、O、Yl用putchar函数输出这3个字符变量的值232024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara=B,b=O,c=Y;putchar(a);putchar(b);putchar(c);putchar(n);return0;向显示器输出字符向显示器输出字符B向显示器输出换行符向显示器输出换行符242024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara=B,b=O,c=Y;putchar(a);putchar(b);putchar(c);putchar(n);return0;252024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出putchar(101)(输出字符)putchar()(输出单撇号字符)262024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出2.用getchar函数输入一个字符l向计算机输入一个字符lgetchar函数的一般形式为:getchar()272024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出例从键盘输入BOY三个字符,然后把它们输出到屏幕。l解题思路:l用3个getchar函数先后从键盘向计算机输入BOY三个字符l用putchar函数输出282024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return0;输入一个字符,送给输入一个字符,送给变量变量a292024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return0;putchar(getchar();302024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return0;putchar(getchar();putchar(getchar();312024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return0;putchar(getchar();putchar(getchar();putchar(getchar();322024/11/2周六5.1.4 字符数据的输入输出字符数据的输入输出#includeintmain()chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return0;putchar(getchar();putchar(getchar();putchar(getchar();332024/11/2周六补充例题:补充例题:字符变量l用类型符char定义字符变量lcharc=?;系统把“?”的ASCII代码63赋给变量clprintf(”%d%cn”,c,c);l输出结果是:63?342024/11/2周六#includeintmain()charc1,c2;c1=A;c2=c1+32;printf(%cn,c2);printf(”%dn”,c2);return0;将字符将字符A的的ASCII代码代码65放到放到c1中中将将65+32的的结果结果放到放到c2中中用字符形式输出用字符形式输出用十进制形式输出用十进制形式输出352024/11/2周六#include#includeintmain()doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%ftb=%ft%fn,a,b,c);printf(area=%fn,area);return0;对边长对边长a、b、c赋值赋值计算计算s计算计算area已知三角形三边,求面积362024/11/2周六#include#includeintmain()doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%ftb=%ft%fn,a,b,c);printf(area=%fn,area);return0;调用数学函数调用数学函数加此行加此行372024/11/2周六#include#includeintmain()doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%ftb=%ft%fn,a,b,c);printf(area=%fn,area);return0;转义字符转义字符,使输出位置跳使输出位置跳到下一个到下一个tab位置位置调用数学函数调用数学函数加此行加此行382024/11/2周六求方程的根。a、b、c由键盘输入设392024/11/2周六#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return0;程序中程序中调用数学函数调用数学函数sqrt输入输入a,b,c的值的值402024/11/2周六#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return0;412024/11/2周六#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return0;422024/11/2周六#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return0;432024/11/2周六44输入语句:cin程序在执行期间,接收外部信息的操作称为程序的输入;而把程序向外部发送信息的操作称为程序的输出。在C+中没有专门的输入输出语句,所有输入输出是通过输入输出流来实现的。5.2 C+的输入输出的输入输出2024/11/2周六45要使用C+提供的输入输出时,必须在程序的开头增加一行:#include即 包 含 输 入 输 出 流 的 头 文 件“iostream.h”。有关包含文件的作用,在编译预处理部分作详细介绍。2024/11/2周六46输入十进制整数和实数cin.inta,b;cinab;/程序运行至此停下,等待从键盘输入变量值键盘输入:35或:35均可。输入语句自动过滤空白字符。a3键盘b5键盘2024/11/2周六47浮点型数据同整型数据一样。floatc,d;cincd;charch1,ch2;cinch1ch2;若输入:ab则ch1为a,ch2为b。若输入:ab 则ch1为a,ch2为b。字符型变量过滤空白字符。cin格式过滤空白字符2024/11/2周六48floata;inti1,i2;charch1,ch2;cini1ai2ch1ch2;输入:345.6781abi2:1在缺省的情况下,cin自动跳过输入的空格,换言之,cin不能将输入的空格赋给字符型变量,同样地,回车键也是作为输入字符之间的分隔符,也不能将输入的回车键字符赋给字符型变量。a:5.578i1:34ch1:ach2:b2024/11/2周六49若要把从键盘上输入的每一个字符,包括空格和回车键都作为一个输入字符赋给字符型变量时,必须使用函数cin.get()。其格式为:cin.get();cin.get()从输入行中取出一个字符,并将它赋给字符型变量。这个语句一次只能从输入行中提取一个字符。charc1;cin.get(c1);2024/11/2周六50charch1,ch2,ch3;cin.get(ch1);cin.get(ch2);cin.get(ch3);输入:AB则:ch1:A并且在输入缓冲区中保留回车键。ch2:空格ch3:B空格的ASCII码为3200100000ch22024/11/2周六51输入十六进制或八进制数据在缺省的情况下,系统约定输入的整型数是十进制数据。当要求按八进制或十六进制输入数据时,在cin中必须指明相应的数据类型:hex为十六进制;oct为八进制;dec为十进制。2024/11/2周六52inti,j,k,l;cinhexi;/指明输入为十六进制数cinoctj;/指明输入为八进制数cink;/输入仍为八进制数cindecl;/指明输入为十进制数当执行到语句cin时,若输入的数据为:11111212结果:i:17j:9k:10l:122024/11/2周六53使用非十进制数输入时,要注意以下几点:1、八进制或十六进制数的输入,只能适用于整型变量,不适用于字符型变量,实型变量。2、当在cin中指明使用的数制输入后,则所指明的数制一直有效,直到在接着的cin中指明输入时所使用的另一数制为止。如上例中,输入k的值时,仍为八进制。2024/11/2周六543、输入数据的格式、个数和类型必须与cin中所列举的变量类型一一对应。一旦输入出错,不仅使当前的输入数据不正确,而且使得后面的提取数据也不正确。cina,b;cinab;cinab;inta,b;cinab;2024/11/2周六55输出数据cout与输入cin对应的输出是cout输出流。当要输出一个表达式的值时,可使用cout来实现,其一般格式为:cout.;其中运算符“”称为插入运算符,它将紧跟其后的表达式的值,输出到显示器当前光标的位置。2024/11/2周六56inta=6;floatf1=12.4;chars1=“abcd”;coutatf1ts1endl;t为转义字符Tabendl为回车或n显示器显示器显示器a6f112.4s10dcba612.4abcd2024/11/2周六57cout将双引号中的字符串常量按其原样输出charch1=a,ch2=b;cout“c1=“ch1t“c2=“ch2endl;c1=ac2=binti1=4,i2=5;floata=3.5;cout“a*i1=“a*i1endl“a*i2=“a*i2endl;a*i1=14a*i2=17.52024/11/2周六58指定输出项占用的宽度:在输出的数据项之间进行隔开的另一种办法是指定输出项的宽度。如上面的两个输出语句可改写为:coutsetw(6)isetw(10)jendl;_4_12coutsetw(5)msetw(10)j*kendl;_7_24其中setw(6)指明其后的输出项占用的字符宽度为6,即括号中的值指出紧跟其后的输出项占用的字符位置个数,并向右对齐。setw是“setwidth”的缩写。coutsetiosflags(ios:left);2024/11/2周六59使用setw()应注意以下三点:1、在程序的开始位置必须包含头文件iomanip.h,即在程序的开头增加:#include2、括号中必须给出一个表达式(值为正整数),它指明紧跟其后输出项的宽度。3、该设置仅对其后的一个输出项有效。一旦按指定的宽度输出其后的输出项后,又回到原来的缺省输出方式。2024/11/2周六60输出八、十六进制数和科学表示法的实数对于整型数据可指定以十六进制或八进制输出,而对于实型数据可指定以科学表示法形式输出。例如,设有如下一个程序:#includevoidmain(void)floatx=3.14,y=100;cout.setf(ios:scientific,ios:floatfield);/表明浮点数用科学表示法输出coutxt;coutyendl;执行该程序后的输出为:3.140000e+0001.000000e+0022024/11/2周六61与cin中类同,当在cout中指明以一种进制输出整数时,对其后的输出均有效,直到指明又以另一种进制输出整型数据为止。对实数的输出,也是这样,一旦指明按科学表示法输出实数,则接着的输出均按科学表示法输出,直到指明以定点数输出为止。明确指定按定点数格式输出(缺省的输出方式)的语句为:cout.setf(ios:fixed,ios:floatfield);2024/11/2周六
展开阅读全文