#include <iostream>
#include <chrono>
#include <thread>
#include <iomanip>

class CountdownTimer {
private:
    int totalSeconds;

public:
    CountdownTimer(int seconds) : totalSeconds(seconds) {}

    void start() {
        int remaining = totalSeconds;
        
        while (remaining >= 0) {
            // 清屏(适用于大多数终端)
            std::cout << "\033[2J\033[1;1H";
            
            // 计算小时、分钟和秒
            int hours = remaining / 3600;
            int minutes = (remaining % 3600) / 60;
            int seconds = remaining % 60;
            
            // 显示倒计时
            std::cout << "倒计时开始!\n\n";
            std::cout << "剩余时间: ";
            if (hours > 0) {
                std::cout << std::setfill('0') << std::setw(2) << hours << ":";
            }
            std::cout << std::setfill('0') << std::setw(2) << minutes << ":"
                      << std::setfill('0') << std::setw(2) << seconds << std::endl;
            
            if (remaining == 0) {
                std::cout << "\n倒计时结束!\n";
                break;
            }
            
            // 等待一秒
            std::this_thread::sleep_for(std::chrono::seconds(1));
            remaining--;
        }
    }
};

int main() {
    int seconds;
    
    std::cout << "请输入倒计时秒数: ";
    std::cin >> seconds;
    
    if (seconds <= 0) {
        std::cout << "请输入一个正整数!\n";
        return 1;
    }
    
    CountdownTimer timer(seconds);
    timer.start();
    
    return 0;
}

这个C++倒计时程序具有以下特点:

  1. 使用类封装倒计时逻辑,便于维护和扩展
  2. 支持任意秒数的倒计时
  3. 自动格式化显示(HH:MM:SS格式)
  4. 实时刷新控制台界面
  5. 在倒计时结束时显示提示信息

程序会在控制台上实时显示剩余时间,每秒更新一次。当倒计时结束时,会显示"倒计时结束!"的消息。支持多小时格式(如果输入超过3600秒)。

注意:此代码使用了std::this_thread::sleep_for来实现延迟,需要C++11或更高版本的编译器支持。在某些终端中,清屏序列\033[2J\033[1;1H可能不工作,但这不影响倒计时的核心功能。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐