时间:2024-11-26 14:38 / 来源:未知

  系统都将自动截取两位赋给aTuesday, November 26, 2024导语:C言语scanf函数运用题目一文起原于网友上传,不代外本站看法,若需求原创作品可研究客服先生,迎接参考。

  C言语的输入是由体系供给的库函数告竣的。是C言语中最常用且功用最强的输入函数,但该函数如运用失慎,就会闪现纰谬或得不到猜念的结果。以下结果都是基于VC++6.0运转情况。

  二、非体式阐明符的输入非体式阐明符央浼用户原样照写输入,既不行更改,又不行漏写。示例一:inta,b;scanf(a=%d,b=%d,&a,printf(%d,%d,a,b);输入“12”(即1、2间用空格离隔),输出“-858993460,-858993460”,无纰谬提示,但结果与输入数据纷歧致,输出a、b的值是随机数。这便是由于scanf函数中设定的体式(“a=%d,b=%d”)(个中a=,b=均为平淡字符)与输入数据的体式(1、2间用空格间隔)纷歧致酿成的,确切的输入方法应为“a=1,b=2”(“,”也毫不能漏掉)。是以,为了包管确切输入数据,输入数据前最先看好序次中scanf函数设定的体式,再遵从设定的体式确切输入数据。示例二:scanf(%d,%d,&a,输入时运用以下方法:3,4↙提防3后面应是逗号,它与scanf函数中的“体式把持”中的逗号对应。倘使输入时不消逗号而用空格或其他字符是错误的。3□4↙(错误)3:4↙(错误)倘使是scanf(%d□□%d,&a,则输入时两个数据间应空两个或更众个空格字符。如:3□□4↙或3□□□□4↙

  三、附加体式阐明符的阐明示例一:inta,b;scanf(%2d%2d,&a,printf(%d,%d,a,b);输入“1234”,输出“12,34”输入“123”,输出“12,3”输入“123456”,输出“12,34”由于体式中“d”体式字符流露输入整型数据,“2”附加体式阐明字符流露输入数据所占宽度为2,于是,无论用户输入什么,体系都将自愿截取两位赋给a,再截取两位赋给b。也便是说可能用附加体式阐明符指定输入数据所占列数,体系将自愿按它截取所需数据。

  再如scanf(%3c,倘使从键盘上贯串输入3个字符abc,因为ch只可容纳一个字符,体系就把第一个字符‘a’赋给ch。示例二:floata;scanf(%5.1f,输入“1234”,无纰谬提示,但a并不行回收输入数据,输出a的值为随机数,再实验输入其余数据,结果都为随机数。用户本意念用云云的scanf体式输入宽度为5位,小数个别为1位的小数,但得不到猜念结果。由于,scanf函数中惟有“域宽”(此处为5)附加体式阐明字符(指定输入数据所占列数),而没有正在“小数位数”附加体式阐明字符(惟有printf函数有),应当去掉“.1”,即scanf(%5f,&a);或scanf(%f,&a);均可,此时输入“123.4”即可回收。是以,应依据scanf函数中国则的体式字符及其附加体式阐明字符运用,不行滥用,输入数据时不行原则精度。示例三:doublex;scanf(%f,输入“123.4”,输出x的值为随机数,没有回收输入的数据,再输入其余数据,结果都为随机数。这是由于用户界说x为双精度型数据,而用“%f”体式输入数据时,不行回收,应当运用“%lf”或“%le”,即scanf(%lf,&x);此时输入“123.4”即可回收。

  于是长整型数据和双精度型数据务必运用附加体式阐明字符l,短整型数据务必运用附加体式阐明字符h。示例四:inta,b;scanf(%2d,%*3d,%2d,&a,输入“12,345,67”,此时,12赋给a,67赋给b。提防:准则上“,%体式字符”应与“输入项”(&a,&b)个数相当,逐一对应,此处则闪现了个数不等的环境(“%体式字符”项数为3,而输入项数为2)。由于scanf函数中有附加体式阐明字符“*”,加“*”项流露输入的数据不赋给相应变量,于是输入的“345”被跳过,回收下一个数据(“67”),以致“%体式字符”与“输入项”个数可能不等的环境闪现。正在愚弄现成的一批数据时,有时不需求个中某些数据,可用此法跳过它们。比方scanf(%c%c,&a,printf(%c%c,a,b);输入A□B↙,输出A□‘,A’给了字符变量a‘,□’举动合法字符给了字符变量b。这时咱们改用scanf(%c%*c%c,&a,输入A□B↙,输出AB,‘A’给了字符变量a‘,□’被%*c跳过‘,B’就给了字符变量b。可睹,运用scanf函数时,要正在scanf原则的体式字符及其附加体式阐明字符下运用。既不行不消,又不行滥用。

  四、提防输入结尾象征①遭遇空格,或者回车键,或者Tab键。倘使相邻两个人式指示符之间,不指天命据隔离符(如逗号、冒号等),则相应的两个输入数据之间,起码用一个空格分裂,或者用Tab键分裂,或者输入一个数据后,按回车,然后再输入下一个数据。正在用“%c”体式输入字符时,空格字符和“转义字符”都举动有用字符输入。示例一:scanf(%d%d,&num1,假设给num1输入12,给num2输入36,则确切的输入操举动:12□36↙或者:12↙36↙示例二:scanf(%c%c%c,&c1,&c2,倘使从键盘输入a□b□c↙则字符‘a’赋给c1,字符‘□’赋给c2,字符‘b’赋给c3。由于%c只央浼读入一个字符,后面不需求用空格举动两个字符的间隔空格,于是空格举动下一个字符赋给c2。

  故应当从键盘输入abc↙②遭遇输入域宽度结尾。比方“%3d”,只取3列。示例一:scanf(%3d,倘使从键盘输入12345↙,则num1的值为123。③遭遇造孽输入。比方,正在输入数值数据时,遭遇字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号组成)。示例一:scanf(%d%c%f,&a,&b,若输入1234a1230.26↙第一个数据对应%d体式正在输入1234之后遭遇的字母a,于是以为1234之后已没少有字了,第一个数据到此结尾,把1234送给变量a。字符‘a’送给变量b,因为%c只央浼输入一个字符,于是输入字符a后不需求加空格,后面的数值应送给变量c。倘使因为疏忽把原本应为1230.26错打成123o.26,因为123后面闪现字母‘o’,就以为该数值数据到此结尾,把123送给c。

  五、提防输入项scanf函数中的“体式把持”后该当是变量地方,而不是变量名。示例一:intx;scanf(%d,该体式中x前务必加地方符&流露x住址的地方,即输入数据住址的场所,如写成intx;scanf(%d,x);则闪现写内存纰谬,无法运转.exe运用序次。也有人常正在数组名前加地方符&。示例二:charc[10];scanf(%s,这也是纰谬的。由于数组闻人露数组的肇始地方,一经指出输入数据的场所了,再运用地方符&即成为二级指针,旨趣截然有异,应改为charc[10];scanf(%s,c);于是,scanf函数中的“体式把持”后面只须写成指针型(一级指针)数据指出输入数据住址的场所即可,不行刻板搬用,要清楚实践寓意。


外汇交易无重复报价,并按实时报价执行交易

通过FXCG MT4交易平台随时随地进入全球市场。