C语言 一个关于switch循环语言的初级问题

3.#include
  main()
  { int i;
  for (i=1;i<=5;i++)
  switch (i%5)
  { case 0:printf(“*”);break;
  case 1:printf(“#”);break;
  default:printf(“\n”);
  case 2:printf (“&”); 运行结果:  }
  }
结果是什么 为什么呢?

#&
&
&*

i = 1 ,i%5 是1 ,进入case 1 分支, 输出 # 然后break跳出switch
i = 2 , i%5 是2,进入case 2分支,输出&
i= 3 ,i%5是3 ,没有case 3 进入default分支,换行,没有break顺序执行后面的case 2 输出 &
i=4, ,i%5是4,和i=3一样,也进入default分支 换行,输出 &
i=5 ,i%5是0,进入case 0 分支输出 * 然后break 跳出switch
i变为6 循环结束追问

怎么一个答案是空格 一个又是&字符 到底是空格还是&这个呀? 我感觉应该得出的结果为什么 就是CASE什么结果的 执行呀

追答

看图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-02
运行过程:
1.for循环中i=1,取余后为1,进入case 1,输出#,case1后面有break语句,所以switch语句跳出,i自增为2;
2.i=2时,取余后为2,进入case2,紧接在后面输出&,case2后面没有语句了,所以跳出了,i自增到3;
3.i=3,取余为3,只有进入default,输出一个回车。i变成4
4.i=4时,同上,所以连续输出两个回车
5.i=5时,取余为0,输出 * 号,break。这时候for循环结束,最后结果就是:#&(中间空两行)再有一个*
应该就是这样了追问

我做的模拟题 就一个#& 我很纠结呀 是不是答案错误啊 我也觉得有问题

追答

你把switch那部分再看看,程序一点点的读,读出来不一样就不一样,相信自己吧。
我说的其实也不一定对,我还比较犹豫,大家的回答不一样呐
我回去查查书去。

第2个回答  2011-07-02
#&
&
&*
原因: 第一步 i =1 输出 # 后跳出
第二步 i=2 输出 &
第三步 i=3 换行然后输出&
第四步 i=4 换行然后输出&
第五步 i=5 输出*
个人觉得结果是这个追问

为什么我做的模拟题答案是#&呢 我就想不明白了 求解释呀

追答

答案可能错了吧

第3个回答  2011-07-02
i=1时,i%5为1,产生输出:#
i=2时,i%5为2,从default进入分支,产生输出:换行,&
i=3时,i%5为3,从default进入分支,产生输出:换行,&
i=4时,i%5为4,从default进入分支,产生输出:换行,&
i=5时,i%5为0,从case 0进入分支,产生输出:*
第4个回答  2011-07-02
#include 头文件?<stdio.h>
结果为:
#&
&
&*
各次循环依次为1、2、3、4、0所以依次为#、&、\n&、\n&、*所以会出现此结果
注意:default后面没有break所以会顺序执行,即:同样执行case 2