首页 > 试题广场 >

则上述程序输出为( )

[单选题]
#include <bits/stdc++.h>
using namespace std;
int main(){
int n = 1001;
int ans = 0;
for(int i = 1; i <= n; ++i){
ans ^= i % 3;
}
cout << ans << endl;
}


则上述程序输出为( )
  • -2
  • 0
  • 1
  • 2
选B,自己写一下可以发现在异或的过程中ans的值每六个循环一次(1,3,3,2,0,0),所以循环1001次后(1001%6=5),ans的值就应该是第五个,即ans=0.
发表于 2019-09-11 08:27:25 回复(0)
^为异或,一个值异或其本身为0。这里1001次循环,总共会有334个1,334个2和333个0进行异或,1和2都被抵消,所以结果为0。
发表于 2019-09-06 00:05:55 回复(1)
【1】^=   相当于 a^=b;   a=a^b;   
【2】 是写成二进制 ,按位与    

说的没错吧
发表于 2019-09-27 07:59:35 回复(0)