程序设计基础第6次作业

模拟一个用于显示时间的电子时钟,该时钟以时、分、秒的形式记录时间。请编写 3 个函数: setTime 用于设置时钟的时间;increase 函数模拟时间过去了 1 秒;showTime 显示当前时间,格 式为 HH:MM:SS。

#include <iostream>
#include <windows.h>//use this library to pause the program every second
#include <iomanip>// use this library to make the display more comfortable
using namespace std;struct myclock
{int hour;int minute;int second;
};
// use the program to simulate the electronic clock
// the clock is displayed in hour,minute,and second
// define a structure named "myclock" as a data type
// the clock is set from 00:00:00-23:59:59void setTime(myclock &c,int h, int m, int s);// function setTime is used to set the time of the clock
void increase(myclock &c);// function increase is used to simulate the time passes one second
void showTime(const myclock c);// function showTime is used to show the current time
//the format of showing time is HH:MM:SSint main()
{myclock clock;//define an argument clock with type myclockcout << "Please enter current time, format like HH:MM:SS." << endl;cout << "Set start Hour, minute, second : "  ;int h,m,s;cin >> h >> m >> s;if ( h > 24 || h < 0 || m > 60 || m < 0 || s > 60 || s < 0){cout << "Wrong time !" << endl;return 0;}else{setTime(clock, h, m, s);increase(clock);showTime(clock);}}void setTime(myclock &c,int hh, int mm, int ss)
{c.hour = hh;c.minute = mm;c.second = ss;
}void showTime(const myclock c)
{cout <<  "Current Time : " <<setw(2) << setfill('0') <<c.hour<< ':' <<setw(2) << setfill('0') << c.minute << ':'<<setw(2) << setfill('0') <<c.second << endl;
}void increase(myclock &c)
{while (true){++c.second;if (c.second == 60){++c.minute;c.second = 0;//here you can add another line of codes://system ("cls")//having shown too many seconds ,use command to clean the screen}if (c.minute == 60){++c.hour;c.minute = 0;}if (c.hour == 24){cout << endl;cout << endl;cout << "Another Day!" << endl;cout << endl;cout << endl;c.hour -=24;c.minute = 0;c.second = 0;}showTime(c);Sleep(1000);// this function is in <windows.h> to hang the program for 1000ms}}

实现思路:时间用结构体表示,唯一需要注意的函数时increase函数,当小时、分钟、秒到达60时候second的修改引起了minute的变化,minute的修改引起了hour的变化,hour的变化导致时间进入第二天。

其他:

1、有一个函数 system ("cls") 可以选择性使用,比如每到一分钟,cmd窗口屏幕上的时间太多了,就可以用这个命令清屏。同样类似的操作有 system("pause")让程序暂停

2、increase函数不能一直疯狂while (true) 下去,需要让每次执行完一遍过后,让它暂停一秒钟,这里需要用到Sleep(1000)表示让程序挂起1000ms,这里的Sleep中的S必须大写,codeblocks里面显示的对它的定义是 void Sleep( DWORD dwMilliseconds)提供挂起的毫秒数,用这个的时候需要引入#include <Windows.h>

3、如果出现时间是个位数,为了让显示的好看一点,是标准的hh:mm:ss,要引入#include <iomanip>这个库,用到函数setw(整数) 表示后面的字段的宽度,setw() 函数只对紧接着的输出产生作用。如果setw( 整数) 后面跟着的字符串宽度比整数少,就用空格代替;如果后面输出的比setw(整数)大,那么这个函数就没有什么作用。通常setw()会和setfill(char) 连在一起用。感觉一般会先把setfill(char)放在前面。

比如C++ setw() 函数 | 菜鸟教程 (runoob.com)给出的例子:

cout << setfill('*')  << setw(14) << "runoob" << endl;

// 开头设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用
    cout << setw(4) << "runoob" << endl;
    // 中间位置设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用
    cout << "runoob" << setw(4) << "runoob" << endl;
    // 开头设置间距为 14,后面 runoob 字符数为6,前面补充 8 个空格
    cout << setw(14) << "runoob" << endl;
    // 中间位置设置间距为 14 ,后面 runoob 字符数为6,前面补充 8 个空格
    cout << "runoob" << setw(14) << "runoob" << endl;

4、类似于其他的DOS命令,可以参考这篇文章

(5条消息) C语言system函数_追梦的小蚂蚁-CSDN博客_c语言system

5、最后的实现:

电子时钟的模拟(C++结构体与模块化开发)相关推荐

  1. CSP认证201403-2窗口[C++题解]:模拟、结构体

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 用结构体来存每个窗口,存两个坐标和窗口序号. 在循环中更新窗口的序号,新点击的位于最上面,在代码中是序号n(数越大,表示窗口在前) ...

  2. BUAA(2021春)空闲空间合并(期末考试模拟题)——结构体二级排序

    BUAA数据结构期末模拟题--空闲空间合并 看前须知 考试回顾 题目内容 问题描述 输入形式 输出形式 样例 样例说明 题解 思考和详解 参考代码 看前须知 要点介绍和简要声明. 考试回顾 格式控制输 ...

  3. PAT甲级1154 Vertex Coloring :[C++题解]图论、模拟、结构体存边

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 这题的边不用邻接矩阵.邻接表来存,仅仅用结构体来存即可,结构体正好存边的两个端点,我们只要遍历每条边,判断端点的颜色是否相同即可. ...

  4. FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019级电子科学与技术专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...

  5. 获取另一个驱动的设备结构体_Linux 驱动开发 / 设备模型快速入门

    背 景 Read the fucking source code!  --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版 ...

  6. php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范

    之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...

  7. android jni 结构体_Android应用开发Android JNI-c/c++调用java方法

    本文将带你了解Android应用开发Android JNI-c/c++调用java方法,希望本文对大家学Android有所帮助. " Android   JNI-c/c++调用java方法, ...

  8. 单片机C语言数字电子时钟,全功能数字电子钟(C51单片机应用开发)

    一.设计目的: 通过单片机应用产品的设计与调试过程,巩固课程所学理论知识,初步了解单片机应用系统设计与调试的方法. 二.设计要求: 设计一个以AT89S51单片机为核心的数字电子钟控制器,实现电子钟的 ...

  9. html酷炫电子时钟效果,纯js实现电子时钟特效

    这是一款使用纯js实现电子时钟特效.该电子时钟可以显示时间,星期几,以及是上午还是下午.它使用简单,非常容易集成到项目中. 使用方法 在页面中引入电子时钟的样式文件main.css. HTML结构 该 ...

最新文章

  1. SAP WM 自动创建TO单的JOB运行报错 - Enter the storage unit type - 对策
  2. python中一共有多少个关键字-Python之33个关键字是哪些
  3. mysql page校验_MySQL InnoDB离线校验工具innochecksum使用
  4. Android中最详细的焦点问题,从概念出发带你一点点分享(1)
  5. 理论基础 —— 查找 —— 二叉排序树
  6. node.js通过edge访问.net动态链接库
  7. Idea开发环境中搭建Maven并且使用Maven打包部署程序
  8. 图卷积网络(Graph Convolutional Network)
  9. 2万字软件测试面试题干货带答案,反手我就一个收藏
  10. 通过 purge_relay_logs 自动清理relaylog
  11. App进行内测麻烦吗?如何进行App内测?
  12. 聚名:怎样批量查询50个域名的注册信息?
  13. Windows图标显示异常解决方法。桌面图标异常,开始菜单图标异常,任务栏图标异常。图标缓存位置。
  14. 2 什么是计算机网络设置密码,怎么设置电脑网络密码
  15. 安全刻不容缓「GitHub 热点速览 v.21.50」
  16. 如何给视频添加水印logo?
  17. ConcurrentHashMap是如何保证线程安全的?
  18. 干货分享 | 天啊撸,有效防止黑客入侵网站的方法居然如此简单
  19. 屁股决定脑袋,人性在管理中的体现
  20. 线段树进阶之清风拂面

热门文章

  1. 制作Linux版PE系统
  2. 电脑端(PC)按键精灵——2.键盘命令和鼠标命令
  3. 11月最新编程排行榜出炉,这个语言超过了C蝉联榜首~
  4. 文本数据可视化中一些概念
  5. 前端pdf预览、pdfjs的使用
  6. 使用jspdf将网页转化成pdf(解决滚动条以外变成黑色问题及缺少echarts图表问题)
  7. 10个适用于WordPress的最佳目录插件
  8. C# JSon解析之三个库的性能对比
  9. canvas画布在主流浏览器中的尺寸限制
  10. 【ENVI】遥感影像的导入与裁剪