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

如何让C++程序中两个带星号边框的时钟并排显示?

解决C++双时钟并排显示的格式问题

你的问题根源是当前代码先完整输出第一个时钟的所有行,再输出第二个时钟,导致上下排列。要实现并排显示,核心是把两个时钟对应行的内容(包括星号边框)拼接后逐行输出,而不是分别输出两个完整时钟。

具体实现步骤

  1. 把两个时钟的每一行内容(边框、标题、时间)分别存入字符串数组,确保每行长度一致(避免对齐错位)。
  2. 遍历两个数组的对应行,将每行内容用空格分隔后一起输出。

代码示例

#include <iostream>
#include <vector>
#include <string>

// 生成12小时制时钟的所有行(含星号边框)
std::vector<std::string> get12HourClockLines(int hour, int minute, int second, bool isAM) {
    std::vector<std::string> lines;
    const int LINE_WIDTH = 15; // 固定每行宽度,保证对齐

    // 顶部边框
    lines.push_back("***************");
    // 时钟标题
    lines.push_back("* 12-Hour Clock *");
    // 时间行,格式化补零并补空格到固定宽度
    std::string time = "* " + (hour < 10 ? "0" + std::to_string(hour) : std::to_string(hour)) +
                       ":" + (minute < 10 ? "0" + std::to_string(minute) : std::to_string(minute)) +
                       ":" + (second < 10 ? "0" + std::to_string(second) : std::to_string(second)) +
                       " " + (isAM ? "AM" : "PM") + " *";
    while (time.length() < LINE_WIDTH) {
        time.insert(time.end() - 1, ' ');
    }
    lines.push_back(time);
    // 底部边框
    lines.push_back("***************");
    return lines;
}

// 生成24小时制时钟的所有行(含星号边框)
std::vector<std::string> get24HourClockLines(int hour, int minute, int second) {
    std::vector<std::string> lines;
    const int LINE_WIDTH = 15;

    lines.push_back("***************");
    lines.push_back("* 24-Hour Clock *");
    std::string time = "* " + (hour < 10 ? "0" + std::to_string(hour) : std::to_string(hour)) +
                       ":" + (minute < 10 ? "0" + std::to_string(minute) : std::to_string(minute)) +
                       ":" + (second < 10 ? "0" + std::to_string(second) : std::to_string(second)) + " *";
    while (time.length() < LINE_WIDTH) {
        time.insert(time.end() - 1, ' ');
    }
    lines.push_back(time);
    lines.push_back("***************");
    return lines;
}

// 并排输出两个时钟
void printSideBySide(int h12, int m, int s, bool isAM, int h24) {
    auto clock1 = get12HourClockLines(h12, m, s, isAM);
    auto clock2 = get24HourClockLines(h24, m, s);

    // 逐行拼接输出,中间用3个空格分隔
    for (size_t i = 0; i < clock1.size(); ++i) {
        std::cout << clock1[i] << "   " << clock2[i] << std::endl;
    }
}

int main() {
    // 测试:12小时制3:45:12 AM,对应24小时制15:45:12
    printSideBySide(3, 45, 12, true, 15);
    return 0;
}

关键说明

  • 固定每行宽度:确保两个时钟的边框、标题、时间行长度一致,避免并排时错位。
  • 逐行拼接输出:不再单独输出完整时钟,而是把两个时钟的同一行内容放在一起打印,自然实现并排效果。
  • 可调整间距:代码中用" "分隔两个时钟,你可以根据需求增减空格数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:29:50