第二个能够无错误运行的版本，至于运行的对不对，有待进一步核查(%@#!...)