一个代码执行上的简单问题


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int n;
    int step=0;
    scanf("%d",&n);
    if(n<=0){
    printf("aa");
    }
    while(n!=1){
    
    if(n%2==0){
            n=n/2;
            step++;
    }
    if(n%2!=0){
        n=3*n+1;
            n=n/2;
            step++;
    }
}
printf("%d",step);
    return 0;
}

img


为什么会出现这种情况

供参考:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() 
{
    int n;
    int step = 0;
    scanf("%d", &n);
    if (n <= 0) {
        printf("aa");
    }
    else{     //修改
        while (n != 1) {

            if (n % 2 == 0) {
                n = n / 2;
                step++;
            }
            else {    //if (n % 2 != 0) {
                n = 3 * n + 1;
                n = n / 2;
                step++;
            }
        }
        printf("%d", step);
    }
    return 0;
}

17行改成else if