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
最佳答案
这两个代码段之间的逻辑差异是,在第一个代码段中,仅当i
是ptype
或'B'
时,变量'P'
才增加。但是,在第二个代码段中,无论i
的值是多少,while
都会随着ptype
循环的每次迭代而递增。
在第二个版本中,无论输入如何,while
循环最多迭代N
次。但是,第一个版本将迭代无限次,仅在输入'B'
或'P'
次后才停止。