【模拟】V字形打印字符_c++

void vprint(string s, int level) {
int len = s.size();
int l_gap_num = 2 * (level - 1) - 1;
int r_gap_num = -1;
for (int l = 0; l < level; l++) {
// 第几行先打印即可空格
cout << string(l, ' ');

if (l == 0 || l == level - 1) {
// 首行和尾行间隔是一样的
int gap = (l == 0) ? l_gap_num : r_gap_num;
for (int i = l; i < len; i += gap + 1) {
cout << s[i];
cout << string(gap, ' ');
}
cout << endl;
}else{
// 中间行两种间隔l_gap_num、r_gap_num交替打印
int gap = l_gap_num;
bool flag = true;
int idx = l;
while (idx < len) {
cout << s[idx];
cout << string(gap, ' ');
idx += (gap + 1);
gap = flag ? r_gap_num : l_gap_num;
flag = !flag;
}
cout << endl;
}

l_gap_num -= 2;
r_gap_num += 2;
}
}

【模拟】V字形打印字符_开发语言_02