关于c语言的输入问题,请大家赐教了?

(1)假如我在这种情况下输入:3489-1然后回车,会发现必须在输出一个数再回车才可以运行。(2):我如果去掉scanf("%d",&a[n]);括号中的‘’(空格),再... (1)假如我在这种情况下输入:3 4 8 9 -1然后回车,会发现必须在输出一个数再回车才可以运行。(2):我如果去掉 scanf("%d ", &a[n]);括号中的‘ ’(空格),再输入:3 4 8 9 -1就可以。(3):我如果不去掉保持不变,但是在n++;之后加入 :c = getchar ( );但是发现这也不可以,会和(1)一样。但是如果我去掉scanf中的空格就可以运行。原本我的想法是:因为输入时有空格,为了防止缓冲区读取时读错;就加个空格直接读取数和空格;或加个getchar来去掉空格,然而为什么没什么用,什么都不加却可以。应该是我对缓冲区有所误解吧。能帮我理清一下吗?请赐教了,谢谢。 展开
 我来答
Yuqi_Tan

2019-01-10 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3441万
展开全部
(1)你说的"必须在输出一个数再回车才可以运行。"是什么意思??
(2)确实应该去掉 scanf("%d ", &a[n]);括号中的‘ ’(空格)。%d后面的那个空格实属画蛇添足。
(3)这时不需要c = getchar ( );,用了也是添乱。
(4)你原本的想法有道理,但是c语言早已经想到并做到了,它规定:输入数字时,所有空格(无论连续多少个),只起到分隔数字的作用,绝不会影响数字的读入。
CHENGWENGJI
2019-01-10 · TA获得超过412个赞
知道小有建树答主
回答量:667
采纳率:66%
帮助的人:293万
展开全部
确实应该去掉空格.
scanf()函数遇到空格/TAB/换行会自动切割的.
如果你非要加,那么可以在输入最后加一个空格.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司马刀剑
高粉答主

2019-01-10 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7426万
展开全部
我只能说个大概思路,以前好象用过,现在好久不用了。
你将通过scanf输入的数据每位进行判断ascii码,比如10.235re689p 0-9的ascii码是连续的一个范围,外加小数点的ascii码,每位的ascii码都在0-9或者小数点的ascll码(小数点的ASCII码只能出现一次)就是正常输入,否则就提示输入错误。你现在既然搞这个,我的思路你应该能比较容易实现把。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式