援助C语言需要N个数,但是要输入N+1个数之后按确定键才会执行下面的命令

救助C语言需要N个数,但是要输入N+1个数之后按确定键才会执行下面的命令
#include <stdio.h>
#include <stdlib.h>
struct queue
{
int data[100];
int head;
int tail;
};
int main()
{
struct queue q;
int i;
q.head=1;
q.tail=1;
for(i=1;i<=9;i++)
{
scanf("%d ",&q.data[q.tail]);
q.tail++;
}

while(q.head<q.tail)
{
printf("%d ",q.data[q.head]);
q.head++;
q.data[q.tail]=q.data[q.head];
q.tail++;
q.head++;
}
system("pause");
}
C语言需要N个数,但是要输入N+1个数之后按确定键才会执行下面的命令
比如我输入 1 2 3 4 5 6 7 8 9按下确定就执行下面的代码
但是在运行的时候要输入1 2 3 4 5 6 7 8 9加另外一个数字比如N,再按确定才执行下面的命令,但是这个N并不影响结果。
请问这是什么原因引起的,怎么解决这个问题呢,请大神指导。
------解决方案--------------------
scanf("%d ",&q.data[q.tail]);将输入格式%d后面的空格去掉,即改成"%d"


scanf("%d",&q.data[q.tail]);

------解决方案--------------------
引用:
scanf("%d ",&q.data[q.tail]);将输入格式%d后面的空格去掉,即改成"%d"


scanf("%d",&q.data[q.tail]);

加了空格表示什么意思?
------解决方案--------------------
引用:
Quote: 引用:

scanf("%d ",&q.data[q.tail]);将输入格式%d后面的空格去掉,即改成"%d"


scanf("%d",&q.data[q.tail]);

加了空格表示什么意思?

跳过输入后面的空白字符
------解决方案--------------------
引用:
scanf("%d ",&q.data[q.tail]);将输入格式%d后面的空格去掉,即改成"%d"


scanf("%d",&q.data[q.tail]);
+1援助C语言需要N个数,但是要输入N+1个数之后按确定键才会执行下面的命令