You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个循环处理两个变量的空格输出需求?

单个循环实现双玩家空格输出的方案

当然可以用单个循环替代两个独立循环,具体实现取决于你的空格输出场景:

场景1:两个玩家的空格连续输出

如果玩家1和玩家2的空格是连续输出(中间无其他内容),直接计算总空格数,用一个循环输出即可:

// 计算两个玩家各自需要的空格数
string::size_type s1 = (SIZE - p1.name.length()) / 2;
string::size_type s2 = (SIZE - p2.name.length()) / 2;

// 单个循环输出所有空格
for (string::size_type i = 1; i <= s1 + s2; ++i) {
    cout << " ";
}

场景2:两个玩家的空格需搭配各自内容输出(如名字)

如果空格后需要输出对应玩家的名字或其他内容,可将玩家的空格需求封装后,用单个循环遍历处理:

// 定义玩家的空格需求和名字(也可直接用现有p1、p2变量)
struct PlayerData {
    string name;
    string::size_type spaceCount;
};
PlayerData players[] = {
    {p1.name, (SIZE - p1.name.length()) / 2},
    {p2.name, (SIZE - p2.name.length()) / 2}
};

// 单个循环处理两个玩家的空格+内容输出
for (const auto& player : players) {
    // 输出当前玩家的空格
    for (string::size_type i = 1; i <= player.spaceCount; ++i) {
        cout << " ";
    }
    // 输出玩家名字(按需添加其他内容)
    cout << player.name << endl;
}

场景3:无嵌套循环的实现

如果想完全避免两个独立的顶层循环,也可以用单个循环变量分阶段处理:

string::size_type s1 = (SIZE - p1.name.length()) / 2;
string::size_type s2 = (SIZE - p2.name.length()) / 2;
string::size_type i = 1;

// 第一阶段:输出玩家1的空格
for (; i <= s1; ++i) {
    cout << " ";
}
// 这里可插入玩家1的名字等内容,比如 cout << p1.name << endl;

// 第二阶段:继续用同一个循环变量输出玩家2的空格
for (; i <= s1 + s2; ++i) {
    cout << " ";
}
// 这里可插入玩家2的名字等内容,比如 cout << p2.name << endl;

内容的提问来源于stack exchange,提问作者Alexis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:15:36