搜索
查看: 765|回复: 3
打印 上一主题 下一主题

小白求助!我的for循环是不是有问题,每次scanf都要让我多输入一个数

[复制链接]
跳转到指定楼层
楼主
发表于 2017-7-13 17:11:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
如题,求助各位大大,我的编译有问题么?和书上的一样,我想输入5个数然后排序,但是总要我输入6个数然后程序输出前五个的排序结果,前面6.4淘淘摘苹果的也是这样,本来想实现输入10个数然后看能摘下来几个,结果要我输入11个然后对前10比较,现在人已经懵了。。

QQ图片20170713170708.png (159.6 KB, 下载次数: 9)

QQ图片20170713170708.png

最佳答案

查看完整内容

简单的说,是因为scanf函数遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中,实际上还没存储到变量a中。这个涉及别的知识了,你可以运行下下面的代码就知道了。 [mw_shl_code=c,true]#include #include int main() { int a[6],i,j,t; for(i=1;i
沙发
发表于 2017-7-13 17:11:42 | 只看该作者
简单的说,是因为scanf函数遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中,实际上还没存储到变量a中。这个涉及别的知识了,你可以运行下下面的代码就知道了。
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a[6],i,j,t;
    for(i=1;i<5;++i){
                scanf("%d\n", &a);
        printf("输入的第%d数组是%d\n", i,a);
    }
    for(i=1;i<5;i++) printf("第%d个数字是%d\n",i,a);
        system("pause");
        return 0;
}
[/mw_shl_code]
板凳
发表于 2017-7-14 20:14:39 | 只看该作者
scanf里面的\n去掉   
地板
发表于 2017-7-18 22:07:26 | 只看该作者
:P:P:P:P:P:P:P:P
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表