您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 第三章+键盘输入与屏幕输出
第三章键盘输入与屏幕输出3.1交互式输入的程序用户根据当天的情况输入日期、温度、舒适度信息并显示。#includestdio.hintmain(void){intyear,month,day;floattemperature;charcomfort;printf(“请您设置日期:\n”);printf(“4位年份:”);scanf(“%d”,&year);printf(“月份:”);scanf(“%d”,&monthprintf(“日:”);scanf(“%d”,&day);printf(“请您设置温度:”);scanf(“%f”,&temperature);printf(“请您设置舒适度(A/B/C):”);scanf(“%c”,&comfort);printf(welcome!\n);printf(今天:%d年%d月%d日\n,year,month,day);printf(温度:%f摄氏度\n,temperature);printf(舒适度:%c\n,comfort);printf(*************************\n);printf(*HelloC-world!*\n);printf(*\1\1*\n);printf(*************************\n);return0;}C语言标准库提供的输出函数,用于接受来自计算机键盘输入的数据C语言标准库文件stdio.h3.2输入与输出输入程序在运行期间从输入设备(如键盘、磁盘、光盘等)向计算机输入数据称为输入(input)。输出计算机向输出设备(如显示器、磁盘、打印机等)输出数据成为输出(output)。C语言本身不提供输入输出语句,输入输出操作是由C标准函数库中的函数来实现。#includestdio.h1.格式化输出函数printf()printf()函数的一般形式printf(格式控制字符串,输出值参数列表)【运行结果】34.500000a=3,b=4.500000例:#includestdio.hintmain(void){inta=3;floatb=4.5;printf(“%d%f\n”,a,b);printf(“a=%d,b=%f\n”,a,b);return0;}printf()函数也可省略输出值参数列表,格式控制字符串中的字符都为普通字符,原样输出例如:#includestdio.hintmain(void){printf(“hello,world!\n”);return0;}【运行结果】hello,world!格式声明格式声明的形式为:%格式修饰符格式字符常用格式字符:d,f,c常用格式修饰符:ld,lf,m.nf格式字符d,ioxXucsfe,E,g,G%p格式修饰符lLh域宽m.n(1)d格式字符inta=34,b=-123;printf(“%d\n%d\n”,a,b);/*不指定域宽输出整型变量*/printf(“%5d\n%5d\n”,a,b);/*指定域宽输出整型变量*/printf(“%5d\n%5d\n”,34,-123);/*指定域宽输出整型常量*/【运行结果】34-12334(34前面有三个空格)-123(-123前面有一个空格)34-123(2)c格式字符用于输出一个字符。输出时,也可指定域宽。【例3.4】输出一个字符。#includestdio.hintmain(void){charc1=‘A’;printf(“%c\n”,c1);/*不指定域宽输出c1的值*/printf(“%5c\n”,c1);/*指定域宽输出c1的值*/return0;}【运行结果】AA(指定域宽%5c输出,A前有4个空格)(3)f格式字符①%f不指定数据宽度和精度,整数部分全部输出,小数部分保留6位。【例3.5】用%f格式输出浮点数。#includestdio.hintmain(void){doubled=2.0;printf(“%f\n”,d);return0;}【运行结果】2.000000②%m.nf指定数据宽度m和精度n【例3.6】用%m.nf格式输出浮点数。【程序代码】#includestdio.hintmain(void){doubled=2.0;printf(“%20.15f\n”,d/3);return0;}【运行结果】□□□0.666666666666667(0前有3个空格)③%-m.nf输出数据左对齐#includestdio.hintmain(void){doubled=2.0;printf(“%-20.15f\n”,d/3);return0;}【运行结果】0.666666666666667□□□(7后有3个空格)(4)s格式字符用于输出一个字符串。#includestdio.hintmain(void){printf(“%s\n”,“helloworld!”);return0;}【运行结果】helloworld!(5)e格式字符以指数型式输出浮点数。#includestdio.hintmain(void){doubled=256.789;printf(“%e\n”,d);/*不指定数据宽度和精度输出*/printf(“%15.3e\n”,d);/*指定数据宽度和精度输出*/return0;}【运行结果】2.567890e+0022.567e+002(数的前面有5个空格)2.格式化输入函数scanf()1.scanf()函数的一般形式scanf(格式控制字符串,地址列表)例:scanf(“%d%d%d%f%c”,&year,&month,&day,&temperature,&comfort);scanf(“%d%d%d%f”,&year,&month,&day,&temperature,&comfort);scanf(“%d%d%d%f%c”,&year,&month,&day,&temperature);2.格式控制字符串%格式修饰符格式字符格式字符和格式修饰符的用法与printf()函数相似,见表3-3和表3-4。3.用scanf()函数输入数据应注意的问题(1)当格式控制字符间以空格间隔时,输入数据时也应以空格间隔。scanf(“%d%d%f%lf”,&a,&b,&c,&d);执行时输入:346.57.0889(数据间有一个或以上的空格,正确)(2)当格式控制字符间以逗号间隔时,输入数据时也应以逗号间隔:scanf(“%d,%d,%f,%lf”,&a,&b,&c,&d);执行时输入:3,4,6.5,7.0889(数据间用一个逗号隔开,正确)若输入:346.57.0889(用空格分隔数据,与要求不符)(3)格式控制字符串中除了格式字符和格式修饰符,还可以有一些普通字符:scanf(“a=%d,b=%d,c=%f,d=%lf”,&a,&b,&c,&d);执行时应输入:a=3,b=4,c=6.5,d=7.0889(正确)若输入:a=3b=4c=6.5d=7.0889(错误)(4)使用指定域宽输入数据,如A行语句改为:scanf(“%2d%2d%3f%3lf”,&a,&b,&c,&d);执行时输入:12344.16.3(按指定域宽输入数据,正确)(5)使用任意字符作为分隔符输入数据,如A行语句改为:scanf(“%d%*c%d”,&a,&b);执行时可这样输入:①以回车符作为数据分隔符1225②以空格符作为数据分隔符1225③以逗号作为数据分隔符12,25(6)输入数值数据时,输入非数值字符,认为该数据结束,如:scanf(“%d%d”,&a,&b);执行时输入:124c则a=12,b=4若输入:123a则a=123,b没有得到赋值,保持原来的值不变(7)输入字符型数据时,空格字符和转义字符中的字符都作为有效字符输入,如:执行下列语句:charc1,c2,c3;scanf(“%c%c%c”,&c1,&c2,&c3);/*B*/printf(“c1=%c\nc2=%c\nc3=%c\n”,c1,c2,c3);执行时输入:Abc(正确)输出为:c1=Ac2=bc3=c若输入:Abc(字符间插入空格)则输出为:c1=Ac2=□(□表示空格)c3=b若改为执行:inta,b;charc1;scanf(“%d%c%d”,&a,&c1,&b);printf(“a=%d\nc1=%c\nb=%d\n”,a,c1,b);执行时输入:1223(数据间有一个空格)输出为:a=12c1=□(□表示空格)b=23若输入:12a23则输出为:a=12c1=ab=23(8)注意scanf(%c,&c)吃掉回车或者空格等字符的问题#includestdio.hintmain(void){floattemperature;charcomfort;printf(“请您设置温度:”);scanf(“%f”,&temperature);printf(“请您设置舒适度(A/B/C):”);scanf(“%c”,&comfort);printf(温度:%f摄氏度\n,temperature);printf(舒适度:%c\n,comfort);return0;}只有在用户已经输入其它数据之后请求一个字符时,才应注意这些字符的影响scanf(“□%c”,&comfort);解决方法:①在“%c”之前加一个空格,以规避掉之前的回车字符如:scanf(%c,&c);②定义一个变量接收回车字符如:inta;charc1,c;printf(“inputa:\n”);scanf(%d,&a);printf(“inputc:\n”);scanf(%c%c,&c1,&c);/*回车键的代码给变量c1*/③利用fflush()函数刷新剩余字符的输入缓冲区(略)3.字符数据的输入输出函数(1)字符输出函数putchar()向显示器输出单个字符常量或字符变量的值,一般形式为:putchar(字符常量)或putchar(字符变量)#includestdio.hintmain(void){charc1=‘W’,c2=‘I’,c3=‘N’;putchar(‘I’);putchar(‘\40’);putchar(c1);putchar(c2);putchar(c3);putchar(‘\n’);return0;}【运行结果】IWIN【例】用字符ASCII码值输出字符#includestdio.hintmain(void){intc1=87,c2=73,c3=78putchar(73);/*输出字符I(其ASCII码为73)*/putchar(32);/*输出空格字符(其ASCII码为32)*/putchar(c1);/*输出字符W(其ASCII码为87)*/putchar(c2);/*输出字符I*/putchar(c3);/*输出字符N(其ASCII码为78)*/putchar(‘\n’);/*输出一个转义字符,换行字符*/return0;}【运行结果】IWIN(2)字符输入函数getchar()getchar()函数的作用从计算机终端(一般为键盘)输入一个字符。一般形式为:getchar()#includestdio.hintmain(void){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c1);putchar(c2);putchar(c3);putchar(‘\n’);return0;}【运行结果1】WIN(输入WIN,Enter)WIN(输出WIN,换行)【例3.12】getchar()函数得到的字符参与运算【程序代码】#includestdio.hintmain(void){inta,b;charch;a=getchar();ch=getchar()+1;b=a+1;printf(“b=%d\n”,b);putchar(ch);putchar(‘\n’);return0;}【运行结果】AA(输入两个A字符后,
本文标题:第三章+键盘输入与屏幕输出
链接地址:https://www.777doc.com/doc-5293462 .html