首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
#include us...
[单选题]
#include <stdio.h> int main(){ int n = 1001; int ans = 0; for(int i = 1; i <= n; ++i){ ans ^= i % 3; } printf("%d\n", ans); return 0; } 则上述程序输出为()</stdio.h>
-2
0
1
2
查看正确选项
添加笔记
求解答(16)
邀请回答
收藏(824)
分享
23个回答
添加回答
51
RightJay
i % 3 按1、2、0循环,所以ans按1、3、3、2、0、0循环,然后1001%6=5,故ans=0.
发表于 2020-04-21 17:17:07
回复(0)
19
July.Kevin
for循环中的ans ^= i % 3 可得出ans的值是以 1 3 3 2 0 0 六个数循环的,即
6n的值为0,
6n - 1 也为0,
1001 = 6n - 1,故答案为B
发表于 2019-09-03 15:16:21
回复(2)
16
牛客-刹那芳华
i= 1 2 3 4 5 6 7 8 9 10 11 12
i%3 1 2 0 1 2 0 1 2 0 1 2 0
ans 1 3 3 2 0 0 1 3 3 2 0 0
1001%6=5,对应的ans为0
编辑于 2021-11-06 21:57:40
回复(1)
12
DanlingPtr
首先,ans^=i%3 即将ans与i%3进行异或(二进制)1%3=1 ans=0 then: 00 xor 01 = 01 now ans=01(1)2%3=2 ans=1 then: 01 xor 10 = 11 now ans=11(3)...以六为循环,得到ans=0
发表于 2021-03-16 10:53:40
回复(0)
8
weibuu
异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
发表于 2022-05-25 09:23:31
回复(0)
7
black__t
评论区写的些啥?
发表于 2021-02-23 20:19:30
回复(1)
6
南少201911241210480
以1 2 0做循环先循环333次,n到达999最后还剩1 2,结果就有334个1,334个2,偶数个数进行异或为0,比如4个2异或就是0,所以结果就是0
发表于 2020-04-04 12:07:21
回复(2)
3
OfferComingSoon_5
0^1 = 1, ans = 1;1^2 ->01 ^ 10(二进制) = 11(3),ans=3;依次往后。。。
发表于 2022-03-10 21:22:24
回复(0)
2
Mirror1
1 ^ 2 = 3 即 0001 ^ 0010 = 0011 其它同理
发表于 2023-03-13 19:39:14
回复(0)
1
Tudorlin
^为异或运算,即两者必须不同才为1,都为0或1结果都为0;跟c还是c++关系不大,属于基础知识
发表于 2023-12-25 20:35:20
回复(0)
1
赶路人1998
1 3 3 2 0 0这六个数循环,1001除以6余下5,第五个为0
发表于 2022-09-16 15:39:17
回复(0)
1
BBETTER
为什么C语言总能出来C++的题
发表于 2021-10-09 18:06:09
回复(3)
0
在走神的芹菜很愤怒
1001%3=2 0^2=0
发表于 2025-03-05 22:20:15
回复(0)
0
嵌入式店小二
还是没看懂评论区的解释。
发表于 2025-01-03 10:11:15
回复(0)
0
分时日月周算数关罗父
^为异或
发表于 2024-10-15 13:04:16
回复(0)
0
Leo_12138
最后一行什么意思?
发表于 2024-05-26 12:05:45
回复(0)
0
机会留着有准备的人
用二进制来计算异或
发表于 2023-09-14 21:57:26
回复(0)
0
123694
pp是指向指针常量的指针 是否可改只要看最内部即可 int * const p 指针是常量 int const *p 指向的是常量
发表于 2023-01-13 14:32:06
回复(0)
0
多多尝试多多努力
本题的意思是取 1到1001的所以值和3取余之后的异或结果,(1, 2, 3)和3取余的结果是 (1, 2, 0).....(997, 998, 999)
和3取余的结果是 (1, 2, 0), 这样就有333组 (1, 2, 0), (1000, 1001)
和3取余的结果是 (1, 2), 所以共有334个 (1,2)和333个0取异或,又因为 a = b^a^b ,所以偶数个(1,2)异或之后不对ans产生影响,所以ans 的值就是334个0异或的结果0(ans本身是0,如果这里ans初始化为其中值,那么结果就是 ans和0异或的结果,就是ans的原来的值)
发表于 2022-09-06 09:02:00
回复(0)
0
牛客720866697号
i%3的结果按照1,2,0循环,1001中总共包含333个循环与一个单独的1,2。
两个相同的数异或操作结果为0,所以333个循环操作中,最后的结果为:1^2^0;
加上最后单独的1,2为:1^2^0^1^2=0
发表于 2022-08-09 10:15:32
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C语言
2018
C++
360集团
来自:
360公司-2018春...
上传者:
小小
难度:
23条回答
824收藏
3616浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
小支欲用积分兑换安仔娃娃。兑换的规...
360集团
智力题
评论
(24)
来自
360公司2014校招笔试卷
设一组初始记录关键字序列为(30,...
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
测试工程师
安全工程师
2018
奇安信
评论
(1)
关于C语言,下列指针变量的定义和解...
360集团
C++工程师
2018
牛客
C语言
评论
(9)
来自
360公司-2018春招...
某公司现安排测试人员对近期开发的客...
360集团
软件测试
测试工程师
2018
评论
(36)
来自
360公司-2018春招...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题