C语言自己写的程序有个小错,求改下

#include
int main()
{
int n,l,k,y,t1,t2,t3;char x1,x2,x3;t1=0;t2=0;t3=0;
printf("请输入现在队伍的列数:\n");
scanf("%d",&n);
printf("拉面的制作时间:\n");
scanf("%d",&l);
printf("烤肉的制作时间:\n");
scanf("%d",&k);
printf("饮料的制作时间:\n");
scanf("%d",&y); //似乎把这里的回车键给算到下面的getcahr()里面去了,怎么办??谁能帮忙改下
printf("第3对的排列情况:\n");
while((x3=getchar())!='\n')
{
switch(x3)
{
case 'A':t3=t3+l+k+y;break;
case 'B':t3=t3+2*l+k;break;
case 'C':t3=t3+3*l+3*k+2*y;break;
}
}
printf("第2对的排列情况:\n");
while((x2=getchar())!='\n')
{
switch(x2)
{
case 'A':t2=t2+l+k+y;break;
case 'B':t2=t2+2*l+k;break;
case 'C':t2=t2+3*l+3*k+2*y;break;
}
}
printf("第1对的排列情况:\n");
while((x1=getchar())!='\n')
{
switch(x1)
{
case 'A':t1=t1+l+k+y;break;
case 'B':t1=t1+2*l+k;break;
case 'C':t1=t1+3*l+3*k+2*y;break;
}
}
if(t1>t2)t1=t2;
if(t1>t3)t1=t3;
printf("\nOutput:\n最快吃上饭的那个队伍的排队时间:%d\n",t1);
return 0;
}

在scanf("%d",&y);的下一行,加getchar();就可以了

楼上正解,scanf不会读取\n,因此在缓冲池中还存在一个\n

你可以再加一个getchar();就行了这样就不会影响到后面的getcher了

你可以再加一个getchar();就行了这样就不会影响到后面的getcher了

可以在每个scanf后面加上屏蔽多余输入的代码,这样能保证每次都是独立的输入,不会将前面的输入混到后面的scanf中去
while (1)
{
if ( '\n' == getchar() )
{
break;
}
}