资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,/38,本章学习内容,字符常量与转义字符,字符输出函数,putchar(),字符输入函数,getchar(),数据的格式化输出函数,printf(),数据的格式化输入函数,scanf(),第,1,页,/,共,37,页,字符常量,字符常量是用单引号括起来的一个字符,a,是字符常量,而,a,则是一个标识符,3,表示一个字符常量,而,3,则表示一个整数,转义字符,(,Escape Character,),一些特殊字符(无法从键盘输入或者另有他用)用转义字符表示,第,2,页,/,共,37,页,字符型变量的取值范围取决于计算机系统所使用的字符集,ASCII,(美国标准信息交换码)字符集,规定了每个字符所对应的编码,一个字符以其对应的,ASCII,码的二进制形式存储在内存中,一个字节,保存一个字符(英文字母、数字、符号),字符常数就是一个普通整数,也可参与各种数学运算,每个字符具有一个,0255,之间的数值,可从,ASCII,表查出,注意:,5,和整数,5,的区别,5,的,ASCII,码值是,53,字符常量,第,3,页,/,共,37,页,4.1,单个字符的输入,/,输出,通过调用标准库函数来实现,#,include,字符输出函数,putchar(ch),输出,一个,字符,ch,字符输入函数,getchar(),无参数,函数值为从输入设备接收的字符,第,4,页,/,共,37,页,【,例,4.1】,大小写英文字母转换,Press a key and then press Enter:B,b,ch=ch-(a A);,What does,this statement,mean?,第,5,页,/,共,37,页,4.2,数据的格式化屏幕输出,格式,printf,(,格式控制字符串,输出项表列,);,printf,(,a=,%d,b=,%f,a,b,);,可以输出若干,任意类型,的数据,函数名,可选输,出表列,普通字符,格式,说明,第,6,页,/,共,37,页,%c character,以字符形式输出单个字符,%s string,输出一个字符串,%d decimal,以带符号十进制整数输出,%f float,以小数形式输出浮点数(,6,位小数),%e exponent,以标准指数形式输出(,6,位小数),%g,选用,%f,,,%e,中输出宽度较小的一种格式,%o octal,以八进制无符号整数输出(无前导,0,),%x hex,以十六进制无符号整数输出(无前导,0 x,),%u unsigned,以十进制无符号整数输出,printf(),格式字符,第,7,页,/,共,37,页,【,例,4.2】,大小写英文字母转换,Press a key and then press Enter:B,b,98,第,8,页,/,共,37,页,m,表示数据占用的最小宽度,数据宽度大于,m,,按实际宽度输出,数据宽度小于,m,时,补空格,n,对实数表示输出,n,位小数,对字符串表示最多输出的字符个数,l,长整型整数,,加在,d,、,o,、,x,、,u,前,L long double,型数,加在,f,、,e,、,g,前,-,改变输出内容的对齐方式,默认为右对齐,printf(),的格式修饰符,第,9,页,/,共,37,页,printf(),的格式修饰符,Format for float:,%f,General format:,%,.,f,Example:,printf(Value is:%10.4f,32.6784728);,Value is:32.6785,10 characters,4 digits,第,10,页,/,共,37,页,printf(),的格式修饰符,Example:,printf(Value is:%10f,32.6784728);,Value is:32.678473,10 characters,6 digits(default),第,11,页,/,共,37,页,Example:,printf(Value is:%.3f,32.6784728,);,Value is:32.678,3 digits,printf(),的格式修饰符,第,12,页,/,共,37,页,Input r:5.3,printf WITHOUT width or precision specifications:,circumference=33.300854,area=88.247263,printf WITH width and precision specifications:,circumference=33.30,area=88.25,【,例,4.3】,计算圆的周长和面积,第,13,页,/,共,37,页,4.3,数据的格式化键盘输入,格式,scanf,(,格式控制字符串,地址表列,);,scanf(,%d,%f,格式字符,指定输入数据格式,输入数据,地址表列,非格式字符,输入数据以,分隔,没有时可以,空格,、,Tab,或,回车,分隔,第,14,页,/,共,37,页,c,以字符形式输入单个字符,s,输入字符串,以非空字符开始,遇第一个,空白字符结束,d,以带符号十进制形式输入整型数据,f,以小数形式输入浮点数,e,以标准指数形式输入,o,以八进制无符号形式输入(无前导,0,),x,以十六进制无符号形式输入(无前导,0 x,),scanf(),的格式字符,第,15,页,/,共,37,页,m,表示数据占用的宽度,l,加在,d,、,o,、,x,、,u,前:输入长整型,加在,f,、,e,前:输入双精度型,L,加在,f,、,e,前:输入,long double,型,h,加在,d,、,o,、,x,前,:,输入短整型,*本输入项在读入后不赋给相应的变量,scanf(),的格式修饰符,第,16,页,/,共,37,页,#,include,main(),int,a,b;,printf(Please input a and b:);,scanf(%2d,%*2d,%2d,printf(a=%d,b=%d,a+b=%dn,a,b,a+b);,Please input a and b:,a=12,b=56,a+b=68,12,34,56,跳过一个输入项,输入数据的格式控制,第,17,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,1,:当要求程序输出结果为,a=12,b=34,时,用户应该如何输入数据?,12 34,输入数据的格式控制,例,4.4,第,18,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,2,:当限定用户输入数据以逗号为分隔符,即输入数据格式为:,12,34,时,应修改程序中的哪条语句?怎样修改?,输入数据的格式控制,例,4.4,第,19,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,3,:语句,scanf(%d%d,修改为,scanf(,a=,%d,b=,%d,时,用户应该如何输入数据?,a=12,b=34,输入数据的格式控制,例,4.4,第,20,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,4,:限定用户输入数据为以下格式,1234,同时要求程序输出结果为,a=12,b=34,%2d%2d,输入数据的格式控制,例,4.4,第,21,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%d n,a,b);,问题,5,:限定用户输入数据为以下格式,12,34,同时要求程序输出结果为,a=12,b=34,%d,b=,%d,输入数据的格式控制,例,4.4,第,22,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,6,:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其他)作为分隔符进行数据的输入,输入数据的格式控制,例,4.4,%*c,第,23,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,7,:输入,123456,时程序的输出结果是什么?,输入数据的格式控制,例,4.4,%*2d,a=12,b=56,第,24,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,8,:如果用户输入了非法字符,例如输入了,12 3a,,那么程序运行结果如何?,输入数据的格式控制,例,4.4,12 3a,a=12,b=3,第,25,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,9,:如果用户输入的是,123a,,那么结果又会如何呢?,输入数据的格式控制,例,4.4,123a,a=123,b=-858993460,第,26,页,/,共,37,页,#,include,main(),int,a,b;,scanf(%d%d,printf(a=%d,b=%dn,a,b);,问题,10,:如果程序第,5,行语句修改为,.,,那么结果又会如何呢?,输入数据的格式控制,例,4.4,a,b,第,27,页,/,共,37,页,#,include,main(),int,data1,data2,sum;,char,op;,printf(Please enter the expression,data1+data2n);,scanf(%d%c%d,printf(%d%c%d=%dn,data1,op,data2,data1+data2);,Please enter the expression data1+data2,第,1,次测试,12+3,12 4199288=4199300,C,格式符的问题及解决,例,4.5,第,28,页,/,共,37,页,#,include,main(),int,data1,data2,sum;,char,op;,printf(Please enter the expression,data1+data2n);,scanf(%d%c%d,printf(%d%c%d=%dn,data1,op,data2,data1+data2);,Please enter the expression data1+data2,第,2,次测试,12 3,12 3=15,C,格式符的问题及解决,例,4.5,第,29,页,/,共,37,页,#,include,main(),int,data1,data2,sum;,char,op;,printf(Please enter the expression,data1+data2n);,scanf(%d%c%d,printf(%d%c%d=%dn,data1,op,data2,data1+data2);,Please enter the expression data1+data2,第,3,次测试,12+3,12+3=15,C,格式符的问题及解决,例,4.5,第,30,页,/,共,37,页,#,include,main(),int,a;,char,b;,f
展开阅读全文