首页 > 试题广场 >

则上述程序输出为( )

[单选题]
#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
po1头像 po1
有个很有意思的题,就是看哪个数字只出现了一次(其他数字都出现两次),好像阿里的题里也出现过。出现两次结果就为0了,出现一次结果为这个数本身。1001/3=333……2  ^的数的顺序是:1,2,0.也就是1,2,0都异或了333次,还剩余一个1,一个2.所以1,2都出现了偶数次,结果就是0.0出现了基数次,所以结果肯定就是这个。
发表于 2019-09-30 17:34:51 回复(0)
由于ans=0,所以ans恒为0
发表于 2019-09-17 21:24:43 回复(0)

我理解的是隔6次循环,最后看循环次数里有多少个6,余数就是第几次循环,余数5,代表是第五次循环的结果,第五次循环的结果为0

发表于 2019-09-03 21:10:14 回复(0)