在金字塔中垂直打印姓名

怎么才能做到让输入的姓名能垂直显示在金字塔中间呀,改了好多次只能做到斜着的。

int len = name.length(); // 获取名字长度
        int spaces = len; // 初始空格数
        int stars = 1; // 初始星号数
        int mid = stars / 2; // 中间位置
        for (int i = 0; i < len; i++) { // 控制行数
            for (int j = 0; j < spaces; j++) { // 输出空格
                cout << " ";
            }
            spaces--; // 空格数减少
            for (int j = 0; j < stars; j++) { // 输出星号和名字
                if (j == mid) { // 判断是否在中间位置
                    cout << name[i]; // 输出名字
                }
                else {
                    cout << "*"; // 输出星号
                }
                cout << " "; // 输出空格
            }
            cout << endl; // 换行
            stars += 2; // 星号数增加
            mid ++ ; // 中间位置右移

img

目测,你怎么弄都不行,不是你的问题,是你的控制台字体的问题,它的空格比字符宽度窄,你将控制台字体换成宋体或者等宽字体,那么就应该可以了。