int i = 0 ;
        while(i < N)
        {
            char ptype ;
            scanf("%c" , &ptype);
            //getchar();
            if(ptype == 'P'){
                scanf("%d" , &passto);
                //printf("\n");
                preplayer = arr[top];
                top++;
                arr[top] = passto;
                printf("%d\n", i);
                i++;
            }
            if(ptype == 'B'){
                int tempplayer = arr[top];
                top++;
                arr[top] = preplayer ;
                preplayer = tempplayer;
                i++;
            }
            //++i;
        }


我不是在if条件下,而是在一段时间之前:

int i = 0 ;
    while(i < N)
    {
        char ptype ;
        scanf("%c" , &ptype);
        if(ptype == 'P'){
            scanf("%d" , &passto);
            //printf("\n");
            preplayer = arr[top];
            top++;
            arr[top] = passto;
            printf("%d\n", i);
            //i++;
        }
        if(ptype == 'B'){
            int tempplayer = arr[top];
            top++;
            arr[top] = preplayer ;
            preplayer = tempplayer;
            //i++;
        }
        i++;
    }


他们两个给出不同的结果。
假设在代码上方定义了其他变量,例如N = 10;还定义了其他整数和字符。

在以下输入的情况下,以上两个代码给出不同的结果:

1
10 23
P 86
P 63
P 60
B
P 47
B
P 99
P 9
B
B

最佳答案

这两个代码段之间的逻辑差异是,在第一个代码段中,仅当iptype'B'时,变量'P'才增加。但是,在第二个代码段中,无论i的值是多少,while都会随着ptype循环的每次迭代而递增。

在第二个版本中,无论输入如何,while循环最多迭代N次。但是,第一个版本将迭代无限次,仅在输入'B''P'次后才停止。

07-26 03:15