请问我这个程序想输入5个数,输出5个数。输出正常,但是输入需要输入6个数。请问哪里有问题?

请问我这个程序想输入输出5个数。输出正常,但是输入需要输入6个数。请问哪里有问题?

img

img

scanf 需要遇到非空白符才会继续,而且会忽略连续的换行符,你可以试试不停的回车,也是会被忽略。
你试试这个,如果不行再清空以下缓冲区 fflush(stdin);

scanf(" %d", p++);

你看看这个

代码修改如下,将scanf里面的\n给去掉就可以了。

#include "stdio.h"

#define N 5

int main()
{
    int i,a[N],*p;
    p=a;
    for(i=0;i<N;i++)
    {
        scanf("%d",p++);
    }
    p=a;
    for(i=0;i<N;i++)
        printf("%d\t",*p++);
    puts("\n");
}

scanf 里面的换行符去掉,
换行符是遇到非空白字符才停止输入,这会导致你有数据没有正确读取