C语言在输入时出现问题

#include
#include
int main()
{
int x1,x2,p,q,disc,a,b,c;
printf("a:\n");
scanf("%d\n",&a);
printf("b:\n");
scanf("%d\n",&b);
printf("c:\n");
scanf("%d\n",&c);
p=-b/2a;
disc=sqrt(b
b-4ac);
q=disc/2*a;
x1=p+q;
x2=p-q;
printf("x1=%d\nx2=%d\n",x1,x2);
}
请问为什么我的代码运行时,在输入a,b,c的时候需要a输入两个值才能打印b?

scanf里面输入不要加\n

因为你在scanf中加了\n换行符,这就要求输入时与之匹配,必须也输入换行符才行。因此你输入数值后按回车键时,输入的换行符只是与scanf中\n对应的匹配字符,这时scanf时不会完成执行的,必须你再次回车才可以。
建议scanf里没有必要的话,除了占位符不要增加任何字符。因为这将要求你输入的时候必须也输入这些字符,岂不是自讨苦吃?