c语言之scanf输入语句

上传人:y****n 文档编号:103388161 上传时间:2022-06-08 格式:DOC 页数:8 大小:19.51KB
返回 下载 相关 举报
c语言之scanf输入语句_第1页
第1页 / 共8页
c语言之scanf输入语句_第2页
第2页 / 共8页
c语言之scanf输入语句_第3页
第3页 / 共8页
点击查看更多>>
资源描述
现在我们已经学了printf输出函数了,可以在程序中打印变量的值了。但先前的程序都只是打印我们事先在程序中写好的东西,而下面我们要认识的scanf函数则可以帮助我们在程序运行过程中用键盘输入变量的值并把他们打印出来。我们依然是先解释一下scanf函数。scan作为一个英文单词它的字面意思是扫描,在这里我们可以理解成这个函数会扫描你用键盘输入的东西;而f的意思我们都知道是函数的意思。作为一个和printf相对应的函数,scanf函数的名字相应的叫做格式化输入函数。与printf一样可以定义变量的格式只不过它的功能是输入值而不输出。首先让我们认识一下scanf函数的格式scanf(%?,&?);(?是我用来代表未知量的,没啥意义)是不是和printf的格式何其相似乃尔。在熟悉printf的基础上我们再去讲scanf会轻松很多。但我们都可以发现scanf函数的语句里多了一个我们没用过的“&”符号。&是什么呢?&的名字叫地址符号,如果讲地址的话就要说到内存地址,说内存地址又要说到指针。说实话指针我自己也没学所以我们在这里只是先知道这个地址的概念和将来我们要学的很多知识都有关先就可以了,算是做一个预告。那我们应该怎样理解这里的地址符呢?我在这里只是提供一个我个人的一个思路,如果有自己的理解那便是更好的。地址符顾名思义,是一个提供地址的符号。那么这个地址是提供给谁呢?那当然是提供给你用键盘输入的东西。就像你用键盘给正在运行的程序发送了一个指示,你的这个指示的意义对于scanf来说就是给它的语句中的变量进行赋值。而在你的指示传达给scanf函数时对你的指示进行接收的就是地址符,因此它也就指明了你指令的地址。啰里啰唆说了一大推不知道有没有听懂,如果没听懂纯属我语言叙述能力有问题,不明白欢迎提问。在形式上就是我们亲爱的变量前要加一个&。而关于scanf在对输入内容的格式限定上,可以与printf类比。但值得注意的是,在printf语句中是双引号里的%?定义后面相对应的变量的输出的输出格式。而在scanf语句中,双引号后面的变量的值则需要我们自己用键盘输入。因为实践是检验真理的唯一标准,所以我们发现,如果你用键盘输入的内容的格式和前面双引号里定义的格式不符,系统在运行时便会出现错误。不过还是希望每个人都用编译软件自己试一试,因为在学习编程时最好的方式就是别人都告诉你那么做是错的你也要去自己亲手做一遍。下面我们就通过一个例子更深入地研究一下scanf语句的一些细节问题:#include main()int a;float b;char c;printf(请输入a的值:);scanf(%d,&a);printf(请输入b的值:);scanf(%f,&b);printf(请输入c的值:);scanf(%c,&c);printf(a=%d,b=%f,c=%c,a,b,c);这个程序看起来很正确,但在实际运行中就会发现一个问题那就是你在输入a和b的值后系统就自动在屏幕上输出a和b的值并结束运行了这是因为什么呢?因为我们每次在输入一个变量的值后,必须按回车键告诉程序我已经完成了这个变量的输入并输入下一个变量的值但我们要注意的是,回车键或空格键、制表键本身也都算是一个字符。而当我们要输入的变量的格式是char字符格式时,&c就会自动接收我们之前输入的回车键,而使我们没有机会输入这个scanf语句的内容了。在这个程序中就体现为scanf(%c,&c);语句中的&c自动接收我们在输入变量b的值后所按的那个回车。那我们应该怎样解决这个问题呢。办法就是在scanf(%c,&c);语句中的双引号中%c前面加上空格或者tab键。注意要加到双引号里面,如果加到双引号前面了是没有作用的。而在其他格式的输入中的相应位置加上空格都是没有影响的,所以我们最好能养成无论什么变量类型,都在之前加空格的好习惯。效果如下#include main()int a;float b;char c;printf(请输入a的值:);scanf(%d,&a);printf(请输入b的值:);scanf(%f,&b);printf(请输入c的值:);scanf(%c,&c);printf(a=%d,b=%f,c=%c,a,b,c);(为了视觉效果夸大了一下空格的长度。)这样系统就能正常运行了。关于scanf还有最后一个问题,我们通过下面一个例子来讲一下。#includemain()int a,b;printf(请输入两个数n);scanf(%d,%d,&a,&b);printf(a=%d,b=%dn,a,b);在这里的scanf语句中我们在两个%d中间加了一个逗号scanf(%d,%d,&a,&b);如果你如果无视逗号的存在在输入 a 的值后直接按回车就会发生运行错误(并不是系统崩溃而是b会被赋值一个错误的值。具体的自己去运行吧)那么我们应该怎样输入呢?就是这样:先输入1(和后面的2一样都可以是任意整数,我随便举的例子),再输入“,”,再输入2。也就是scanf语句中双引号里面的格式是啥样的你就照着打就行哪怕是任何一个字母或数字也都要照着打出来scanf(%da%d,&a,&b);例如这个如果你要给a、b赋值1和2,就要输入 1a2scanf(-22%da%d,&a,&b);同理这个就要输入 -221a2 了如果多余的东西在放在了最后,如scanf(%d%d-2b,&a,&b);就可以直接无视了。直接输入 1 回车 2 回车 就可以了。但是在这里存在一个特例,而与这个特例有关的就是在printf语句中多次提到的转义符n在printf函数语句中我们经常通过转义符来完成我们对输出内容形式的一些需要,但是在scanf语句中有必要使用n吗?答案是否定的。这个n在scanf语句中并没有什么用。但如果你非要加上的话就会出现如下情况。scanf(n%d%d,&a,&b);scanf(%dn%d,&a,&b);像这两种情况,即转义符放在双引号内容的前面或中间,n可以直接无视,因为确实没啥效果。但如果像下面这样。scanf(%d%dn,&a,&b);n放在了双引号里内容的最后,在输入a和b的值时我们就会发现在输入a和b两个变量的值后无论你按多少个回车程序都不会进行下一步的运行,即用printf函数输出a和b。那么应该怎样解决这个问题呢?答案是在输入变量a和b的值后你还需要随便再输入一个值,然后再按回车系统就会正常输出a和b的值,而你最后随便输入的那个值并不会在最后的输出中体现出来。出现这个问题的原因是:如果输入数据用转义符结尾,scanf会跳过后面的转义符去接受下一个字符。直观地描述就是如果你用转义符结尾,程序就会跳过你接了下来输入的回车或空格,直到你输入下一个字符。在这里要注意的是我在上面所指的会导致系统出现问题是转义符(在这里准确的说是空白符),也就是说不只是n,t(制表符号)、tab键和空格键都会发生同样的问题。所以在打程序要多加小心。scanf的主要内容就算是说完了。现在我们也已经说完了 printf 和 scanf 这一对输入和输出函数,但在c语言中还存在其他的输入和输出函数,只不过是在特定情况下各有各的优势。所以接下来计划简单地说一说c语言中其他形式的输入和输出。 10.3
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 临时分类 > 人文社科


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!