我先前的代码是
#include <stdio.h>
int main() {
int k = 1, n = 0, i = 1, a[999] = { 0 };
scanf("%d", &n);
a[0] = n;
for (; n - 1; i++) {
int m = 0;
m = n % 2;
switch (m) {
case 0: n /= 2;
a[i] = n;
break;
case 1:n = (n * 3) + 1;
a[i] = n;
}
}
do {
printf("%d ",a[i]);
} while (i--);
return 0;
}
发现全部wa,放在vs里看了一下输出结果,发现 i
总是最后多自增了一次,可是自增后却并不进行该循环的其他操作。
于是我在输出前加了一步i--
,发现可以全ac了,但是我想不通,for
循环里我明明用的是i++
,应该是先检验n-1
才对,当n=1
时应该直接退出循环了呀,为啥还会i
自增一步?求解......