一道华为C++的笔试题,求C++高手解答

#include<stdio.h>
main()
{
int i;
for(i=1;i<=5;i++)
switch(i%5)
{
case 0:printf("* ");break;
case 1:printf("#");break;
case 2:printf("&");
default :printf("\n");
}
}

输出结果是()
A. #&; B. #& & &* C. #& * D. #

书上给的答案说是B,可我总觉得不对。求编程高手解答,到底是不是B?详细说说你们的思路呢?

第1次: i = 1 则输出:# 接着break
第2次: i = 2 则输出:& 因为没有break,会接着执行 \n,也就是空格
第3次: i = 3 没用符合的条件, 输出 \n, 也就是空格
第4次: i = 4 没用符合的条件, 输出 \n, 也就是空格
第5次: i = 0 则输出:* , 接着break

结合起来就是:一个#,一个&,三个空格,一个 *

所以答案是:C

如果说得严谨点,上面的选项没有一个是对的。

正确的答案应该是:
#&

*
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-28

1、i=1  then  i%5 = 1 ;case 1:printf:#;break-----end

2、i=2  then  i%5 = 2 ;case 2:printf:&;\n;---------end

3、i=3  then  i%5 = 3 ;default:printf: \n ;----------end

4、i=4  then  i%5 = 4 ;default:printf: \n ;----------end

5、i=5  then  i%5 = 0 ;case 0:printf:* ;break-----end

result:#&\n\n\n*


picture:

本回答被提问者采纳
第2个回答  2013-11-09
答案就是B
case没有break;就会继续执行下一个case
第3个回答  2013-11-09
按照你的粘贴的这个程序,肯定不是选B;
i=1时,输出# ,break!
i=2,时,输出&,但是没有break!继续执行,输出换行\n
i=3,输出\n
i=4输出\n
i=5,输出*,break! for循环结束!
所以结果是
#&

*
第4个回答  2013-11-09
不对、我觉得正确的输出应该是
#&
(换行) //当i=2;
(换行) //当i=3;
(换行) //当i =4;
*
可以拿代码跑一下结果就知道了
很简单的开关语句
相似回答