这是程序:
ProcessElement
我期望输出:XCBACBA
但正确的输出是:XCBABCBAB
你能解释一下算法吗?看来,我不理解逻辑请求转换语句(以及#include <iostream>
#include <string>
using namespace std;
string add(string s, int n) {
switch (n%3) {
case 2: s = s + "A";
case 1: s = s + "B";
break;
default: s = s + "C";
}
return s;
}
int main() {
string s{"X"};
for (size_t i{0}; i < 6; ++i)
s = add(s, i);
cout << s;
return 0;
}
对结果影响后如何没有中断?)
答案 0 :(得分:1)
之后没有
break
case 2: s = s + "A";
应该有一个像
case 1: s = s + "B";
break;
答案 1 :(得分:1)
break
语句是您离开switch
语句的方式。如果您在case
的末尾没有它,它会继续使用下一个case
。所以你的代码实际上等同于:
switch(n%3) {
case 2:
s = s + "A";
s = s + "B";
break;
case 1:
s = s + "B";
break;
default:
s = s + "C";
}
这就是为什么您的输出在B
之后总是有额外的A
。
答案 2 :(得分:0)
在C ++中,如果在break
语句末尾省略case
,则执行将进入下一个案例。
在您的代码中,这意味着对于case 2
,s = s + "A";
和s = s + "B";
都将被执行。