C语言中1%3的结果是多少?

在mooc上听了几节课,练习题里做到,答案是1和2……1我可以理解,2是怎么回事?实在想不通。
int i=1;
switch ( i%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
我好像又没说全,问的是输出结果。初学C,连问题出在哪儿都不知道……

1!——%是取余除啊,即取除以除数后被除数的剩余部分:1除以3得0余1,所以结果是1。

追问

我也觉得是1,我大概理解错了题目的意思。。。?
这是题目:
int i=1;
switch ( i%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
问输出结果,求大神指点啊QAQ自学真的不知道问题出在哪儿

追答

结果是onetwo。

追问

那就是我理解错了,这是为什么啊,不明白

追答

i%3就是1%3,1%3==1,执行case 1:后面的语句卖到遇到break;或swith的最后一个}。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-28
算法的每一步具有确定性,这个两个参数确定,结果等于1就不可能等于2追问

求大神帮我看看题目,想不出来浑身难受:
int i=1;
switch ( i%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
问输出结果
至于1%3,我直接用编译器算了。。确实是1

追答

这个是因为每个case最后没写break;导致你误以为2了

你每个printf最后加个break;再观察一下