东拼西凑做出来了,但是原理不懂,求解
查看原帖
东拼西凑做出来了,但是原理不懂,求解
606023
sduoooh楼主2022/1/18 17:08

我先前的代码是

#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自增一步?求解......

2022/1/18 17:08
加载中...