主要是一个 Switch-Case 的循环。首先会执行 Case 10,读取输入,并检测输入字符数。
v9 作为 Index ,每次从 a1 中取值,执行相应的 Case ,因此操作的顺序是固定的。将代码修改使之不退出,查看全部执行顺序(Case x)。
只有执行 Case 7 ,且不满足条件时才会退出。由执行顺序可知,程序前期完成值的计算,最后对15个值进行比较。因为程序只涉及简单的加减法和赋值,写出逆算法就比较简单。
最开始的思路是,直接将全部数据都逆向操作,但由于执行时,上一步对 V9 的操作对下一步来说是未知的,因此执行顺序不能直接逆向还原,而原程序执行顺序固定,因此去掉对 v9 的还原即可。
注意涉及计算的所有的字符型的数据应全部为 unsigned char 类型,否则会出现负值导致字符显示异常。