输入数据后,判断一下scanf函数的返回状态,返回0则读取失败。失败的原因有很多可能,比如你的这道例子,指定输入数字,但是却输入了字符,就会返回0,而且scanf不会有动作。由于num没有初始化,所以它是一个垃圾值,这就是死循环的原因。另外,如果想要输入指定字符退出的话,在多加一个判断即可。