C语言中scanf不能执行的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:27:35
主函数为:
int n,x,top=-1;
printf("\n输入栈元素: ");
while(top<=MAXSIZE-1)
{
scanf("%d ",&stack[++top]);
if(stack[top]==NULL)
{
top--;
break;
}
}
printf("\n选择操作:入栈(1),出栈(2),查找栈顶元素(3): ");
scanf("%d",&n);
switch(n)
{
case 1:
printf("\n输入入栈元素: ");
scanf("%d",&x);
push(x);
break;
case 2:printf("\n%d",pop());break;
case 3:printf("\n%d",get());break;
}
printf("\n新栈为: ");
while(top!=-1)
printf("%d",stack[top--]);
}
程序当要执行第二个scanf时,就会自动跳过该语句而继续执行下面的语句。当把第二个scanf改为直接赋值为1时,又会跳过第三个scanf语句。请问是怎么回事?

输入语句不要多余的空格,要不然有可能出现你意想不到的错误

每次scanf后加一句fflush(stdin);清空缓冲区

在程序最上面加

#include <stdio.h>