C++实现一个时钟

#include <iostream>

#include <iomanip>

#include <chrono>

#include <thread>

using namespace std;


int main()

{

    int hour=0;

    int min=0;

    int sec=0;

    

    while(1)

    {

        //setfill填充,setw:设置位宽

        cout<<setfill('0')<<setw(2)<<hour<<":"<<setw(2)<<min<<":"<<setw(2)<<sec<<endl;

        sec++;

        if (60==sec)

        {

            min++;

            sec=0;

            if (60==min)

            {

                hour++;

                min=0;

                if (24==hour)

                {

                    hour=0;

                }

            }

        }

        //睡眠1秒钟

        std::this_thread::sleep_for(std::chrono::milliseconds(1000));

    }

    

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序清单 按以下步骤向视图类(CClockView)添加下列数据成员及成员函数。 (1) 添加表示年、月、日、时、分、秒的变量。 int year; int month; int day; int hour; int minute; int second; (2) 添加秒表的计数变量。 int watch; (3) 添加时钟的画笔及画刷变量。 CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔 CBrush m_MarkBrush; // 表盘标记的画刷 (4) 添加时钟控制变量。 CPoint m_Center; // 表的中心 double m_Radius; // 表的半径 CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置 CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置 CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置 (5) 添加秒表的两个按钮位置变量。 CRect m_WatchStart; CRect m_WatchStop; (6) 添加两个函数,计算时钟各指针位置。 void SetClock (int hour, int minute, int second); CPoint GetPoint (int nLenth, int nValue); (7) 在视图类构造函数中增加初始化语句: CClockView::~CClockView() { //设定时间 year=2010; month=11; day=22; hour=0; minute=0; second=0; //设定画笔画刷 m_HouPen.CreatePen(PS_SOLID,5,RGB(255,0,0));//时针画笔 m_MinPen.CreatePen(PS_SOLID,3,RGB(0,0,250));//分针画笔 m_SecPen.CreatePen(PS_SOLID,1,RGB(0,0,0));//秒针画笔 m_MarkBrush.CreateSolidBrush(RGB(250,250,0)); //设定表芯位置 m_Center.x=222; m_Center.y=222; //设定时钟半径 m_Radius=222; //计算指针位置 SetClock(hour,minute,second); //设定秒表计数器及按钮位置 watch=0; m_WatchStart=CRect(480,310,560,340);//启动按钮 m_WatchStop=CRect(590,310,670,340);//停止按钮 } 编写指针位置函数SetClock和GETpOINT。 首先在ClockView.cpp文件头部下添加下面两行代码,以便进行数学计算。 #define PI 3.14159265258 #include"math.h" 然后添加下列代码: //计算个指针位置的函数 void CClockView::SetClock(int hour,int minute,int second) { hour=hour*5; hour=hour+minute/12; //保存时针原位置 m_OldHour[0]=m_Hour[0]; m_OldHour[1]=m_Hour[1];
你可以使用C++中的计时器(timer)来实现定时时钟,同时使用容器(比如vector)来存储多个时钟的信息。以下是一个简单的示例代码: ```c++ #include <iostream> #include <vector> #include <chrono> #include <thread> using namespace std; struct Clock { int hour; int minute; int second; bool operator<(const Clock& other) const { return hour < other.hour || (hour == other.hour && minute < other.minute) || (hour == other.hour && minute == other.minute && second < other.second); } }; int main() { vector<Clock> clocks = {{10, 0, 0}, {12, 30, 0}, {18, 45, 0}}; // 初始化三个时钟 auto start_time = chrono::system_clock::now(); // 获取程序开始时间 while (true) { auto current_time = chrono::system_clock::now(); // 获取当前时间 auto elapsed_seconds = chrono::duration_cast<chrono::seconds>(current_time - start_time).count(); // 计算程序已经运行的秒数 // 判断每个时钟是否到达设定时间 for (auto& clock : clocks) { int total_seconds = clock.hour * 3600 + clock.minute * 60 + clock.second; if (total_seconds == elapsed_seconds) { cout << "Time's up! " << clock.hour << ":" << clock.minute << ":" << clock.second << endl; } } this_thread::sleep_for(chrono::milliseconds(100)); // 程序暂停100毫秒,减少CPU占用率 } return 0; } ``` 在上述代码中,我们使用了`chrono`库来获取当前时间和计算时间差,使用了`thread`库来暂停程序。我们也定义了一个`Clock`结构体来存储每个时钟的信息,并且重载了小于号`<`来方便比较时钟的先后。程序会不断循环,每100毫秒检查一次每个时钟是否到达设定时间,如果是则输出提示信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值