c语言中两个scanf为什么会出毛病?

那是因为在我们做了第一次输入时,并按下回车,使程序继续执行。而那个回车也随之进入了流当中。而遇到第二个scanf()时,scanf()把回车当作是第二次输入的字符而接收。因此程序也就忽略了输入而继续执行了。这个回车就是在做输入时产生的垃圾字符了。
解决1:  在输入后   
scanf("%[^\n]");//删除回车和之前的输入
scanf("%*c");//删除‘\n’