C语言中scanf到底是怎样的功能???

scanf("%d",&i);1,我没有设置回车结束,但似乎它默认回车结束输入2,我输入88,然后空格,再输入99,结果printf是88.99没了?它内部是怎样的处理规... scanf ("%d",&i);
1,我没有设置回车结束,但似乎它默认回车结束输入

2,我输入88,然后空格,再输入99,结果printf是88. 99没了?它内部是怎样的处理规则?

3,我先空格空格,再输入88. 结果成功输出。它似乎又能绕过空格??

它到底是按照怎样的顺序规则进行操作的?
展开
 我来答
gao5521036
高粉答主

2019-11-13 · 醉心答题,欢迎关注
知道小有建树答主
回答量:7225
采纳率:83%
帮助的人:579万
展开全部

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

小科技大不同
高能答主

2022-06-27 · 把复杂的事情简单说给你听
知道小有建树答主
回答量:3495
采纳率:98%
帮助的人:97.9万
展开全部

C语言中scanf是标准库函数,主要用来接收用户输入的数据。

C标准函数库是所有符合标准的头文件的集合,以及常用的函数库实现程序,例如I/O输入输出和字符串控制。不像这三种COBOL、Fortran和PL/I等编程语言,在C语言的工作任务里不会包含嵌入的关键字,所以几乎所有的C语言程序都是由标准函数库的函数来创建的。

C语言简介

C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c296525
2013-04-07 · TA获得超过591个赞
知道小有建树答主
回答量:210
采纳率:33%
帮助的人:60.2万
展开全部

要耐心看啊!别看字多,容易读的!!!要分成3段读,不要一口气看完!

1.scanf就是输入一个数然后回车结束。听不懂不好意思、别理他

---------------------------------------------------------------------------

举个例子:

int i;    //定义i

然后我们提示用户输入,

printf("请输入一个数:");   

接着,我们使用scanf("%d",&i);

输入完数后,我们跟用户说声你刚才输的数

printf("您刚才输入的数是%d",i);

----------------------------------------------------------------------------

分析:

首先定义int i是没有问题要问的。

之后用printf也是没有问题要问的,要问的是在printf之后。

电脑执行到printf看到后面的scanf函数,便停了下了,等待用户输入。所以在一个C语言程序里,

有scanf函数就要停下来等待用户输入。但是用户输入完后要怎么跟电脑说:”我输入完了“?

就是用scanf函数本身要按回车键的功能。

scanf函数意思”总结“:电脑碰到scanf要停下,等待用户输入,用户输入后按回车告诉电脑输入OK,电脑继续执行下面的代码。

楼主你说的没有设置,是不可能设置的。

2.这个问题简单。

scanf("%d",&i);

首先我们输入88,这之后一个空格,很好,你没有用回车键告诉电脑,而是用空格键。

88之后空格,然后不管你输入多少,比如88 544还是88 9990,或者在一个空格88 878 897 

这些数字里,翻译器只取88,为什么呢?其实空格和回车差不多,讲讲区别吧!

空格:我们输入空格之后,可以继续输入数字,不管是多少,都可以。

回车:而我们输入回车后,电脑就立即把回车键之前你所写的看做数,就如,88然后回车,电脑把回车之前的88看做用户所输入的数。但是,如果包含空格键,直接把后面的数省略!就如:

88 99,88后面有空格,空格和99将被忽略。

  • 讲了这么多,总而言之,输入88,然后按空格的时候,电脑已经把88看做一个数了,所以后面的99是另一个数,所以不写入&i。

  • 扩展知识:如果要输入俩个数甚至n个数,代码如下:

#include "stdio.h"

main()

{

    int i;

    int a;

    pirntf("请输入俩个数(输入第二个数用空格键隔开!)");

    scanf("%d %d",&i,&a);

    printf("这俩个数分别是:%d和%d",i,a);

}

3.上面已经说了,空格和回车差不多个功能,按空格时电脑把前面所输入的看作是数,

例如输入88然后空格,然后99,空格前的88已经赋给i了,99不能赋值,直接忽略。

不过,楼主是空格空格,但是空格之前没有用户所输入的,等于没有。所以给88.

----------------------------------------------------------------------------------------------------------------------

如果是新手,可以看扩展知识,里面有一个错误,大家去找找;如果是高手,就可以忽略这个错误。

追问
还有错误啊 讲啊 看扩张头会晕了哦 说出来吧
追答
这不算什么,扩展是对的,里面的printf函数拼错了,拼成了pirntf。
scanf("%d %d",&i,&a);
这行代码是指让用户分别输入i和a的值,输入俩个数要用空格隔开(你动手试试,光看是不行的)。但是scanf里面的%d和%d要用空格隔开,不能写成
scanf("%d%d",&i,&a);这是不对的!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YiRanLoveU
2013-04-07
知道答主
回答量:6
采纳率:0%
帮助的人:8917
展开全部
scanf 是C语言的输入函数 "%d"是输入的数据类型 表示整数型int
1,回车键是C语言的结束符 表示上一个类型的数据已经读入结束,当然 字符串不一样的。
2,你需要从键盘读入两个整形数据 ,那么就需要有两个返回值,即 scanf(“%d%d”,&i,&j)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

推荐于2017-08-29 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
scanf ("%d",&i);
它能跳过非打印字符如空格、Tab、回车符,只能读取一个整数。所以99就未被读取(可以留待下一次读取)。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式