while循环scanf输入输出问题

img


为什么答案是10呢,第一次循环之后n的值为4第二次n的值为2第三次n的值为0最后m不应该输出2么

答案有问题吧,运行结果是2

img

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7522881
  • 这篇博客你也可以参考下:while循环中使用scanf()格式化输入的终止条件
  • 除此之外, 这篇博客: scanf函数中输入格式及输入基本原理讲解中的 (三)未理解的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在上述(二)中,介绍了一一对应的原则,但本人有不理解的问题。

    1. scanf(“n=%d”,&n)中,从键盘输入n=10时,n=有没有放入缓冲区?
    #include<stdio.h>
    int main()
    {
    	int n;
    	scanf("20=%d", &n);
    	printf("%d", n);
    	return 0;
    }
    

    从以上代码来看的话,如果20=放入缓冲区,那根据scanf的取数据逻辑是怎么不取走20的?应当是没有放入缓冲区里的?//不确定

    1. scanf中对于双引号内的空格常采用不一一对应?
    #include<stdio.h>
    int main()
    {
    	int n;
    	scanf("20 %d", &n);
    	printf("%d", n);
    	return 0;
    }
    
    

    20(空格)%d 在输入时加不加空格都没有任何影响,我输入2010都能取到10给n。
    难道全读入缓冲区,20因为双引号下的存在读不了,空格跳过,读取10?

    //因为一些原因,上述问题没有彻底理解解决,待解决后,对内容进行修改。
    如若文中有任何不严谨的地方,请及时留言,我加以学习改正。

    本人参考部分资料来源于此篇,这篇文章对我写此篇有启发,详细可点开看看
    (scanf函数完全攻略)
    这是我写的第一篇博客,如若有小白有写博客想法,可以看我参考的下面的文章
    小白如何写好自己的一篇博客
    这篇文章有用到让百度能搜到我的文章,有意愿点开详细查看,在最后
    CSDN博客新手使用方案

  • 您还可以看一下 张景平老师的C语言零基础入门(计算机二级考试)课程中的 06-16 scanf函数特殊用法小节, 巩固相关知识点