更改以完善算法，符合ansi c 标准